Показать сообщение отдельно
  #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 день мучаюсь.
Ответить с цитированием