В ответ хорошо @Keith Thompson, функция C работает в радианах и поэтому градусов радиан преобразования требуется.
#ifndef M_PI
#define M_PI 3.1415926535897932384626433832795
#endif
float angle_radians = angle_degrees * (float) (M_PI/180.0);
Тем не менее, скорее, непосредственно масштабироваться по pi/180.0
, код будет получить более точные ответы, для углов вне основного диапазона, если код первого делает сокращение диапазона и затем весы по pi/180.0
. Это связано с тем, что масштабирование pi/180.0
неточно, поскольку машина pi float pi = 3.14159265;
не точно математическая π. Уменьшение радианного диапазона, выполненное cos()
, ошибочно, так как вычисленное значение радиана, данное ему, не так важно начинать. С градусами, уменьшение диапазона может быть сделано точно.
// Benefit with angles outside -360° to +360°
float angle_degrees_reduce = fmodf(angle_degrees, 360.0f);
float angle_radians = angle_degrees_reduce * M_PI/180.0;
sind() является синусоидальной пример, который выполняет еще лучше за счет снижения до более узкого интервала. С углами вне диапазона от -45 ° до + 45 ° есть преимущество.
Это указано во всех [ссылках на 'cosf'] (http://en.cppreference.com/w/c/numeric/math/cos). – usr2564301