Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.88/40: Рейтинг темы: голосов - 40, средняя оценка - 4.88
49 / 15 / 2
Регистрация: 20.02.2011
Сообщений: 152
1

Построение выпуклой оболочки обходом Грэхэма

12.08.2011, 20:13. Показов 7706. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Привет всем! помогите написать на java этот алгоритм Построение выпуклой оболочки обходом Грэхэма
на С++ можно найти еще здесь Геометрия: выпуклая оболочка. Алгоритм Грэхема-Эндрю за O(N * logN)
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.08.2011, 20:13
Ответы с готовыми решениями:

Построение выпуклой
Здравствуйте, при написании кода на java - построение оболочки многоугольника методом обхода...

Задача на построение выпуклой оболочки
Вот задача: на плоскости задано N точек, которые пронумерованы слева на право (а при равных...

Построение выпуклой оболочки множества точек
Дано множество точек на плоскости. построить выпуклую оболочку этого мно- жества. какой тут...

Построение выпуклой оболочки по Грехему и Джарвису
Добрый день, есть у кого реализация построения выпуклой оболочки по Грехему и Джарвису, буду...

3
Эксперт JavaЭксперт С++
8384 / 3616 / 419
Регистрация: 03.07.2009
Сообщений: 10,709
13.08.2011, 13:53 2
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
 
/**
 * The Class Main.
 * 
 * Created on: 13.08.2011
 * 
 * @author: M128K145
 */
public class Main {
 
   /**
    * The Class PairDouble.
    * 
    * Created on: 13.08.2011
    * 
    * @author: M128K145
    */
   public static class PairDouble implements Comparator<PairDouble> {
 
      /** The first. */
      private double first;
 
      /** The second. */
      private double second;
 
      /**
       * Instantiates a new pair double.
       */
      public PairDouble() {
         this.setFirst(0);
         this.setSecond(0);
      }
 
      /**
       * Instantiates a new pair double.
       * 
       * @param first
       *           the first
       * @param second
       *           the second
       */
      public PairDouble(double first, double second) {
         this.setFirst(first);
         this.setSecond(second);
      }
 
      /**
       * Gets the first.
       * 
       * @return the first
       */
      public double getFirst() {
         return first;
      }
 
      /**
       * Sets the first.
       * 
       * @param first
       *           the first to set
       */
      public void setFirst(double first) {
         this.first = first;
      }
 
      /**
       * Gets the second.
       * 
       * @return the second
       */
      public double getSecond() {
         return second;
      }
 
      /**
       * Sets the second.
       * 
       * @param second
       *           the second to set
       */
      public void setSecond(double second) {
         this.second = second;
      }
 
      /**
       * Compare.
       * 
       * @param o1
       *           the o1
       * @param o2
       *           the o2
       * @return the int
       * @see java.util.Comparator#compare(java.lang.Object, java.lang.Object)
       */
      @Override
      public int compare(PairDouble o1, PairDouble o2) {
         double tmp = o1.getFirst() - o2.getSecond();
         return tmp < 0 ? -1 : tmp == 0 ? 0 : 1;
      }
 
   }
 
   /**
    * The Class PairDoubleComparator.
    * 
    * Created on: 13.08.2011
    * 
    * @author: M128K145
    */
   public static class PairDoubleComparator implements Comparator<PairDouble> {
 
      /**
       * Compare.
       * 
       * @param o1
       *           the o1
       * @param o2
       *           the o2
       * @return the int
       * @see java.util.Comparator#compare(java.lang.Object, java.lang.Object)
       */
      public int compare(PairDouble o1, PairDouble o2) {
         double tmp = o1.getFirst() - o2.getFirst();
         return tmp < 0 ? -1 : tmp == 0 ? 0 : 1;
 
      }
 
   }
 
   /**
    * Cw.
    * 
    * @param a
    *           the a
    * @param b
    *           the b
    * @param c
    *           the c
    * @return true, if successful
    */
   private static boolean cw(final PairDouble a, final PairDouble b,
         final PairDouble c) {
      return (b.getFirst() - a.getSecond()) * (c.second - a.second)
            - (b.second - a.second) * (c.first - a.first) < 0;
   }
 
   /**
    * Convex hull.
    * 
    * @param p
    *           the p
    * @return the list
    */
   private static List<PairDouble> convexHull(List<PairDouble> p) {
      int n = p.size();
      if (n <= 1)
         return p;
      int k = 0;
      Collections.sort(p, new PairDoubleComparator());
      List<PairDouble> q = new ArrayList<PairDouble>();
      for (int i = 0; i < n; q.add(p.get(i++)), ++k)
         for (; k >= 2 && !cw(q.get(k - 2), q.get(k - 1), p.get(i)); --k)
            ;
      for (int i = n - 2, t = k; i >= 0; q.add(p.get(i--)), ++k)
         for (; k > t && !cw(q.get(k - 2), q.get(k - 1), p.get(i)); --k)
            ;
      resize(q, k - 1 - (q.get(0) == q.get(1) ? 1 : 0));
      return q;
 
   }
 
   /**
    * Resize.
    * 
    * @param <T>
    *           the generic type
    * @param list
    *           the list
    * @param size
    *           the size
    * @return the list
    */
   private static <T> List<T> resize(List<T> list, int size) {
      if (list.size() > size) {
         for (int i = list.size() - 1; i >= size - 1; list.remove(i), --i)
            ;
      } else if (list.size() < size) {
         T temp = list.get(list.size() - 1);
         for (int i = 0, iSize = size - list.size(); i < iSize; list.add(temp), ++i)
            ;
      }
      return list;
   }
 
   /**
    * The main method.
    * 
    * @param args
    *           the arguments
    */
   public static void main(String[] args) {
      List<PairDouble> points = new ArrayList<PairDouble>();
      points.add(0, new PairDouble(0, 0));
      points.add(1, new PairDouble(3, 0));
      points.add(2, new PairDouble(0, 3));
      points.add(3, new PairDouble(1, 1));
      List<PairDouble> hull = convexHull(points);
      System.out.println(3 == hull.size());
 
   }
}
1
49 / 15 / 2
Регистрация: 20.02.2011
Сообщений: 152
15.08.2011, 20:31  [ТС] 3
спасибо большое M128K145
0
0 / 0 / 0
Регистрация: 18.04.2012
Сообщений: 15
18.04.2012, 20:21 4
а на делфи есть? скинь плиз корректную
0
18.04.2012, 20:21
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.04.2012, 20:21
Помогаю со студенческими работами здесь

Выполнить дилатацию (построение выпуклой оболочки) и дальнейшее выделение контура бинарного изображения
Здравствуйте. Вообщем есть исходное изображение я его бинаризирую и нужно выполнить...

Нахождение выпуклой оболочки (3D)
Здравствуйте, может на этом форуме кто-нибудь сможет помочь. Мне завтра надо сдавать лабораторную,...

Нахождение выпуклой оболочки
Помогите пожалуйста с решением, Выпуклая оболочка множества точек на плоскости состоит из тех...

Определение выпуклой оболочки по методу Джарвиса
помогите мне написать программу плиз) желательно до четверга и обязательно на бейсике


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru