AE表达式:数学矢量方法(仅供参考)
add(vec1, vec2)
参数类型:vec1 和 vec2 是数组
返回类型:数组
返回 数组 vec1 和数组 vec2 同维度相加的值
add(3,4); //结果是 7
add([2,3],[4,5]); //结果是 [6,8]
sub(vec1, vec2)
参数类型:vec1 和 vec2 是数组
返回类型:数组
返回 数组 vec1 和数组 vec2 同维度相减的值
sub(3,4); //结果是 -1
sub([2,3],[4,5]); //结果是 [-2,-2]
mul(vec, amount)
参数类型:vec 是数组,amount 是数值
返回类型:数组
返回 数组 vec 的每个维度的值与数值 amount 相乘的值
mul(3,4); //结果是12
mul([2,3],4); //结果是 [8,12]
div(vec, amount)
参数类型:vec 是数组,amount 是数值
返回类型:数组
返回 数组 vec 的每个维度的值与数值 amount 相除的值
div(16,4); //结果是4
div([16,32],4); //结果是 [4,8]
clamp(value, limit1, limit2)
参数类型:value、limit1 和 limit2 是数值或数组
返回类型:数值 或 数组
限制 value 的每个维度的值在 limit1 和 limit2 相应维度值之间
var value //例如这个定义旋转属性值的变量
clamp(value, 100, 30); //则旋转value的值返回 100 至 30之间。Ps:如果此表达式作用于多维度属性上,则缺少的维度值用 0 代替
var value //例如这个定义位置属性值的变量
clamp(value, [15, 30],[60,80]); //位置value的值返回相应维度值之间。即[15-60之间,30-80之间]
dot(vec1, vec2)
参数类型:vec1 和 vec2 是数组
返回类型:数值
返回 vec1 和 vec2 矢量的点积
dot(5, 6); //返回结果是 30
dot([2,6],[4,2]); //返回结果是 20
点积的计算公式:
a = (a1,a2);
b = (b1,b2);
a * b = a1 * b1 + a2 * b2
cross(vec1, vec2)
参数类型:vec1 和 vec2 都是数组 [2 或 3]
返回类型:数组 [2 或 3]
返回 vec1 和 vec2 的矢量叉积
cross([1,5], [2,4]); //返回结果是 [0,0,-6] 。如果作用在2维度属性上,只取结果前2维度的值,忽略第3维度
cross([2,5,3],[2,4,3]); //返回结果是 [3,0,-2]
注释:
两个向量的叉乘,又叫向量积、外积、叉积,叉乘的运算结果是一个向量而不是一个标量。并且两个向量的叉积与这两个向量组成的坐标平面垂直。
向量 a 和向量 b :
a = (x1,y1,z1);
b = (x2,y2,z2);
其中:i , j , k 分别代表 x , y , z 的正向坐标
i = (1,0,0);
j = (0,1,0);
k = (0,0,1);
a和b的叉乘公式为:
a * b = (y1 z2 - y2 z1) i + (x1 z2 - x2 z1) j + (x1 y2 - x2 y1) k
normalize(vec) 等同 div(vec, length(vec))
参数类型:vec 是数组
返回类型:数组
归一化矢量,使其值控制在 1 和 1 范围之内
normalize(100); //返回结果是 1 。
normalize([-4,6]);
或
div([-4,6], length([4,6])); //返回结果是 [-0.6,0.8]
length(vec)
参数类型:vec 是数组
返回类型:数值
返回矢量 vec.的长度
length(10); //参数是数值10,返回结果是 10 。
length([10,5]); //参数是数组矢量有 x, y坐标 [10,5] ,返回结果是 11.2。
x 到 y 的长度 :
x=10,
y=5,
√(a² + b²) = 11.2
length(point1, point2) 等同 length(sub(point1, point2))
参数类型:point1 和 point2 是数组
返回类型:数值
返回 两矢量参数 point1, point2 之间的距离,[两数组同维度相减的值,再相减 ,其结果取绝对值]
length(-8, 5); //参数为数值时直接计算两点的差值再取绝对值 ,结果是 -8-5=-13 ,取绝对值13
length([-4,6],[2,2]); //参数为数组矢量有 x ,y 坐标时,结果是 -4-2=-6 和 6-2=4 , -6²-4²=-52 取绝对值 52 结果 √52 = 7.2
or
length(sub([-4,6], [2,2])) //作用同上
lookAt(fromPoint, atPoint)
参数类型:fromPoint 和 atPoint 是数组 [3]
返回类型:数组 [3]
参数 fromPoint 是您要定向的图层的世界空间中的位置,参数 atPoint 是您要将图层指向的世界空间中的点
lookAt(position, thisComp.layer(1).position);
// 图层:聚光灯 和 图层1 。在聚光灯的方向 Orientation 属性下添加此表达式,会将聚光灯的光点指向同合成中的图层1 的锚点。[聚光灯光点指向图层 1 锚点。移动图层 1 的锚点,聚光灯光点始终跟随]
网友评论