![]() |
|
|
#16
|
||||
|
||||
|
Да вы совсем сдурели, смотрите, есть три точки, по ним можно построить треугольник, длины сторон известны, по ним можно найти угол между катетами, если угол равен pi/2 в первом треугольнике и во втором, то фигура - прямоугольник.
ПРЯ-МО-У-ГОЛЬ-НИК a² = b² + c² – 2bc cosα Последний раз редактировалось M.A.D.M.A.N., 09.11.2011 в 20:16. |
|
#17
|
||||
|
||||
|
Имхо 3 сравнения сторон быстрее, чем проверка всех углов или поиск наибольшей стороны и проверка угла напротив нее для двух треугольников.
Стороны же надо сравнивать какие, текущую и ту, которая образована другими двумя точками. И так 3 раза. |
|
#18
|
||||
|
||||
|
Написано же, "С помощью тригонометрических формул" а не арифметикой.
Последний раз редактировалось M.A.D.M.A.N., 09.11.2011 в 20:37. |
|
#19
|
||||
|
||||
|
Цитата:
А вот из геометрии там будет Пифагор. |
|
#20
|
||||
|
||||
|
А если пользователь введет координаты, скажем:
A [0, 1] B [3, 1] C [0, 1] D [3, 1] |
|
#21
|
||||
|
||||
|
Тогда это прямоугольник с нулевой высотой
Условия-то выполняются ![]() |
|
#22
|
|||
|
|||
|
Для того чтобы утверждать что 4-угольник есть квадрат
необходимо доказать что 1. все стороны равны между собой. 2. все углы-прямые. Здесь один из авторов предлагает проверить равенство сторон и двух диагоналей. Действительно, если стороны равны и одновременно равны 2 диагонали- то это квадрат. Но вспомним, что компбьютер вычисляет длиму отрезка по теореме Пифагора. Поэтому вместо того чтобы вычислять длины двух диагоналей проще доказать что угол А-прямой (те 2 смежные стороны и диагональ удовлетворяют теореме Пифагора) Из того что угол А- прямой и стороны равны автоматически следует что все углы-прямые и следовательно 4-угольник есть квадрат. Доказателььство этого утверждения предоставляем читателю. Итак, введем систему координат с началом в вершине А. Это не нарушает общности доказательства, тк очень легко перенести координатную сетку параллельно самой себе. А вот поворачивать оси чтобы ось ОХ совпала с одной из сторон- не будем ввиду сложности преобразования. а теперь код Код:
для сокращения выкладок делаем подстановку X2^2 + Y2^2=R В результате очевидных преобразований получаем систему уравнений R = (X2-X3)^2 + (Y2-Y3)^2 R = (X3-X4)^2 + (Y3-Y4)^2 R = X4^2 + Y4^2 2*R = (X2-Y4)^2 + (Y2-Y4)^2 известен еще древним египтянам. Кроме того и вычисления также производятся с некоторой точностью. Поэтому сравнивать на равенство нельзя и мы должны смириться с тем что доказать что 4- угольник есть квадрат мы можем только с некоторой погрешностью. Обозначим ее Epsilon. Итак, перенеся все в левую часть получаем Код:
if (abs(R - (X2-X3)^2 - (Y2-Y3)^2) <=Epsilon) and
(abs(R - (X3-X4)^2 - (Y3-Y4)^2) <=Epsilon) and
(abs(R - X4^2 - Y4^2) <=Epsilon) and
(abs(2*R - (X2-Y4)^2 - (Y2-Y4)^2) <=Epsilon) then
ShowMessage('Квадрат');И между прочим есть непростой момент. А что будет если перепутать последовательность вершин? Тогда мы получим вообще странную фигуру с пересекающимися сторонами. Не знаю как точно сформулировано задание. Но можно подумать и над этим.. Последний раз редактировалось chainik, 13.11.2011 в 01:38. |
|
#23
|
||||
|
||||
|
Мдааа... Ну вы блин даете
![]() |