【发布时间】:2017-01-19 02:33:09
【问题描述】:
我需要旋转插值的逻辑
public static float interPolateKeyForAngle(int startFrame, int endFrame, int currentFrame, float initialAngle, float endAngle)
{
int frameDif = endFrame - startFrame + 1;
int difCurrentFrame = Math.abs(startFrame - currentFrame) + 1;
//Calculate here
}
我知道第 0 位置的起始角度和第 10 位置的结束角度我需要计算第 1 到第 9 位置角度有人请帮助我。
谢谢。
【问题讨论】:
-
类似这样的东西:
return ((endAngle - initialAngle)*(currentFrame - startFrame))/(endFrame - startFrame) + initialAngle; -
我已经尝试过这个计算,它只需要顺时针旋转我需要计算最短路径并找到该方向的角度。
-
这可能意味着您需要将角度差归一化为 -Pi 和 Pi 之间。尝试使用
delta = endAngle - initialAngle; delta = fmod(delta + 3*Pi, 2*Pi) - Pi。 -
图片已添加......
-
图片中应该是0而不是180。 -- 您的关键情况似乎是,例如,从 20 度到 290 度时,您不想进入正 270 度,而是反向 270-360=-90 度。
标签: math matrix rotation interpolation angle