Вернуть значение между 1 и 360 - PullRequest
0 голосов
/ 13 апреля 2020

У меня есть функция, возвращающая значение, используемое в повороте кватернина. Однако когда у меня результат меньше 1 или очень близко к 360, я получаю результат -nan (ind). Есть ли способ вернуть окончательный результат между 1 и 360, чтобы избежать каких-либо ошибок в расчетах. Спасибо

const float ReturnAngle() const
{
    return (acosf(angle) * 180.0f * 2) / PI;
}

Обновление:

Вот некоторые результаты, которые я получаю при проверке значения после применения вращения преобразования к моему четвертишному.

angle: 359.598
angle: -nan(ind)
angle: 357.843


angle: -nan(ind)
angle: -nan(ind)
angle: 0.798189
angle: 2.16383
angle: 1.75475
angle: -nan(ind)

1 Ответ

1 голос
/ 14 апреля 2020

Значение, которое вы передаете acosf, находится за пределами допустимого диапазона от -1 до 1. Просмотрите код, который устанавливает значение для angle - возможно, у вас есть ошибка. Если это просто ошибка округления и angle выходит за допустимый диапазон из-за небольшого значения, «фиксация» его до допустимого диапазона может быть хорошим решением.

const float ReturnAngle() const
{
    if (angle < -1f) angle = -1f;
    if (angle > +1f) angle = +1f;
    return (acosf(angle) * 180.0f * 2) / PI;
}


...