我正在尝试为自定义角度制定等距投影矩阵。在我使用的引擎中,有一个投影矩阵定义如下:
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,但这应该无关紧要(我目前正在尝试了解维基百科文章。我看到 beta 角是 45,就像上面的矩阵一样,但我不明白"魔术"数字从何而来,以及等距角和比例比 (1,1/2( 之间的联系。
如果我想使用自定义角度,如何计算出我使用的角度而不是 45 ?,比例值和比例比例是多少?
根据数学,它看起来像
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 中运行这些快速计算以来,千万分之一的差异(
只是为了保留视角,而不是其他。缩放不是实现等轴测正字法的必要条件。但是,当应用第一个旋转角度 (45 度( 时,图像会失去其原始比例。要解决此问题,通常会缩小图像。
等轴测投影是一种特殊类型的正交投影,其中每个轴均等表示,轴之间的角度为 120 度。为此:绕水平轴旋转45度;然后绕纵轴旋转余弦 30 度。所以,没有这样的自定义角度。该应用程序正在通过非均匀比例变换模拟二次旋转。x 轴刻度保留初始 45 度旋转;但是,Y 轴被透视缩短了 50%。 基本上,尺度变换正在实现二次旋转变换(arcsin(cos(30 * (PI/180((((。
你所指的"幻数"是45度余弦的两倍。