0

次のコードとは対照的に、DirectX ベクトル マグニチュード演算関数の使用に大きな違いはありますか?

float hyp = sqrt(pow(globalVector.x, 2) + pow(globalVector.y, 2))
4

1 に答える 1

2

あなたが気にするのに十分ではありません。

あなたが投稿した機能に私がお勧めする改善があります。

累乗関数を呼び出す必要はありません。x*xそして、y*y同じくらい良くて安くなります。

次の疑似コードのように、スケーリングによって丸めから保護します。

if (abs(x) > abs(y)) {
   r = abs(y/x);
   hyp = x*sqrt(1 + r*r);
} else {
    r = abs(x/y);
    hyp = y*sqrt(1 + r*r);
}
于 2012-02-24T15:16:55.497 に答える