2012-05-08 14 views
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であるが、それはあまり重要ではないはずです) 私は現在wikipedia articleまわりで私の頭を取得しようとしています。上記の行列のようにベータ角が45であることがわかりますが、「魔法」の数はどこから来ているのか、等角と尺度比(1,1/2)との関係はわかりません。

カスタムアングルを使用する場合は、45の代わりにどの角度を使用するのですか?スケール値とスケール比はどのようになりますか?

+2

マジックナンバーは 'sqrt(2)'に近いです。 – sblom

答えて

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を変換し、あなたのマジックナンバーがあります。

(10-百万の違い私はJavaScriptでこれらの迅速な計算を実行してから)

+0

それは便利です。 (1,1/2)スケーリング 'projection.scale(scale * 1、scale * .5)のスケーリングを説明することができるディメトリック(30,45)等値投影でなければならないことがわかります。 30の代わりに任意の角度?スケール* 1、スケール* 0.5の代わりに、どのような比率にする必要がありますか? –

+0

Erm、dimetric、isometricは互いに排他的です - 両タイプの軸索投影像です...どんな速度でも、わかりません。 –

1

単に視点を維持すると、他の多くではありません。 isometric orthographicを達成するためにスケーリングが必要ではありません。しかし、第1の回転角(45°)が適用されると、画像は元のスケールを失う。これを修正するために、画像は通常縮小されます。

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

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

関連する問題