Страницы

Поиск по вопросам

пятница, 9 ноября 2018 г.

Классическая задачка на определение прямоугольности треугольника

Есть java (с которой я практически не знаком), есть три вершины треугольника (шесть int), есть необходимость проверить, прямоугольный ли треугольник. Естественно, в этом случае нужно вообще боком обойти флоаты, чтобы не нарваться на какую-нибудь разницу в E-13 при проверке. Я довольно долго пыхтел, прежде чем до меня дошло, что
Каждая сторона - сама по себе гипотенуза прямоугольного треугольника, две вершины которого совпадают с концами этой стороны, и ее квадрат найти проще простого. Скучная картинка для наглядности:
В самом банальном уравнении прямоугольного треугольника и так используются квадраты сторон, поэтому точную длину стороны мне вообще не нужно знать
Задачу я таким образом вроде решил, но меня не отпускает ощущение, что я тупой и упускаю какое-то совсем банальное решение. И, соответственно, хотел бы услышать идеи по поводу решения этой задачи.


Ответ

Можно проверить пару отрезков на перпендикулярность. Получить их векторы и проверить, равно ли 0 скалярное произведение векторов. Псевдокод: vx1 = x2 - x1; vy1 = y2 - y1;
vx2 = x3 - x1; vy2 = y3 - y1;
dotProduct = vx1*vx2 + vy1*vy2; /* == 0 ? прямой угол : не прямой */ В худшем случае придётся проверить все три пары.

Комментариев нет:

Отправить комментарий