![]() |
|
![]() ![]() ![]() |
|
Atij |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 53 Регистрация: 13.4.2008 Репутация: нет Всего: нет |
Добрый день, помогите пожалуйста разобраться со следующим вопросом:
Рандомно генерируются n точек. Необходимо обвести их замкнутым контуром, другими словами сделать из них многоугольник. Что-то никак не могу сообразить как это сделать. Первая идею кот-ая пришла в голову была следующей: Берём самую отдалённую точку по X. Соединяем её со ближайшей точкой по Х и Y. Соединяем её со второй по ближайшей точкой по X. Далее начинаем строить многоугольник снизу и сверху находя и там и там ближайшие не занятые точки по X. Эта идея не работает =( Была и другая: Берём самую отдалённую точку по X. Соединяем её со ближайшей точкой по Х и Y. Соединяем её со второй по ближайшей точкой по X. Далее начинаем строить многоугольник снизу и сверху находя просто ближайшие точки. Тоже не пашет =( Помогите пожалуйста =) |
|||
|
||||
Mayk |
|
|||
![]() ^аВаТаР^ сообщение>> ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2616 Регистрация: 22.5.2005 Где: за границей разум а Репутация: 2 Всего: 134 |
Что значит "обвести их"? Если ситуация когда не все точки являются вершинами многоугольника устроит, то поиск по ключевым словам "выпуклая оболочка".
-------------------- Здесь был кролик. Но его убили. Человеки < кроликов, йа считаю. |
|||
|
||||
Sartorius |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1568 Регистрация: 18.7.2006 Где: Ivory tower Репутация: 1 Всего: 37 |
||||
|
||||
Atij |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 53 Регистрация: 13.4.2008 Репутация: нет Всего: нет |
Я посматрел, там есть только твой линк:
http://en.wikipedia.org/wiki/Convex_hull а мне нуно немного другое, мне не нужно соединять крайние точки, мне нужно нарисовать многоугольник. Нет не задействованных точек. 2 Sartorius. Здесь то же самое. Это сообщение отредактировал(а) Atij - 15.10.2008, 16:02 |
|||
|
||||
maxim1000 |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3334 Регистрация: 11.1.2003 Где: Киев Репутация: 33 Всего: 110 |
и самопересечения запрещены?
можно попробовать так: берём две точки, поворачиваем всё так, чтобы отрезок между ними стал горизонтальным только нужно брать так, чтобы одна точка получилась самой левой, а другая - самой правой (тут нужно подумать над доказательством возможности и алгоритмом выбора - сейчас в голову не приходит) разделяем остальные точки на те, что выше отрезка и те, что ниже начинаем в левой точки, по верхним идём вправо до правой точки, по нижним возвращаемся для прохода в каждую сторону точки сортируются и объодятся в соответствующем порядке - тогда самопересечений не будет Добавлено через 32 секунды
а нет - таки пришло ![]() просто берём две самые удалённые точки -------------------- qqq |
|||
|
||||
Atij |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 53 Регистрация: 13.4.2008 Репутация: нет Всего: нет |
спс, согласен =)
есть ещё предложения ? =) |
|||
|
||||
Akina |
|
|||
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 20 Всего: 454 |
На сырцах тебе дали вполне рабочий ответ.
-------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Алгоритмы" | |
|
Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Алгоритмы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |