【问题标题】:What is the connection between an isometric angle and scale?等距角和比例尺之间有什么联系?
【发布时间】:2012-05-08 21:04:53
【问题描述】:

我正在尝试为自定义角度计算等距投影矩阵。在我使用的引擎中,有一个投影矩阵定义如下:

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。我看到 beta 角是 45,就像上面的矩阵一样,但我不明白“神奇”数字来自哪里,以及等距角和比例尺比 (1,1/2) 之间的联系。

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

【问题讨论】:

  • 这个神奇的数字非常接近sqrt(2)

标签: math projection isometric


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

【讨论】:

  • 这很方便。我可以看到这应该是一个二元 (30,45) 等距投影,这可以解释 (1,1/2) 缩放projection.scale(scale * 1, scale * .5); 我如何将其概括为任意角度而不是 30?我如何计算出比例应该是多少而不是 scale * 1, scale * .5 ?
  • Erm、dimetric 和 isometric 是相互排斥的——它们都是轴测投影的类型……无论如何,我不确定。
【解决方案2】:

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

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

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

【讨论】:

    猜你喜欢
    • 2011-05-31
    • 2012-12-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多