Почему этот код иногда возвращает NaN? - PullRequest
0 голосов
/ 11 июня 2010

Это часто возвращает NAN («Не число») в зависимости от ввода:

#define PI 3.1415f

GLfloat sineEaseIn(GLfloat ratio) {
 return 1.0f-cosf(ratio * (PI / 2.0f));
}

Я попытался уменьшить PI на несколько цифр, чтобы посмотреть, поможет ли это. Нет кости. Тогда я подумал, что это может быть несоответствие типов данных, но float и glfloat кажутся эквивалентными:

gl.h

typedef float           GLfloat;

math.h

extern float  cosf( float );

Это проблема с кастингом?

1 Ответ

2 голосов
/ 11 июня 2010

Я подозреваю, что выполняется одно из следующих действий:

  • Ваше входное значение ratio может не соответствовать ожидаемому, а само ratio возможно NaN
  • cosf, который вы вызываете, не тот, который указан в math.h

В противном случае, похоже, с вашим выражением что-то не так.

...