Проблемы с кос и грехом в Android - PullRequest
2 голосов
/ 27 марта 2012

У меня проблема с моим кодом в Android.Я использую это для перемещения мяча.Если степень равна 90, она должна двигаться вправо, если она равна 180, она должна двигаться вниз и т. Д.

Это код, который я сделал.

int degrees=180;
int bollspeed=4;

bollX += bollspeed*Math.cos(Math.toRadians(degrees)); 
bollY += bollspeed*Math.sin(Math.toRadians(degrees));

Проблема в том, чтокогда шар должен двигаться на 90 градусов, он движется на 180, а когда он должен двигаться на 180 градусов, он движется на 270. Я проверил все, что мог подумать ... Кто-нибудь может увидеть какую-либо ошибку в моем коде или иметь расширение, я был бы действительноРады.Спасибо

Ответы [ 3 ]

8 голосов
/ 27 марта 2012

Как насчет Math.toRadians(degrees-90)?При использовании полярных координат 0 градус должен быть в 3 часа, а не в 12.

4 голосов
/ 27 марта 2012

Почему бы тогда не вычесть 90 градусов?

bollX += bollspeed*Math.cos(Math.toRadians(degrees-90)); 
bollY += bollspeed*Math.sin(Math.toRadians(degrees-90));
3 голосов
/ 27 марта 2012

90 градусов эквивалентно π / 2. Косинус π / 2 = 0. Поэтому скорость шариков в X не должна меняться.

Синус π / 2 = 1, поэтому скорость мяча в Y должна увеличиться на 1.

градусов | Радианы | Значение


cos (0 °) = cos (0) = 1

cos (90 °) = cos (π / 2) = 0

cos (180 °) = cos (π) = -1

cos (270 °) = стоимость (3π / 2) = 0


грех (0 °) = грех (0) = 0

грех (90 °) = грех (π / 2) = 1

грех (180 °) = грех (π) = 0

грех (270 °) = грех (3π / 2) = -1

...