0

カスタム角度の等角射影行列を計算しようとしています。私が使用しているエンジンには、次のように定義された射影行列があります。

var project:Matrix = new Matrix();
projection.rotate(45 * (Math.PI / 180) );
scale = 1.4142137000082988; // not sure why this magic number is needed- now working on a "real" solution
projection.scale(scale * 1, scale * .5);

(上記の構文は actionscript ですが、それほど重要ではありません) 現在、ウィキペディアの記事 を理解しようとしています。上記のマトリックスのように、ベータ角が 45 であることはわかりますが、「魔法の」数がどこから来たのか、および等角角と縮尺比 (1,1/2) の関係がわかりません。

カスタム角度を使用したい場合、 45 の代わりに使用する角度をどのように決定すればよいですか? 、スケール値とスケール比はどうなりますか?

4

2 に答える 2

1

単に視点を維持するためであり、他にはあまりありません。等角投影法を実現するためにスケーリングは必要ありません。ただし、最初の回転角(45度)を適用すると、画像は元の縮尺を失います。これを修正するために、通常、画像は縮小されます。

等角投影は、各軸が等しく表され、軸間の角度が120度である特定のタイプの正投影です。これを実現するには、水平軸を中心に45度回転します。続いて、垂直軸を中心に30度の正弦波で回転します。したがって、そのようなカスタム角度はありません。アプリケーションは、不均一なスケール変換を使用して2次回転をシミュレートしています。x軸スケールは、最初の45度の回転を維持しています。ただし、y軸は50%短縮されています。基本的に、スケール変換は2次回転変換(arcsin(cos(30 *(PI / 180))))を実現します。

あなたが参照している「マジックナンバー」は、45度の正弦の2倍です。

于 2012-05-08T21:50:54.827 に答える
1

数学に基づいて、それは次のようになります

scale = 1/cos(θ)

また

scale = 1/sin(θ)

θ回転角です。

  • 45 * (Math.PI / 180)45°ラジアンに変換( π/4)
  • cos(π/4) = sin(π/4) = 0.7071067811865476
  • 1/cos(π/4) = 1/sin(π/4) = 1.414213562373095あなたのマジックナンバーがあります。

(これらの簡単な計算を JavaScript で実行したため、1,000 万分の 1 の違いです)

于 2012-05-08T21:15:24.373 に答える