Войти

Показать полную графическую версию : Определить тип четырехугольника


Hector
24-09-2010, 01:47
Задача такая, вводятся координаты четырех точек (x;y) и нужно определить вид полученного четырехугольника (квадрат, прямоугольник, трапеция и т. д.). проблема в том, как это сделать т. е. математически определить тип этого четырехугольника (формула нужна)

belk94
24-09-2010, 02:13
Проверка на квадрат и прямоугольник делается через скалярное произведение векторов и сравнение их длин. А призма, если не ошибаюсь, - это трёхмерная фигура.

Hector
24-09-2010, 02:14
А призма, если не ошибаюсь, - это трёхмерная фигура. »
да, это я ошибся, имелась ввиду трапеция

Delirium
24-09-2010, 02:23
Просчитать длину каждой стороны. Если попарно совпали - прямоугольник. Все 4 одинаковы - квадрат. Ну и так далее :)

Hector
24-09-2010, 02:28
Ну и так далее »
А для трапеции?

Delirium
24-09-2010, 02:43
http://www.cyberforum.ru/delphi-beginners/thread108386.html
http://www.google.com/search?hl=ru&client=ie9-lb&q=%D0%BA%D0%B0%D0%BA+%D0%BE%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D0%B8%D1%82%D1%8C+%D0%B3%D0%B5%D0%BE %D0%BC%D0%B5%D1%82%D1%80%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D1%83%D1%8E+%D1%84%D0%B8%D0%B3%D1%83%D1%80%D1 %83+%D0%BF%D0%BE+%D0%BA%D0%BE%D0%BE%D1%80%D0%B4%D0%B8%D0%BD%D0%B0%D1%82%D0%B0%D0%BC&aq=f&aqi=&aql=&oq=&gs_rfai=

El Scorpio
24-09-2010, 07:26
Длины сторон и диагоналей определяются по формуле Пифагора - квадратный корень из суммы квадратов разностей координат по осям ((Xa - Xb)2 + (Ya - Yb)2). Причём сам корень извлекать не обязательно - ведь числа будут только сравниваться между собой.

Квадрат: все стороны равны и диагонали равны.
Ромб: все стороны равны, диагонали не равны
Прямоугольник: стороны попарно равны, диагонали равны.
Параллелограмм: стороны попарно равны, диагонали не равны

А для трапеции? »
Трапеция: две стороны (противоположные) равны, а третья больше четвёртой.

lxa85
24-09-2010, 09:23
Hector, ты с векторной математикой знаком?
Коллинеарность (http://ru.wikipedia.org/wiki/Коллинеарность) и перпендикулярность векторов говорит о чем либо?
Я бы предложил сравнивать скаляры длин векторов (их нормы) и далее смотреть, как они соотносятся со свойствами известных 4х угольников.
Кстати, попутно вопрос и замечание.
Необходимо отслеживать, откуда и куда идет вектор. Т.е. чтобы не получилась фигура "песочных часов". Ну и вообще отследить, что с чем сравнивается.
Воот еще такая заметка. Тебе надо будет определить Эпсилон минимального расхождения. Т.е. когда начнется непосредственно вычисления, очень малые дробные части будут неизбежно потеряны. И при малых расхождениях векторов фигура будет восприниматься как ромб допустим, не являясь таковым на самом деле. Трапеция: две стороны (противоположные) равны, а третья больше четвёртой. »
2 Стороны параллельны друг другу. Их равенство не обязательно ;)
Но там предъявляется требование к углам основания. Чтобы отличить от параллелепипеда или в общий 4х угольник.

El Scorpio
27-09-2010, 02:04
2 Стороны параллельны друг другу. Их равенство не обязательно »
да, перепутал с равнобедренной трапецией.

Но там предъявляется требование к углам основания. »
Углы у одной параллельных сторон должны быть не больше 90 градусов,*а у другой - не меньше.
Определить размер угла можно по косинусу. Точное значение угла вычислять не обязательно - достаточно определить знак косинуса разности углов линий, составляющих данный угол.
http://ru.wikipedia.org/wiki/%D0%A1%D0%B8%D0%BD%D1%83%D1%81#.D0.A4.D0.BE.D1.80.D0.BC.D1.83.D0.BB.D1.8B_.D1.81.D0.BB.D0.BE.D0.B6.D 0.B5.D0.BD.D0.B8.D1.8F




© OSzone.net 2001-2012