|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
24.04.2010, 19:37 | #1 |
Негодник
Форумчанин
Регистрация: 10.11.2009
Сообщений: 880
|
построение многоугольника по точкам методом треугольников
не могу придумать алгоритм.
берутся 4 точки из массива и строится 2 треугольника 1,2,3 и 2,3,4. проверяются на пересечение сторон. если пересечений нет , то берутся следующие точки : 2,3,4 и 3,4,5. если же есть пересечение , то ищется такое построение треугольников из 4 точек , чтобы не было пересечений. Более подробно алгоритм описан ниже. всё просто, но вот когда думаю над алгоритмом , то не пойму как устроить счётчик вершин. если внимательно посмотрите на картинку, то заметите интересную особенность: если точки, стоящие подряд, идут пилой, то стороны прямоугольников не будут пересекаться. Если же , наоборот , то можно оставить верхнюю точку и с ней перебирать идущие следом пары точек и строить треугольники до след. такой точки, чтобы получилась пилообразная структура из точек. но в этом алгоритме есть косяк. посмотрев на нижнюю картинку от 6 точки до 10 точки Y всё ещё стремится вниз, но при построении треугольника 6,9,10 (выделен красым) алгоритм сдаёт сбой. может кто то сталкивался с такой проблемой. Если да, то скиньте решение.
Если помог, проси поставить минус. Будь оригинален!
Последний раз редактировалось Rin; 24.04.2010 в 19:40. |
24.04.2010, 22:29 | #2 |
Негодник
Форумчанин
Регистрация: 10.11.2009
Сообщений: 880
|
хоть что-нить подскажите. что сразу приходит в голову. может смогу раскрутить вашу мысль.
я не прошу алгоритма на делфи, просто какие -нить предположения.
Если помог, проси поставить минус. Будь оригинален!
|
24.04.2010, 23:20 | #3 | |
Телепат с дипломом
Старожил
Регистрация: 10.06.2007
Сообщений: 4,929
|
Цитата:
Проблема из-за развернутого угла к вершине 10, тебе нужно определять угол и цепляться к последней из вершин, с к-рой угол < 180. В данном случае это 8, и насколько я понял так было бы нормально?
The future is not a tablet with a 9" screen no more than the future was a 9" black & white screen in a box. It’s the paradigm that survives. (Kroc Camen)
Проверь себя! Онлайн тестирование | Мой блог |
|
24.04.2010, 23:33 | #4 |
Негодник
Форумчанин
Регистрация: 10.11.2009
Сообщений: 880
|
дело обстоит так. Точки расставляются в хаотичном порядке на форме с помошью Mouse Down (заносятся в массив точек). Далее они сортируются по возрастанию относительно ОХ.
а вот потом то и тупик с созданием алгоритма. я на бумаге рассматривал разные варианты нанесения точек и там есть разные загвоздки, поэтому то и не могу решить проблему увеличения счётчика. Я немного неправильно выразился на счёт счётчика. счётчик вершин, то есть какие вершины оставлять для построения следующих двух треугольников и дальнейшей проверки на пересечение сторон, а какие увеличивать.
Если помог, проси поставить минус. Будь оригинален!
|
24.04.2010, 23:57 | #5 |
Телепат с дипломом
Старожил
Регистрация: 10.06.2007
Сообщений: 4,929
|
Ну тогда сортируй их еще и по вертикали.
А вообще тут да, нужно проверять на пересечение сторон. Поищи в сети алгоритмы пересечения линий или многоугольников.
The future is not a tablet with a 9" screen no more than the future was a 9" black & white screen in a box. It’s the paradigm that survives. (Kroc Camen)
Проверь себя! Онлайн тестирование | Мой блог Последний раз редактировалось mutabor; 25.04.2010 в 00:02. |
25.04.2010, 00:11 | #6 |
Негодник
Форумчанин
Регистрация: 10.11.2009
Сообщений: 880
|
этот алгоритм выдумал. не в нём дело. именно в счётчике вершин трабл.
чтож , спасибо за развёрнутый угол, я это не доглядел - уроки в школе прогуливал часто. Пойду химичить.%) Спасибо , Mutabor.
Если помог, проси поставить минус. Будь оригинален!
Последний раз редактировалось Rin; 25.04.2010 в 00:42. |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
построение окружности по 3 точкам в Delphi | ксона | Помощь студентам | 16 | 12.12.2009 17:14 |
построение окружности заданной функции по точкам | лорд преисподней | Помощь студентам | 1 | 18.11.2009 09:06 |
Определение площади многоугольника | Bayazet | Помощь студентам | 5 | 17.02.2009 12:48 |
Задача с периметром многоугольника | Abakan | Общие вопросы C/C++ | 1 | 02.01.2009 19:06 |