Может кто-нибудь показать мне алгоритм, чтобы написать функцию, которая возвращает true, если 4 точки образуют четырехугольник, и false в противном случае? Очки не приходят ни с каким заказом.
Я попытался проверить все перестановки 4-х точек и посмотреть, есть ли 3 точки, образующие прямую линию. Если есть 3 точки, которые образуют прямую линию, то это не четырехугольник. Но потом я понимаю, что нет способа рассказать о заказе. А потом я боролся за несколько часов размышлений и поисков без результата: (
Я прочитал эти вопросы:
- найти, если 4 точки на плоскости образуют прямоугольник?
- Определение порядка расположения вершин для формирования четырехугольника
Но все равно не нашли решения. В случае 1 он не может обнаружить другой вид четырехугольника, а в 2 он предполагает, что точки уже являются четырехугольными. Есть ли другой способ узнать, составляют ли 4 точки четырехугольник?
Спасибо, раньше.
РЕДАКТИРОВАТЬ ДЛЯ УТОЧНЕНИЯ:
Я определяю четырехугольник как простой четырехугольник, в основном все фигуры, показанные на этом рисунке:
![Quadirateral](https://i.stack.imgur.com/bLrYL.png)
за исключением формы с "четырехугольным" и "сложным" заголовком.
Что касается проблем с подходом «проверка коллинеарных триплетов», я попытался проверить вертикальные, горизонтальные и диагональные линии примерно так:
def is_linear_line(pt1, pt2, pt3):
return (pt1[x] == pt2[x] == pt3[x] ||
pt1[y] == pt2[y] == pt3[y] ||
slope(pt1, pt2) == slope(pt2, pt3))
И поймите, что прямоугольник и квадрат будут считаться линейной линией, поскольку наклон точек будет одинаковым. Надеюсь, это прояснит ситуацию.