Kaba class Quaternion ed

...

Syntax ed

class Quaternion
    var w: f32
    var x: f32
    var y: f32
    var z: f32

    # constructors
    func mut __init__(ang: vec3)
    func mut __init__(axis: vec3, angle: f32)
    func mut __init__(m: mat4)

    # functions
    func pure angles() -> vec3
    func pure bar() -> Quaternion
    func mut normalize()
    func static pure drag(up: vec3, dang: vec3, reset_z: bool) -> Quaternion
    func static pure interpolate(q0: Quaternion, q1: Quaternion, t: f32) -> Quaternion

    # operators
    func pure __str__() -> string        # str(Quaternion) -> string
    func mut __assign__(b: Quaternion)   # Quaternion = Quaternion
    func pure __eq__(b: Quaternion) -> bool # Quaternion == Quaternion -> bool
    func pure __neq__(b: Quaternion) -> bool # Quaternion __neq__ Quaternion -> bool
    func pure __mul__(b: Quaternion) -> Quaternion # Quaternion * Quaternion -> Quaternion
    func pure __mul__(b: vec3) -> vec3   # Quaternion * vec3 -> vec3
    func mut __imul__(b: Quaternion)     # Quaternion *= Quaternion

    # constants
    let ID: Quaternion

Functions ed

func pure angles() -> vec3
...

func pure bar() -> Quaternion
...

func mut normalize()
...

func static pure drag(up: vec3, dang: vec3, reset_z: bool) -> Quaternion
...

func static pure interpolate(q0: Quaternion, q1: Quaternion, t: f32) -> Quaternion
...

Elements ed

var w: f32
...

var x: f32
...

var y: f32
...

var z: f32
...