Это часто возвращается NAN ("Not A Number") в зависимости от ввода:Почему этот код иногда возвращает NaN?
#define PI 3.1415f
GLfloat sineEaseIn(GLfloat ratio) {
return 1.0f-cosf(ratio * (PI/2.0f));
}
Я попытался сделать PI несколько цифр меньше, чтобы увидеть, если это поможет. Нет кубиков. Тогда я думал, что это может быть несоответствие типов данных, но поплавок и GLfloat кажутся эквивалентными:
gl.h
typedef float GLfloat;
math.h
extern float cosf(float);
Это вопрос кастинга?
Кажется, что нет ничего плохого в твоем литье. Может быть, с этим может быть NAN или INF? –
Каковы некоторые входы, вызывающие «NaN», когда вы их не ожидаете? –
Как примечание, вам не нужно определять 'PI' (или pi/2) самостоятельно. Вы можете использовать 'M_PI_2', определенную в'' (желательно с добавлением приведения к float или суффиксу 'f', добавленным во избежание ненужных преобразований во время выполнения). –