LINUX.ORG.RU

Как понять самопересекающийся многоугольник или нет?

 


0

2

Есть полигон, заданный координатами точек в плоскости, уложенных в отрезки, в порядке обхода. Надо максимально быстро и эффективно понять, самопересекающийся он или нет? Также было бы интересно узнать выпуклый он или нет, но тут уже есть много вариантов.

★★★★★

забей в google: «пересекаются ли отрезки»

anonymous
()

узнать выпуклый он или нет

центр тяжести фигуры, полярные координаты, три последовательные точки, прямая через крайние, сравнить расстояния от центра тяжести до прямой и до средней точки, повторять до полного удовлетворения

anonymous
()

В первую очередь надо вспомнить что вершины не просто так, а как то обходимые.

Пронумеруем вершины по часовой стрелке, проходим первую, вторую, и пускай для большей сложности у нас не прямоугольник, а паралелограмм, и эта вершина ниже второй,
то есть У2>У3, если она ещё и левее, то этой же вершины, то есть Х2>X3 то имеется самопересечение, если правее, то есть Х2<Х3 то самопересечения нету, ну ккак то так надо проверить все вершины.

П.С. Я неуч, придумал это сейчас, так что проверь совет на наличие логических ошибок.

torvn77 ★★★★★
()
Последнее исправление: torvn77 (всего исправлений: 1)

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

Deathstalker ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.