数学 – 旋转插值

注意:我将以纯粹的简单性,弧度,度数,不同的零轴为单位呈现这个问题,问题本质上是一样的。

有没有人有任何关于旋转插值代码的想法?给定线性插值函数:Lerp(from,to,amount),其中amount为0 … 1,它返回一个从…到…之间的值。如何将这个相同的功能应用于0到360度之间的旋转内插?考虑到不应该在0和360之外返回度数。

给定单位圆度为度数:

其中从= 45和= 315,算法应该采取最小的路径到角度,即它应该通过零,到360,然后到315,而不是全部在90,180,270到315。

有没有一个很好的方式来实现这一点?或者它会是一个可怕的if()块的混乱?我错过了一些很好理解的标准方法吗?
任何帮助将不胜感激。

我知道这是2岁,但我最近一直在寻找同样的问题,我没有看到一个优雅的解决方案,没有ifs发布在这里,所以在这里:

    shortest_angle=((((end - start) % 360) + 540) % 360) - 180;
    return shortest_angle * amount;

而已

ps:当然,%是意义模数,而short_angle是保存整个插值角度的变量

http://stackoverflow.com/questions/2708476/rotation-interpolation

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:数学 – 旋转插值