我在X3d中对一个圆柱体应用了以下两个变换:
<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)。
感谢您对我为什么要向后理解的任何解释。
发布于 2021-09-08 01:37:07
误解是你错误地断言“旋转的中心应该是2.0...”。外部变换没有考虑内部变换在某种意义上移动了原点这一事实。换句话说,X3D中的变换是活动的,它们移动内部的形状,而不是坐标系。内部变换沿y轴向上移动圆柱体,保持坐标系不变。然后,外部变换围绕不变的z轴应用-pi/4的旋转,它通过原点(0,0,0)
https://stackoverflow.com/questions/68884348
复制相似问题