Выражения. Метод length(vec) в After Effects

Метод length(vec) в After Effects используется для вычисления длины вектора. Этот метод может быть полезен, например, для определения расстояния между двумя точками или для нормализации вектора. Вектор может быть представлен как массив чисел (например, [x, y] для 2D или [x, y, z] для 3D).

Список эффектов и не только After Effects
Выражения After Effects список

Предположим, у вас есть вектор [x, y], и вы хотите вычислить его длину.

vec = [640, 360];
len = length(vec);

vec = transform.position;
len = length(vec).toFixed(0); // Получаем целые значения длины вектора

Если у вас есть две точки в 2D пространстве, вы можете вычислить расстояние между ними, используя length(vec).

point1 = [100, 200];
point2 = [300, 400];
vec = point2 — point1;
distance = length(vec);
// distance будет равно 282.842 (корень из ((300-100)^2 + (400-200)^2))

point1 = [940, 330];
point2 = [183, 345];
vec = point2 — point1;
distance = length(vec).toFixed(0);

Метод length(vec) также работает с 3D векторами.

vec = [100, 50, 75];
len = length(vec);
// len будет равно 132.288 (корень из (100^2 + 50^2 + 75^2))

Вы можете использовать length(vec) для создания эффекта, когда один слой «притягивается» к другому.

targetLayer = thisComp.layer(«Target Layer»); // Замените «Target Layer» на имя целевого слоя
strength = time * 100; // Сила притяжения
direction = targetLayer.position — position;
distance = length(direction);
position + direction * strength / distance;

targetLayer = thisComp.layer(«Слой-фигура 1»); // Я заменил название слоя на «Слой-фигура 1»
strength = time * 50; // Сила притяжения time как переменная
direction = targetLayer.position — position;
distance = length(direction);
position + direction * strength / distance;

Или вот так

targetLayer = thisComp.layer(«Слой-фигура 1»);
strength = time * 100; // Сила притяжения time как переменная
direction = targetLayer.position — position;
distance = length(direction);
position + direction / distance * strength;

Предположим, вы хотите, чтобы объект двигался к другой точке с определенной скоростью, но не дальше, чем расстояние между ними.

targetPosition = [200, 200];
currentPosition = transform.position;
vec = targetPosition — currentPosition;
distance = length(vec);
Speed = 100 * time; // пикселей в секунду
if (distance > Speed) {
currentPosition + normalize(vec) * Speed;
} else {
targetPosition;
}

В этом примере объект будет двигаться к целевой точке со скоростью 50 пикселей в секунду, но остановится, когда достигнет её.

Оператор if-else — это конструкция, которая позволяет выполнить один из двух блоков кода в зависимости от того, выполняется условие (выражение после if) как истинное или ложное. Если условие истинно, выполняется блок кода под if. Если условие ложно — else.