首页 > 解决方案 > X3d 中的转换顺序

问题描述

我在 X3d 中对圆柱体应用了以下 2 个变换:

  <Transform   rotation="0 0 1 -0.785">
    <Transform  translation="0 2 0">      
      <Shape><Cylinder height="4" radius="0.1" />
      <Appearance><Material diffuseColor="1 0 0" /></Appearance>
      </Shape>
    </Transform>
  </Transform>

根据 X3d 规范,嵌套变换应用于对象的顺序是,首先是最嵌套的变换,在我的示例中是平移,其次是外部变换,即在我的示例中是旋转。

因此,我不明白这是上面X3d代码的结果:

在此处输入图像描述

据我了解,应该是这样的:

在此处输入图像描述

因为首先对圆柱体应用平移,将其中点从 (0,0,0) 移动到 (0,2,0),然后应用旋转。旋转中心应该是 (0, 2,0),而不是 (0,0,0),因为第一张图像的结果表明。

感谢您对我为什么向后理解它的任何解释。

标签: 3dx3dvrml

解决方案


误解是您错误地断言“旋转中心应该是2.0 ...”。外部变换确实没有考虑内部变换在某种意义上已经移动了原点的事实。换句话说,X3D 中的变换是活动的,它们移动内部的形状,而不是坐标系。内部变换沿 y 轴“向上”移动圆柱体,使坐标系保持不变。然后,外部变换应用 -pi/4 围绕未更改的 z 轴进行旋转,该 z 轴通过原点 (0,0,0)


推荐阅读