Задать вопрос
kumaxim
@kumaxim
Web-программист

Как найти угол между средней линией и катетом в треугольнике?

Доброго всем времени суток.
Тренируюсь в программировании на Python на сервисе Hacker Rank. Споткнулся об задачу о нахождении угла в треугольнике.

Условия: прямоугольный треугольник, из прямого угла к гипотенузе проведена средняя линия. Длинны катетов известны.
Найти угол между средней линией и прилежащим катетом.
5f834b34520ba754897474.png

В дискуссии к задаче, другие участники уже опубликовали свои решения. Вот например:
import math

AB = int(raw_input()) 
BC = int(raw_input()) 
print str(int(round(math.degrees(math.atan2(AB,BC)))))+'°'


Сервис этот код принимает и засчитывает задание, однако, я не понимаю откуда здесь возникает atan2?
Я понимаю, что у меня пробел в фундаментальных знаниях математики. Мне не ясно, каким вообще образом арк тангенс связан с этим углом. Я не понимаю, по какой фразе гуглить или в какую сторону вообще копать.

Укажите мне, пожалуйста, направление.
  • Вопрос задан
  • 463 просмотра
Подписаться 1 Простой 1 комментарий
Пригласить эксперта
Ответы на вопрос 4
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Для начала - это у вас не средняя линия, а медиана треугольника.

Из точки M опускаем перпендикуляр на сторону BC. Точку пересечения назовём M'.
Рассмотрим треугольники АВС и MM'C.
∠BCA = ∠M'CM, так как это общий угол треугольников.
∠ABC = ∠MM'C, так как эти углы прямые.
Значит эти треугольники подобны.
CM = 1/2 CA => CM' = 1/2 CB
То есть, точка M' делит CB пополам, а значит перпендикуляр MM' одновременно является и медианой треугольника BMC.
Значит треугольник BMC - равнобедренный и ∠MBC = ∠BCM = ∠BCA = atan(AB/BC).
Ответ написан
GavriKos
@GavriKos
Гуглить соотношения в прямоугольном треугольнике.
А еще равенства углов в равнобедренных треугольниках могут пригодится...
Осталось найти где тут равнобедренные треугольники, а они есть
Ответ написан
Комментировать
wataru
@wataru Куратор тега Математика
Разработчик на С++, экс-олимпиадник.
Как найти угол на компьютере? Как его вообще можно вычислить? Очень редко в задаче можно выразить угол через какие-то другие известные углы в градусах. Чаще всего у вас есть какие-то координаты каких-то точек.

Из координат можно найти все тригонометрические функции - косинус, синус, тангенс... Из них потом уже можно получить значение угла в градусах/радианах через обратные тригонометрические функции, например арктангенс (atan в решении). Она по определению возвращает угол если ей передать значения арктангенса.

Чаще всего используют именно арктангенс, потому что, в отличии от косинусов/синусов, он хорошо работает для любого угла (у арксинуса, например, невозможно различить 45 и 135 градусов - значение синуса одно и то же). У арксинуса и арккосинуса нужно добавлять какие-то проверки сверху для решения неоднозначностей.

Почему в задаче такой ответ? atan() передаются косинус и синус угла, возможно растянутые на один и тот же коэффициент. Координаты точки М - (1/2 AB, 1/2 BC), ведь это середина AC. Представьте перпендикуляр из точки М на ость OX(BC). В получившемся треугольнике будет прямой угол, гипотенуза BM и катеты с длинами 1/2 AB, 1/2 BC. Соответственно, косинус/синус искомого угла будут 1/2/AM*AB, 1/2/AM*BC. Теперь вспоминаем, что atan() можно передавать значения, умноженные на константу. Вот пусть константа будет 2/AM. Тогда остаются AB и BC.

Еще, можно смотреть на atan() так - передайте ему координаты конца вектора и он вернет угол между OX и вектором.
Ответ написан
hint000
@hint000
у админа три руки
без многобукв: гипотенуза совпадает с медианой, т.к. две гипотенузы пересекаются в своих серединах. 5f83a11bf1d60992038429.png
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы