2016-10-16 6 views
0

Я заканчиваю задание. Но я избиваю голову одной проблемой и не могу ее решить.Расчет угла с использованием теоремы Пифагора

Я должен рассчитывать угол в градусах и расстоянии между 2 точками, округленный до 3 знаков после запятой. Все работает нормально, но угол, который он выдает, ошибочен

double angleInRadians = Math.Atan2(point2X, point1X) - Math.Atan2(point2Y, point1Y); 

Это должно быть правильно? Но он просто продолжает говорить 0, когда должен говорить 45 градусов. Я проверил, и расчет для преобразования его в степень правильный, он получает угол в радианах, который играет вверх

Кто-нибудь знает, что с ним не так?

+0

Ну, вы можете вычислить расстояние * между * двумя * точками, а не * угол *. У вас есть * векторы *, а не только * точки *? –

+0

Я не уверен, что вы имеете в виду. Дельта и вектор - то же самое верно? Разве Atan2 не вычисляет вектор (дельта)? –

+0

Замечания о назначении говорят: «Рассчитайте угол, который нам нужно переместить, чтобы перейти от точки 1 к точке 2 (0 градусов прямо вправо)» –

ответ

1

Вы не может вычислить угол между двумя точками. Но в случае «угла мы должны двигаться в систему, чтобы перейти от точки 1 до точки 2» это

double angle = Math.Atan2(point2Y - point1Y, point2X - point1X)/Math.PI * 180.0; 

Вычислительный этот угол является очень вещь Atan2 предназначена. Некоторые тесты:

(1, 0), (0, 1) -> 135 
(1, 0), (5, 0) -> 0 
(5, 0), (1, 0) -> 180 
(0, 1), (1, 0) -> -45