Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   Определить тип четырехугольника (http://forum.oszone.net/showthread.php?t=186331)

Hector 24-09-2010 01:47 1503018

Определить тип четырехугольника
 
Задача такая, вводятся координаты четырех точек (x;y) и нужно определить вид полученного четырехугольника (квадрат, прямоугольник, трапеция и т. д.). проблема в том, как это сделать т. е. математически определить тип этого четырехугольника (формула нужна)

belk94 24-09-2010 02:13 1503028

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

Hector 24-09-2010 02:14 1503030

Цитата:

Цитата belk94
А призма, если не ошибаюсь, - это трёхмерная фигура. »

да, это я ошибся, имелась ввиду трапеция

Delirium 24-09-2010 02:23 1503035

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

Hector 24-09-2010 02:28 1503038

Цитата:

Цитата Delirium
Ну и так далее »

А для трапеции?

Delirium 24-09-2010 02:43 1503040

http://www.cyberforum.ru/delphi-begi...ead108386.html
http://www.google.com/search?hl=ru&c...=&oq=&gs_rfai=

El Scorpio 24-09-2010 07:26 1503097

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

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

Цитата:

Цитата Hector
А для трапеции? »

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

lxa85 24-09-2010 09:23 1503147

Hector, ты с векторной математикой знаком?
Коллинеарность и перпендикулярность векторов говорит о чем либо?
Я бы предложил сравнивать скаляры длин векторов (их нормы) и далее смотреть, как они соотносятся со свойствами известных 4х угольников.
Кстати, попутно вопрос и замечание.
Необходимо отслеживать, откуда и куда идет вектор. Т.е. чтобы не получилась фигура "песочных часов". Ну и вообще отследить, что с чем сравнивается.
Воот еще такая заметка. Тебе надо будет определить Эпсилон минимального расхождения. Т.е. когда начнется непосредственно вычисления, очень малые дробные части будут неизбежно потеряны. И при малых расхождениях векторов фигура будет восприниматься как ромб допустим, не являясь таковым на самом деле.
Цитата:

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

2 Стороны параллельны друг другу. Их равенство не обязательно ;)
Но там предъявляется требование к углам основания. Чтобы отличить от параллелепипеда или в общий 4х угольник.

El Scorpio 27-09-2010 02:04 1505266

Цитата:

Цитата lxa85
2 Стороны параллельны друг другу. Их равенство не обязательно »

да, перепутал с равнобедренной трапецией.

Цитата:

Цитата lxa85
Но там предъявляется требование к углам основания. »

Углы у одной параллельных сторон должны быть не больше 90 градусов,*а у другой - не меньше.
Определить размер угла можно по косинусу. Точное значение угла вычислять не обязательно - достаточно определить знак косинуса разности углов линий, составляющих данный угол.
http://ru.wikipedia.org/wiki/%D0%A1%...BD.D0.B8.D1.8F


Время: 11:07.

Время: 11:07.
© OSzone.net 2001-