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

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

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

Студворк — интернет-сервис помощи студентам
Привет всем! помогите написать на java этот алгоритм Построение выпуклой оболочки обходом Грэхэма
на С++ можно найти еще здесь Геометрия: выпуклая оболочка. Алгоритм Грэхема-Эндрю за O(N * logN)
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
12.08.2011, 20:13
Ответы с готовыми решениями:

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

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

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

3
Эксперт JavaЭксперт С++
 Аватар для M128K145
8384 / 3617 / 419
Регистрация: 03.07.2009
Сообщений: 10,709
13.08.2011, 13:53
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
 Аватар для videolord
49 / 15 / 2
Регистрация: 20.02.2011
Сообщений: 152
15.08.2011, 20:31  [ТС]
спасибо большое M128K145
0
0 / 0 / 0
Регистрация: 18.04.2012
Сообщений: 15
18.04.2012, 20:21
а на делфи есть? скинь плиз корректную
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
18.04.2012, 20:21
Помогаю со студенческими работами здесь

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и источниками (напряжения, ЭДС и тока). Найти токи и напряжения во всех элементах. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru