Чтобы вычислить верхний левый угол ограничивающей рамки повернутого прямоугольника (например, Рассчитать координаты ограничивающей рамки из повернутого прямоугольника) Я пытаюсь действовать по-разному в зависимости от угла поворота (для определения квадрантов 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;
}
Я ожидал, что условие будет истинным, но это не так.
Мне было интересно, есть ли простое решение, в отличие от правильно округленные тригонометрические функции в градусах? и Как я могу учесть ошибки округления в арифметике с плавающей запятой для обратных триггерных (и sqrt) функций (в C)? предложите.
Я только что попробовал использовать тип double, и тогда сравнение работает, как и ожидалось: http://codepad.org/UHcee1RE
Почему повышение точности приводит к «правильной» оценке?
float
на самом деле...) - person DevSolar   schedule 18.09.2014"math.h"
, ниM_PI
не являются стандартными C++. - person Fytch   schedule 18.09.2014