Я не вижу проблем в вашем коде.
В вашем примере искомая линия имеет уравнение y = 1.
В моем понимании это соответствует углу, равному 0, а не пи / 2. Вы указали, что угол 0 - это то, что обеспечивает ваша программа.
Pi / 2 - угол ближайшей точки линии к началу координат.
Однако существует проблема для расчета расстояния r . Далее я буду использовать сложные обозначения для облегчения анализа: .
Для ваш расчет расстояния соответствует:
Для a = 0 это соответствует действительной части среднего значения очков, в действительности, 1,5 в вашем примере. Это то, что обеспечивает ваша программа.
Правильное значение 1 будет получено путем замены действительной части мнимой, то есть замены cos (.) На sin (.).
Однако я не могу гарантировать, что это будет работать во всех случаях. Я приглашаю вас проверить формулы в Интернете или у вашего руководителя. Извините, что не могу сделать лучше на данный момент.
Примечание: сложные обозначения также позволяют упростить вычисления. Вот пример, даже если я понимаю, что это не ваш приоритет в данный момент:
Примечание: я не смог правильно отобразить уравнения Текса на первом этапе. Благодаря комментарию Боба я смог улучшить его. Все еще не идеально ...