Kaba class mat4 ed

...

Syntax ed

class mat4
    var e: f32[4][4]

    # functions
    func pure inverse() -> mat4
    func pure project(v: vec3) -> vec3
    func pure transform(v: vec3) -> vec3
    func pure transform_normal(v: vec3) -> vec3
    func pure transpose() -> mat4
    func pure unproject(v: vec3) -> vec3
    func pure untransform(v: vec3) -> vec3
    func static pure perspective(fovy: f32, aspect: f32, z_near: f32, z_far: f32, z_sym: bool) -> mat4
    func static pure rotation(ang: vec3) -> mat4
    func static pure rotation(ang: Quaternion) -> mat4
    func static pure rotation_x(ang: f32) -> mat4
    func static pure rotation_y(ang: f32) -> mat4
    func static pure rotation_z(ang: f32) -> mat4
    func static pure scale(s_x: f32, s_y: f32, s_z: f32) -> mat4
    func static pure scale(s: vec3) -> mat4
    func static pure translation(trans: vec3) -> mat4

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

    # constants
    let ID: mat4

Functions ed

func pure inverse() -> mat4
...

func pure project(v: vec3) -> vec3
...

func pure transform(v: vec3) -> vec3
...

func pure transform_normal(v: vec3) -> vec3
...

func pure transpose() -> mat4
...

func pure unproject(v: vec3) -> vec3
...

func pure untransform(v: vec3) -> vec3
...

func static pure perspective(fovy: f32, aspect: f32, z_near: f32, z_far: f32, z_sym: bool) -> mat4
...

func static pure rotation(ang: vec3) -> mat4
...

func static pure rotation(ang: Quaternion) -> mat4
...

func static pure rotation_x(ang: f32) -> mat4
...

func static pure rotation_y(ang: f32) -> mat4
...

func static pure rotation_z(ang: f32) -> mat4
...

func static pure scale(s_x: f32, s_y: f32, s_z: f32) -> mat4
...

func static pure scale(s: vec3) -> mat4
...

func static pure translation(trans: vec3) -> mat4
...

Elements ed

var e: f32[4][4]
...