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);

(上面的语法是动作脚本,但这并不重要)我目前正试图了解维基百科文章。我看到 beta 角是 45,就像上面的矩阵一样,但我不明白“魔术”数字来自哪里,以及等距角和比例尺比 (1,1/2) 之间的联系。

如果我想使用自定义角度,如何计算出我使用的角度而不是 45 ?,比例值和比例是多少?

4

2 回答 2

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 中运行这些快速计算以来的百万分之一的差异)

于 2012-05-08T21:15:24.373 回答
1

只是为了保留观点,而不是其他。缩放不是实现等距正字法的必要条件。但是,当应用第一个旋转角度 (45 度) 时,图像会失去其原始比例。为了解决这个问题,图像通常按比例缩小。

等轴测投影是一种特殊类型的正交投影,其中每个轴均等表示并且轴之间的角度为 120 度。为此:绕水平轴旋转 45 度;然后围绕垂直轴旋转余弦 30 度的反正弦。所以,没有这样的自定义角度。该应用程序正在模拟具有非均匀比例变换的二次旋转。x 轴刻度保持初始 45 度旋转;然而,y 轴被缩短了 50%。基本上,尺度变换是实现二次旋转变换(arcsin(cos(30 * (PI/180))))。

您所指的“幻数”是 45 度余弦的两倍。

于 2012-05-08T21:50:54.827 回答