У меня есть нормализованный 2D-вектор, который я использую для поворота других 2D-векторов.В одном случае он указывает «вращение» (или «угловой момент») и используется для поворота «ориентации» простого многоугольника.Мой векторный класс содержит этот метод:
rotateByXY(x, y) {
let rotX = x * this.x - y * this.y;
let rotY = y * this.x + x * this.y;
this.x = rotX;
this.y = rotY;
}
Пока что все это эффективно и не использует никаких триггеров.
Однако я хочу, чтобы «вращение» со временем затухало.Это означает, что угол вращения должен стремиться к нулю.И здесь я в растерянности относительно того, как сделать это без дорогих триггеров, как это:
let angle = Math.atan2(spin.y, spin.x);
angle *= SPIN_DECAY;
spin = new Vector2D(Math.cos(angle), Math.sin(angle));
Есть ли лучший / более быстрый способ сделать это?