![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
![]() Добрый день.
Во время реализации триангуляции полигона методом деления на монотонную часть возникла проблема. По этому алгоритму полигон делится на монотонные в которых то и нужно узнать являются ли точки упорядоченные по координате х соседними. к примеру этот полигон: ![]() красной линией он разбился на 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])) такое условие прекрасно справляется (первые 2 строчки) с данной фигурой но если нарисовать параллелограмм он скажет что 2 и 3 точка слева соседи хотя они в противоположных углах. Кто сможет направить на истинный путь? 3 день мучаюсь. |