Wil*_*ker 11 3d user-interface animation quaternions euler-angles
四元数可以说是在内部表示对象旋转的合适选择.它们简单有效地插入并明确表示单个方向.
但是,在用户界面中显示四元数通常是不合适的 - 欧拉角通常对用户来说更为熟悉,并且它们的值更直观和可预测.
欧拉角在代码级别上变得复杂 - 它们需要存储旋转顺序,并且使用该顺序和相关联的角度组成实际方向(无论是矩阵还是四元数)是麻烦的,至少可以说是麻烦的.
使用四元数表示最方便地执行可靠的插值 - 这是否意味着我们必须在Euler表示和四元数表示之间不断转换?这在绩效方面是否可行?
我们可以将方向存储为四元数并将它们转换为仅显示给用户吗?这可能是不可能的,因为对于任何给定的方向,只有一个四元数表示,但有许多欧拉表示.我们如何"选择"与最初定义该方向的Euler表示相对应的Euler表示?这似乎是一项不可能完成的任务 - 我们在转换为四元数时已经有效地丢失了信息.
我们可以存储为欧拉角,然后根据需要转换为四元数吗?这可能是不可扩展的 - 从欧拉角到四元数的转换,插值,然后再转换回来可能是相对昂贵的代码.
我们可以简单地存储两种表示并使用最适合任何给定情况的表示吗?在存储器方面的大量成本(想象具有大约60个骨骼的骨架的动画曲线)并保持这些值同步可能是昂贵的,或者至少是麻烦的.
有没有人看到,使用或者解决这个问题的任何聪明的解决方案?当然上面的三个选项不仅仅是一个吗?是否有任何其他的问题领域类似这样已经解决了吗?
小智 18
我是航空航天工程师; 三十年来,我一直在使用四元数进行航天器姿态控制和导航.以下是您对情况的一些看法:
我有所有这些操作的算法等等:往返于旋转矩阵(方向余弦矩阵)的任何旋转序列的欧拉角的四元数,在末端或中间点的四元数插值匹配位置,速率等,刚性和灵活性使用四元数的身体动力学和运动学.
如果我能在nhughes1ster@gmail.com提供帮助,请与我联系
| 归档时间: |
|
| 查看次数: |
11018 次 |
| 最近记录: |