Sobes.tech
Middle

How exactly is a quaternion used for composing rotations?

sobes.tech AI

Answer from AI

Quaternions are used to represent and compose rotations in 3D space due to their compactness and the absence of gimbal lock issues.

Composition of rotations using quaternions is achieved through quaternion multiplication. If there are two rotations represented by quaternions q1 and q2, then the resulting rotation q = q2 * q1 means that q1 is applied first, then q2.

Quaternion multiplication is non-commutative, meaning the order is important.

Example in Go (using a library for quaternion operations):

import (
    "fmt"
    "gonum.org/v1/gonum/spatial/r3"
    "gonum.org/v1/gonum/spatial/quat"
)

func main() {
    // Rotation of 90 degrees around the Y axis
    q1 := quat.Rotation(r3.Vector{0, 1, 0}, 90 * (3.14159265 / 180))
    // Rotation of 45 degrees around the X axis
    q2 := quat.Rotation(r3.Vector{1, 0, 0}, 45 * (3.14159265 / 180))

    // Composition of rotations: first q1, then q2
    q := quat.Mul(q2, q1)

    fmt.Println("Combined quaternion:", q)
}

Thus, a quaternion allows for easy and efficient combination of multiple rotations into a single resulting rotation.