SLERP以错误的方向旋转(即不是最短的路径)

时间:2013-05-30 03:35:57

标签: matlab graphics 3d rotation interpolation

我在R3中有两个椭球,它们的中心点(P),它们的轴长(a,b,c)和它们的旋转矢量(R)。我希望沿着给定的中心线在这两个椭圆体之间插入管状结构。这是通过创建一个以中心线每个点为中心的椭球来完成的。它的轴长度在两个端点之间线性插值,旋转使用球面线性插值或SLERP作为四元数获得。

我之前就此问题提出过类似问题here。我已经把这个问题进一步分开了,并且认为它需要一个新的帖子。这里的区别在于,在执行SLERP之前,我首先通过描述其中一个的旋转矩阵的倒数来旋转两个参考椭球,使得其中一个现在是轴对齐的(即,没有旋转)。以前这似乎解决了这个问题,但我遇到了一个例子,这个修复不起作用。

重现此问题的源代码可用here。相关函数是ellipsoidSLERP及其调用的函数。以下是输出的屏幕截图:

ellipsoid SLERP

您所看到的是沿着中心线(青色)在两端的参考椭球体积(绿色)之间插入椭球体积(蓝色)。

问题陈述

左侧插值工作正常,形成平滑的管状结构。右侧的插值无法正常工作,导致扭曲。

导致此行为的原因是什么?如何更正?

如果有任何我可以做的澄清,请告诉我。

0 个答案:

没有答案