Кватернионы описывают вращение вокруг оси. <w,x,y,z>
будет вращаться вокруг оси <x,y,z>
некоторое количество в зависимости от баланса между величиной w
и величиной вектора.
<cos θ/2, x*sin θ/2, y*sin θ/2, z*sin θ/2>, where |<x, y, z>| = 1
Например, если вместо этого повернуть его в положительную ось Y, необходимо повернуть его на 90 ° вокруг оси X. Вектор будет <0, 1, 0>
, а кватернион будет <cos 90°, 0, sin 90°, 0>
= <0, 0, 1, 0>
.
Чтобы повернуть фигуру от положительной оси Z до вектора <x,y,z>
, вам нужно найти вектор вращения и угол поворота. Чтобы найти ось вращения, вы можете взять перекрестное произведение текущего вектора, и где вы хотите, чтобы это было.
Если он обращен к положительной оси Z, текущий вектор будет <0, 0, 1>
. Если вы хотите, чтобы он смотрел на <x,y,z>
, ось вращения была бы <0, 0, 1> x <x, y, z> = <-y, x, 0>
, а угол был бы arctan(sqrt(x^2+y^2),z)
. Кватернион становится
<cos(θ/2), -y*sin(θ/2), x*sin(θ/2), 0>, where θ = arctan(sqrt(x^2+y^2), z)