Поиск:

Ответ в темуСоздание новой темы Создание опроса
> n точек. Создать непересекающиеся треугольники 
:(
    Опции темы
P111GR1M
Дата 14.11.2006, 08:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 14.11.2006

Репутация: нет
Всего: нет



Здравствуйте. Подскажите алгоритм решения этой задачки или где можно почитать на тему. 
На плоскости заданы n точек. Соеденить их непересекающимися отрезками таким образом,чтобы каждая область внутри выпуклой оболочки этого множества точек являлась треугольником
PM MAIL   Вверх
aicus
Дата 14.11.2006, 09:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 26.9.2006

Репутация: нет
Всего: нет



Попробуй генетичиские алгоритмы.
т.е. сначала соединяешь точки как попало, затем проверяешь, а не пересекаются ли линии, если пересекаются соединяешь по новому.
вот примерно такой цикл может помочь.
PM MAIL   Вверх
maxim1000
Дата 14.11.2006, 12:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 3334
Регистрация: 11.1.2003
Где: Киев

Репутация: 33
Всего: 110



(под "внешней точкой" множества точек будем подразумевать точку, которая  отделима какой-нибудь прямой от всех остальных)
будем отсекать внешние точки по очереди:
1. находим любую внешнюю точку
2. находим все внешние точки из всех оставшихся точек области
3. из них берём одну ближайшую к первой выбраной
4. из оставшихся внешних берём ближаёшую ко второй
5. соединяем их отрезками
6. убираем первую выбранную точку из рассматриваемого множества
7. повторяем


--------------------
qqq
PM WWW   Вверх
Earnest
Дата 15.11.2006, 08:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 7
Всего: 183



Поищи алгоритмы триангуляции


--------------------
...
PM   Вверх
SoWa
Дата 17.11.2006, 04:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Харекришна
****


Профиль
Группа: Комодератор
Сообщений: 2422
Регистрация: 18.10.2004

Репутация: 6
Всего: 74



Существует код, чтобы проверить полигон на самопеесечение.
Итак. Строим различные полигоны. Находим не самопересекающийся и разбиваем на треугольники.

ИМХО очень просто


--------------------
Всем добра smile
PM MAIL ICQ   Вверх
Mercator
Дата 27.11.2006, 12:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 17
Регистрация: 14.11.2006

Репутация: нет
Всего: 2



Ну на самом деле не так уж и просто. Это действительно алгоритмы триангуляции и многие умные люди разработали разные умные алгоритмы, чтобы они работали с большим количеством точек и быстро. Мы выполняли такую задачу в рамках курса по машинной графике. Если еще актуально, могу поискать материалы, а вообще, конечно, лучше книжки умные почитать - не тривиальная, короче, задача. Давно же известно, что многие геометрические задачи на плоскости и в пространстве формулируются предельно просто, на на машинке реализуются далеко не с лету.
PM   Вверх
SoWa
Дата 27.11.2006, 13:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Харекришна
****


Профиль
Группа: Комодератор
Сообщений: 2422
Регистрация: 18.10.2004

Репутация: 6
Всего: 74



Про сложность не говорим. Это легко сделать полу-брутфорсом... Строим различные полигоны, проверяем на самопересечение. Нашли? Ага! Разобъем на треугольники и все.


--------------------
Всем добра smile
PM MAIL ICQ   Вверх
Earnest
Дата 27.11.2006, 18:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 7
Всего: 183



Зачем усложнять? Провести несамопересекающуюся линию через произвольное множество точек задача сама по себе нетривиальная. Это не тот случай, когда надо вылить воду из чайника.
Алгоритм триангуляции не настолько тривиален, чтобы изложить его здесь в двух словах.
Поищи книгу (или ссылки) М. Ласло Вычислительная геометрия и компьютерная графика на C++). Там масса доступно описанных геометрических алгоритмов, в т.ч. и триангуляция Делоне. 


--------------------
...
PM   Вверх
P111GR1M
Дата 1.12.2006, 14:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 14.11.2006

Репутация: нет
Всего: нет



Решил делать так:
Нахожу выпуклый n-уголььник
Беру его вершину и провожу из нее ребра в остальные точки
Дальше перебираю треугольники, дроблю их.

Выпуклый n-угольник нахожу так:
Нахожу 4 крайние точки по y и x, строю четырехугольник.
Дальше надо узнать точка лежит за линией снаружи или внутри области.
Как это узнать?
PM MAIL   Вверх
SoWa
Дата 1.12.2006, 18:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Харекришна
****


Профиль
Группа: Комодератор
Сообщений: 2422
Регистрация: 18.10.2004

Репутация: 6
Всего: 74



ну вы меня удивляете. Уравнение прямой в школе проходили? Ну вот вместо равентства подставим знак "больше" или "меньше". получим уравнение полуплоскости. Затем проверим, точка в этой полуплоскости ли нет. Писать формулы не буду, ибо это надо знать и уже сто раз обсуждалось.


--------------------
Всем добра smile
PM MAIL ICQ   Вверх
Akina
Дата 1.12.2006, 20:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 20
Всего: 454



1) Должны ли все ребра описывающего многоугольника принадлежать треугольникам?
2) Если 3 точки (А,В,С) лежат на одной прямой - следует ли строить так, чтобы либо были соединены только А и В либо только В и С, или допустимы одновременно оба отрезка?


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
bagira
Дата 2.12.2006, 21:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2858
Регистрация: 25.10.2003
Где: в тайге Уральских гор

Репутация: нет
Всего: 123



Цитата(P111GR1M @  14.11.2006,  10:49 Найти цитируемый пост)
На плоскости заданы n точек.

значит (с точки зрения программирования), нам даны их координаты

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

(дальше мысль пока ко мне не пришла) smile


--------------------
Сегодня ты не бродил, не искал, не любил - можно сказать - и не жил...
Ф.Х. Дагларджа (Турция)
http://zveriolginovour.ru/
https://vmeste.yandex.ru/zveriolginovour 
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Алгоритмы"

maxim1000

Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Алгоритмы | Следующая тема »


 




[ Время генерации скрипта: 0.0539 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.