Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 04.06.2012, 14:37
PRoRocK1 PRoRocK1 вне форума
Прохожий
 
Регистрация: 01.04.2012
Сообщения: 3
Репутация: 10
Вопрос Нахождение соседней вершины полигона

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

красной линией он разбился на 2 монотонных.
и верхний теперь состоит из вершин 0,2,3,4
есть 2 массива
в первом содержатся точки этого полигона poly[i].poly[0,2,3,4]
во втором упорядоченные по х points[4,0,2,3]
и разумеется есть их координаты в точно таких же массивах.
и самое интересное нужно определить будут ли точки 0 и 2 соседними.
сделал вот такое условие
Код:
 if ((point[points[st]-(points[st]-points[st-1])].X=point[points[st-1]].X) and
        (point[points[st]-(points[st]-points[st-1])].y=point[points[st-1]].y)) or
       ((points[st]+1<length(point)) and (point[points[st]+1].X=point[points[st-1]].X) and
        (points[st]+1<length(point)) and (point[points[st]+1].y=point[points[st-1]].y)) or
       ((points[st]=poly[i].poly[0]) and (points[st-1]=poly[i].poly[length(poly[i].poly)-1])) or
       ((points[st]=poly[i].poly[length(poly[i].poly)-1]) and (points[st-1]=poly[i].poly[0]))
зы в массиве point хранятся координаты всех точек от 0 до n
такое условие прекрасно справляется (первые 2 строчки) с данной фигурой но если нарисовать параллелограмм он скажет что 2 и 3 точка слева соседи хотя они в противоположных углах.
Кто сможет направить на истинный путь? 3 день мучаюсь.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 00:30.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025