如何计算从0到360的旋转?

时间:2017-08-28 19:38:39

标签: expression after-effects

我正在尝试在After Effects中编写表达式,以显示对象的旋转度。问题是,当元素逆时针旋转时,它不会从360开始,而是会倒计时到0。它会显示从0到负数的负数。

顺时针旋转时,它将从0开始,经过360后,它将从0重新开始。

如何以正确的方式解决逆时针旋转?

x = Math.floor(thisComp.layer("Ellipse 2").transform.rotation)


if (x >= 0) x + "°"
if (x >= 360) x%360 + "°"

代码应用于文本图层,将显示元素的正确度数" Ellipse 2"。

3 个答案:

答案 0 :(得分:0)

您可以使用以下函数将值转换为正值以确保逻辑正常工作

if (x<0)
   flag true;
x = Maths.abs(x)
if flag
    x = 360-x

答案 1 :(得分:0)

现在回答。由于360 == 0 mod 360,你想要一个[0,360]的x。 如果参数为负,则模运算符可能返回负值。 你必须为你的编程语言测试它。

我假设-1 % 5 == -1,因此模运算符不会改变符号。然后

x = Math.floor(thisComp.layer("Ellipse 2").transform.rotation)

if (x >= 0) x%360 + "°"
if (x < 0) x = x%360 + 360 + "°"

应该做的伎俩。 如果模运算符返回正值,则可以省略最后一个语句中的“+ 360”。

答案 2 :(得分:0)

这应该这样做:

r = thisComp.layer("Ellipse 2").transform.rotation;
x = r%360;
if (x<0) x+= 360;
Math.floor(x) + "°";