After Effects 表达式,用于获得三角形中的第 3 个点,该三角形具有 2 个点和所有已知长度(但可变)



注意事项A:这是一个个人项目,只是为了学习,所以我不需要更好的方法来剥这只猫的皮。

注意事项B:我已经看了一段时间了;它并没有把我带到我需要去的地方,因为它假设B和A在同一个y坐标上。我没有那种奢侈。

我正试图用表达式为"After Effects"中的角色构建一种IK链。对于腿(也包括手臂,但一步一个脚印(,我想我可以用这个公式来确定三角形中的点(臀部到膝盖到脚,3点,三角形(,但我从来都不擅长数学;我上一堂数学课是15年前。

我的小腿是臀部的父母,&脚是小牛的父母。所以髋关节的固定点基本上就是原点。我知道在下面的代码中会有一点toWorldtoComp的把戏,但我想先把实际的等式弄下来。

参考图像A
参考图像B

在下面,你可以看到我迄今为止的代码,以查看我引用的变量。考虑到这一点,以下是我认为应该使用的两个方程。

Math.pow(x, 2) + Math.pow(y, 2) = Math.pow(A2B, 2)
Math.pow((x - C.position[0]), 2) + Math.pow((y - C.position[1]), 2) = Math.pow(A2B, 2)

或更传统的语法

  • x∈2+y∈2=A2B∈2
  • (x-Cx(?2+(y-Cy(?2=B2C?2

如果我正在求解y的第一个方程,我会得到这个。y = A2B - x

显示我的作品

  • x∈2+y∈2=A2B∈2
  • y?2=A2B?2-x?2
  • y=√(A2B?2-x?2(
  • y=A2B-x

    我甚至不确定这是否正确

话虽如此,但这就是我迄今为止所做的工作。

// A is the hip
A = thisComp.layer("HIP");
// B is the calf
B = thisLayer;
// C is the foot
C = thisComp.layer("FOOT");
// A2B & B2C are both fixed lengths, based on the size of the layer.
A2B = A.height - (B.anchorPoint[1] * 2);
B2C = B.height - (C.anchorPoint[1] * 2);
A2C = length(A.position, C.position);
y = A2B - x;

这是我被卡住的地方。我把y代入第二个方程式&它变得很快。

Math.pow(((A2B - x) - C.position[0]), 2) + Math.pow(((A2B - x) - C.position[1]), 2) = Math.pow(B2C, 2)

  • ((A2B-x(-Cx(?2+((A2B-x(-Cy(?2=B2C?2

试图为x解决这个问题,这样我就可以把它插回y中,这让我很逃避;它埋在一个括号里&指数的一部分。我无法理解如何将X从熊陷阱中拉出。

此外,如果用传统数学语法写出答案更容易,我也可以(大部分(阅读。

最后,正如我上面所说,我已经十多年没有上过数学课了,所以如果我的术语错了,或者这很容易(如果你必须嘲笑我,请私下里做……(或者其他类似的事情,我提前道歉。

帮帮我,欧比旺,你是我唯一的希望。

x^2 + y^2 = a^2    (1)
(x-cx)^2 + (y-cy)^2 = c^2  
so
x^2 - 2*x*cx + cx^2 + y^2 - 2*y*cy + cy^2 = c^2   (2)
subtract (2) from (1)
2*x*cx - cx^2 + 2*y*cy - cy^2 = a^2 - c^2
y = (a^2 - c^2 - 2*x*cx + cx^2 + cy^2) / (2*cy)     (3)

将(3(中的y代入(1(,并求解x的二次方程——如果可能的话,你会得到两个坐标

相关内容

最新更新