Невозможность бокового передвижения объекта
x - ширина
y - высота
z - длина
α - угол поворота объекта по оси X (плоскость zy)
β - угол поворота объекта по оси Y (плоскость zx)
Система координат локальная, т.е. центр координат соответствует центру объекта.
Направление объекта определяется как
(x: -sin(β)*cos(α), y: sin(α), z: -cos(β)*cos(α))
Применяя к направлению матрицу поворотов получается
(x: -(dx * cos(γ) + dz * sin(γ)), y: -dy * cos(γ), z: -(-dx * sin(γ) + dz * cos(γ)))
где dx, dy, dz
- координаты направления объекта, γ
- угол поворота.
Таким образом становится возможно движение объекта в стороны, отличные от его направления. Но при α=90°
становится невозможным передвижение объекта под углом γ=90°
и γ=270°
.
Нужно модифицировать формулу
(x: -(dx * cos(γ) + dz * sin(γ)), y: -dy * cos(γ), z: -(-dx * sin(γ) + dz * cos(γ)))
так, чтобы при α=90°
, β=0°
и γ=90°
x
был равен 1, а z
- 0, а при α=90°
, β=90°
и γ=90°
z
был равен 1, а x
- 0