2012-05-08 40 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); 

(上面的語法動作,但應該沒多大關係) 我目前正在試圖讓我的頭周圍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並有你的幻數。

(在十萬分之一的差別,因爲我跑在JavaScript這些快速計算)

+0

這很方便。我可以看到這應該是一個二分的(30,45)等距投影,它可以解釋(1,1/2)縮放'projection.scale(scale * 1,scale * .5);'我怎樣才能推廣任意角度而不是30?我如何計算比例應該是什麼,而不是比例* 1,比例* .5? –

+0

Erm,二維和等距是相互排斥的 - 它們都是軸測投影的兩種類型......無論如何,我不確定。 –

1

只需保存的視角和別的不多。縮放並不是實現等距拼字法所必需的。但是,當應用第一個旋轉角度(45deg)時,圖像會丟失原始比例。要解決這個問題,圖像通常會縮小。

等軸測投影是一種特殊類型的正投影,其中每個軸被等量表示,軸之間的角度是120度。要做到這一點:圍繞水平軸旋轉45度;接着以餘弦30度的反正弦旋轉垂直軸。所以,沒有這樣的自定義角度。該應用程序正在模擬非均勻縮放變換的二次旋轉。 x軸刻度保持最初的45度旋轉;然而Y軸被縮短了50%。基本上,尺度變換是實現二次旋轉變換(arcsin(cos(30 *(PI/180)))))。

您所指的「幻數」是45度餘弦的兩倍。

相關問題