![]() |
Определить тип четырехугольника
Задача такая, вводятся координаты четырех точек (x;y) и нужно определить вид полученного четырехугольника (квадрат, прямоугольник, трапеция и т. д.). проблема в том, как это сделать т. е. математически определить тип этого четырехугольника (формула нужна)
|
Проверка на квадрат и прямоугольник делается через скалярное произведение векторов и сравнение их длин. А призма, если не ошибаюсь, - это трёхмерная фигура.
|
Цитата:
|
Просчитать длину каждой стороны. Если попарно совпали - прямоугольник. Все 4 одинаковы - квадрат. Ну и так далее :)
|
Цитата:
|
|
Длины сторон и диагоналей определяются по формуле Пифагора - квадратный корень из суммы квадратов разностей координат по осям ((Xa - Xb)2 + (Ya - Yb)2). Причём сам корень извлекать не обязательно - ведь числа будут только сравниваться между собой.
Квадрат: все стороны равны и диагонали равны. Ромб: все стороны равны, диагонали не равны Прямоугольник: стороны попарно равны, диагонали равны. Параллелограмм: стороны попарно равны, диагонали не равны Цитата:
|
Hector, ты с векторной математикой знаком?
Коллинеарность и перпендикулярность векторов говорит о чем либо? Я бы предложил сравнивать скаляры длин векторов (их нормы) и далее смотреть, как они соотносятся со свойствами известных 4х угольников. Кстати, попутно вопрос и замечание. Необходимо отслеживать, откуда и куда идет вектор. Т.е. чтобы не получилась фигура "песочных часов". Ну и вообще отследить, что с чем сравнивается. Воот еще такая заметка. Тебе надо будет определить Эпсилон минимального расхождения. Т.е. когда начнется непосредственно вычисления, очень малые дробные части будут неизбежно потеряны. И при малых расхождениях векторов фигура будет восприниматься как ромб допустим, не являясь таковым на самом деле. Цитата:
Но там предъявляется требование к углам основания. Чтобы отличить от параллелепипеда или в общий 4х угольник. |
Цитата:
Цитата:
Определить размер угла можно по косинусу. Точное значение угла вычислять не обязательно - достаточно определить знак косинуса разности углов линий, составляющих данный угол. http://ru.wikipedia.org/wiki/%D0%A1%...BD.D0.B8.D1.8F |
Время: 11:07. |
Время: 11:07.
© OSzone.net 2001-