3d - 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),因为第一张图像的结果表明。
感谢您对我为什么向后理解它的任何解释。
解决方案
误解是您错误地断言“旋转中心应该是2.0 ...”。外部变换确实没有考虑内部变换在某种意义上已经移动了原点的事实。换句话说,X3D 中的变换是活动的,它们移动内部的形状,而不是坐标系。内部变换沿 y 轴“向上”移动圆柱体,使坐标系保持不变。然后,外部变换应用 -pi/4 围绕未更改的 z 轴进行旋转,该 z 轴通过原点 (0,0,0)
推荐阅读
- ruby - Jekyll 4.0.0 没有在 CI 中使用缓存构建
- coldfusion - 有两个列表,需要将它们转换为查询
- c# - 封闭物周围的锁是否也保护封闭物的内容?
- iar - 我的 IAR 命令行构建失败并显示“标准单一工具无法建立输出文件名”
- r - Flexdashboard(闪亮)不使用新数据更新
- html - 无法读取 Object.eval [as updateDirectives] 处未定义的属性“性别”
- javascript - javascript, jquery setInetval 追加
- unity3d - 改变子弹作为力量
- reactjs - React.FC 迭代 json 道具
- linux - 从远程主机扫描端口