Добрый день.
Во время реализации триангуляции полигона методом деления на монотонную часть возникла проблема.
По этому алгоритму полигон делится на монотонные в которых то и нужно узнать являются ли точки упорядоченные по координате х соседними.
к примеру этот полигон:
красной линией он разбился на 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 день мучаюсь.
Перейти на форум:
Гость
Вы не зарегистрированны? Нажмите здесь для регистрации.