1

回転した長方形のバウンディング ボックスの左上隅を計算するには (たとえば、回転した長方形からバウンディング ボックスの座標を計算します)、回転角度に基づいて異なる動作をしようとしています (象限 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

精度を上げると「正しい」評価が得られるのはなぜですか?

4

0 に答える 0