Вычислить верхний левый угол ограничительной рамки повернутого прямоугольника (например, Рассчитать координаты ограничительной рамки из повернутого прямоугольника) Я пытаюсь действовать по-разному в зависимости от угла поворота (для определения квадрантов 0..90 ° ..180 ° ..270 ° ..360 °), указанных в градусах.
Угол конвертируется в радианы для сравнения с PI:
// http://codepad.org/zCxKJy30
#include <iostream>
#include "math.h"
using namespace std;
int main()
{
float deg = 90.0;
float rad = deg / 360.0 * 2.0 * M_PI;
if( rad <= M_PI/2.0)
{
cout << "less or equal";
}
else
{
cout << "larger";
}
return 0;
}
Я ожидаю, что условие будет истинным, но это не так.
Мне было интересно, если есть простое решение, в отличие от Как правильно вычислить округленные тригонометрические функции в градусах? а также Как я могу учесть ошибки округления в арифметике с плавающей точкой для обратных функций trig (и sqrt) (в C)? предложить.
Я просто попытался использовать тип double, и тогда сравнение работает, как и ожидалось: http://codepad.org/UHcee1RE
Почему повышение точности приводит к «правильной» оценке?
Задача ещё не решена.