跳转到内容

矢量数学

矢量数学函数是全局方法,用于对数组执行操作,将其视为数学矢量。

除非另有说明,矢量数学方法对维度是宽松的,并返回与最大输入数组对象维度相同的值,缺失的元素用零填充。

与内置的 JavaScript 方法(如 Math.sin)不同,这些方法不使用 Math 前缀。

此表达式返回 [11, 22, 3]

add([10, 20], [1, 2, 3])

add(vec1, vec2)

将两个矢量相加。

参数类型描述
vec1Array要相加的第一个矢量。
vec2Array要相加的第二个矢量。

Array


clamp(value, limit1, limit2)

value 的每个分量限制在 limit1limit2 的对应值之间。

参数类型描述
valueNumber or Array要限制的值。
limit1Number or Array限制 value 的最小值。
limit2Number or Array限制 value 的最大值。

Number or Array

确保抖动值始终在 0-100 范围内:

const wiggled = wiggle(0.5, 500);
clamp(wiggled, 0, 500);

cross(vec1, vec2)

返回 vec1vec2 的矢量叉积。

有关更多信息,请参阅数学参考或 JavaScript 指南。

参数类型描述
vec1Array (2- or 3-dimensional)要计算叉积的第一个矢量。
vec2Array (2- or 3-dimensional)要计算叉积的第二个矢量。

Array (2- or 3-dimensional)


div(vec, amount)

将矢量的每个元素除以 amount

参数类型描述
vecArray要除以的矢量。
amountNumber要除以的值。

Array


dot(vec1, vec2)

返回矢量参数的点积(内积)。

参数Type描述
vec1Array要计算点积的第一个矢量。
vec2Array要计算点积的第二个矢量。

Number


length(vec[, point2])

返回矢量 vec 的长度。

如果提供了第二个参数,则将第一个参数视为点,并返回两点之间的距离。

参数Type描述
vecArray要归一化的矢量,或要测量的第一个点。
point2Array可选。要测量的第二个点。

Number

例如,将此表达式添加到摄像机的焦点距离属性,以将焦平面锁定到摄像机的兴趣点,从而使兴趣点保持清晰:

length(position, pointOfInterest)

lookAt(fromPoint, atPoint)

使图层从 fromPoint 看向 atPoint

返回值可用作 Orientation 属性的表达式,使图层的 z 轴指向 atPoint

此方法特别适用于摄像机和灯光。

::: tip 如果在摄像机上使用此表达式,请关闭自动定向。 :::

参数类型描述
fromPointArray (3-dimensional)要定向的图层的位置(在世界空间中)。
atPointArray (3-dimensional)要指向的点(在世界空间中)。

Array (3-dimensional)

将此表达式应用于聚光灯的 Orientation 属性,使灯光指向同一合成中编号为 1 的图层的锚点:

lookAt(position, thisComp.layer(1).position)

mul(vec, amount)

将矢量的每个元素乘以 amount

参数类型描述
vecArray要乘以的矢量。
amountNumber要乘以的值。

Array


normalize(vec)

归一化矢量,使其长度为 1.0

使用 normalize 方法是执行 div(vec, length(vec)) 操作的简写方式。

参数Type描述
vecArray要归一化的矢量。

Array


sub(vec1, vec2)

减去两个矢量。

参数Type描述
vec1Array第一个矢量。
vec2Array第二个矢量。

Array