Skip to content

Quaternion Type

quaternion.identity: quaternion -- quaternion(0, 0, 0, 1)
quaternion * quaternion: quaternion -- rotate quaternion by another quaternion
quaternion / quaternion: quaternion -- ...in the inverse direction
vector * quaternion: vector -- rotate vector by quaternion
vector / quaternion: vector -- rotate vector by inverse of quaternion
quaternion + quaternion: quaternion -- adds corresponding components
quaternion - quaternion: quaternion -- subtracts corresponding components
-quaternion: quaternion -- negates all components; Does not produce the inverse rotation!
quaternion.x: number
quaternion.y: number
quaternion.z: number
quaternion.s: number
function quaternion(x: number, y: number, z: number, s: number): quaternion
function quaternion.create(x: number, y: number, z: number, s: number): quaternion
function toquaternion(string: string): quaternion
function quaternion.normalize(q: quaternion): quaternion
function quaternion.magnitude(q: quaternion): number
function quaternion.conjugate(q: quaternion): quaternion
function quaternion.dot(a: quaternion, b: quaternion): number
function quaternion.slerp(a: quaternion, b: quaternion, t: number): quaternion
function quaternion.tofwd(q: quaternion): vector
function quaternion.toleft(q: quaternion): vector
function quaternion.toup(q: quaternion): vector
function ll.AngleBetween(a: quaternion, b: quaternion): number
function ll.Axes2Rot(forward: vector, left: vector, up: vector): quaternion
function ll.AxisAngle2Rot(axis: vector, angle: number): quaternion
function ll.Euler2Rot(v: vector): quaternion
function ll.Rot2Angle(q: quaternion): number
function ll.Rot2Axis(q: quaternion): vector
function ll.Rot2Euler(q: quaternion): vector
function ll.RotBetween(a: vector, b: vector): quaternion

Quaternions are also aliased as rotation in SLua, which includes torotation as an alias for toquaternion. This is a nomenclature holdover from LSL.