Невозможность бокового передвижения объекта
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