проблемы с cMath и функцией sin - PullRequest
1 голос
/ 16 июня 2011

Эй, я делаю графическую математику и вставляю то, что я считаю поплавком ( Я уверен, что способы, которыми я манипулирую поплавком заранее, каким-то образом портят что-то ...) в функция и получение странных, отрицательных результатов обратно.

например, когда выполняются следующие операции, когда Угол изначально равен 350.0, тест заканчивается
-.99. Почему?

Angle= (float)(Angle-(int)Angle)+(float)((int)Angle%90); 

// calculates x and y based on angle and Hypotenuse
float test= sin(Angle);
float test2= 1/(Speed*Time);
float test3= test/test2;
buffX= sin(Angle)/ (1.f/(Speed*Time));
buffY= sin(Angle-90)/ (1.f/(Speed*Time));

пытаясь удержать Angle на плаву, поставив (плавать), пока все не заработало ... пожалуйста, помогите! Спасибо!

Ответы [ 2 ]

4 голосов
/ 16 июня 2011

Это потому, что функция времени выполнения C / C ++ sin() ожидает аргумент в радианах, а не в градусах.

Преобразовать в радианы с помощью:

float test= sin(Angle / 180 * M_PI);

и т.д.

1 голос
/ 16 июня 2011

грех принимает аргументы в радианах, а не в градусах. Вам нужно взять число и умножить его на пи / 180

...