Begin
WriteLn('Введите точки A(x1,x2),B(x3,x4),C(x5,x6),D(x7,x8)');
For i=1 to 8 do
begin
write('x'+ i +'=');
readln(A);
end;
If (A[2]=A[4]) and (A[1]=A[5]) and (A[3]=A[7]) and (A[6]=A[8]) then
If (A[7]-A[5])=(A[6]-A[2]) then
WriteLn('Это квадрат')
else
Writeln('Это прямоугольник');
else
writeln('Не пр. и не кв.');
readkey;
End;
Проверка на четырехугольность
Подскажите хотя бы способ. В голову вообще ничего не лезет.
(x-x0)/(x0-x1)=(y-y0)/(y0-y1)
приводишь к уравнению прямой в общем виде
Ax+By+C=0
и проверяешь, не лежат, ли на этой прямой еще точки. Если лежат, то это не четырехугольник.
Дальше берешь скалярные произведения нормалей прямых (их можно получить из общего уравнения). Если произведение равно нулю, значит ортогональны. Если каждой прямой ортогональны две прямые, значит у тебя прямоугольник.
Если после всего этого расстояния между точками равны, значит к тому же еще и квадрат.
А если точки в пространстве, то нужно проверить лежат ли они в одной плоскости.
Если нужен код то можно примерно таким способом.
Цитата: AIGrifon
А если точки в пространстве, то нужно проверить лежат ли они в одной плоскости.
По условию задачи это не нужно.
Произвольный четырехугольник не обязан лежать в плоскости, а для прямоугольника наличие 4 прямых углов является достаточным условием. Т.е. достаточно проверить 4 угла, а если они прямые, то сравнить стороны.
Цитата: andriano
а для прямоугольника наличие 4 прямых углов является достаточным условием.
Т. е. подразумевается не обязательно плоский прямоугольник? Т. к. иначе можно иметь 4 прямых угла, но при этом не лежащие в одной плоскости.
что-то мне подсказывает, что любые четыре точки будут четырехугольником(правда он может быть вырожденным в прямую).
лично я бы так решил.
1) определить выпуклый или невыпуклый четырехугольник - самая сложная часть алгоритма. Есть несколько способов. Один из самых простых - алгоритм заворачивания подарка. Поищи, в инете куча инфы по нему. Кажется на английской википедии его видел
2) определить углы - тест на "прямоугольность"
3) определить размеры сторон - тест на "квадратность"
решение в лоб. я бы так сделал, хотя, возможно, есть более оптимальный вариант.
[QUOTE=andriano]Произвольный четырехугольник не обязан лежать в плоскости...[/QUOTE] Че-то либо меня тупит, либо вас...
Нарисуйте мне, пожалуйста, четыре угла не лежащие в одной плоскости на декартовой системе координат(на которой только одна плоскость ХоУ).
1. проверить на "прямоугольность" (перпендикулярность 1ой строны 2орой, 2ой третьей и пр.)
2. "квадратность" и вуаля :)
Цитата: AIGrifon
Т. е. подразумевается не обязательно плоский прямоугольник? Т. к. иначе можно иметь 4 прямых угла, но при этом не лежащие в одной плоскости.
Попытайся нарисовать фигуру, имеющую 4 прямых угла и при этом не лежещую в одной плоскости.
Цитата: andriano
Попытайся нарисовать фигуру, имеющую 4 прямых угла и при этом не лежещую в одной плоскости.
Да, верно. Забыл я стереометрию:)