glmaths 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md ADDED
@@ -0,0 +1,952 @@
1
+ # glmaths
2
+
3
+ Linear algebra functions for working with WebGL in TypeScript, aimed to be looking similar to GLSL code. Inspired by [`gl-matrix`](https://glmatrix.net/).
4
+
5
+ ### How to install
6
+
7
+ You can take [`dist/glmaths.min.js`](https://github.com/dkaraush/glmaths/blob/main/dist/glmaths.min.js), or install with npm:
8
+ ```
9
+ npm install glmaths
10
+ ```
11
+ There are also `dist/cjs/` and `dist/esm/` builds for different import formats.
12
+
13
+ ### Usage Example
14
+
15
+ ```ts
16
+ // from glmaths[.min].js:
17
+ const { vec3, vec4, mat4, quat } = glmaths
18
+ // from npm:
19
+ import { vec3, vec4, mat4, quat } from 'glmaths'
20
+
21
+ const vertex = vec3(2, 1, 0)
22
+ vertex.rotateX(Math.PI / 3, vec3(0.5))
23
+
24
+ const proj = mat4.perspective(Math.PI / 2, 16 / 9, 0.001, 1000)
25
+ const view = mat4.lookAt(vec3(0, 0, -10), vec3(0), vec3(0, 0, 1))
26
+ const ndc = vertex.transformMat4(proj.mult(view))
27
+
28
+ // All types extend Float32Array, so you can pass them to webgl
29
+ gl.uniformMatrix4fv(u_proj, false, proj)
30
+ ```
31
+
32
+ ## Swizzles!
33
+
34
+ `.xyzw`, `.rgba`, `.stpq`, `.uv` swizzles are supported on `vec2`, `vec3`, `vec4`.
35
+
36
+ `0` and `1` on not first symbol are also supported, f.ex: `a.x0z`, `b.rgb1`, `c.uv01`.
37
+
38
+ ## Vector packing
39
+
40
+ You can pass vector in a vector, just like in GLSL: `vec4(vec2(0, 1), 2, 3)`
41
+
42
+ ## Operator Overloading!
43
+
44
+ If you code in TypeScript, you can opt for [a fork of TypeScript](https://github.com/dkaraush/Typescript) to enable operator overloading in code! `glmaths` implements functions needed to overload these operators: `+ - * / % == ===`
45
+
46
+ ```ts
47
+ mat4.perspective(Math.PI / 2) * vec4(vec2(1, 2) / 4.0 + 2.0, 1.0, 1.0)
48
+ ```
49
+ _With this done, it totally looks like GLSL! :D_
50
+
51
+ ## `out` argument
52
+
53
+ Like `gl-matrix`, all functions have `out` argument, but it is located at the end as an optional argument.
54
+ ```ts
55
+ const a = vec3(0, 1, 2)
56
+ const b = vec3(2, 3, 4)
57
+ const c = vec3()
58
+ a.plus(b, /* out = */ c)
59
+ ```
60
+
61
+ By default, default value of `out` is always a new clone of a structure. Not using `out` will create overhead to GC leading to worse performance, so for production pre-allocating structures and passing them in `out` argument is recommended.
62
+
63
+ You can also opt for modifying existing structure when using instance methods, by setting `glmaths.ALWAYS_COPY = false`. This way every operation, by default, will update its own structure. This might bring confusion, when saving structures in variables, as it modifies itself, hence why this is not the default behaviour. Example below:
64
+
65
+ ```ts
66
+ glmaths.ALWAYS_COPY = false
67
+ const a = vec3(0, 1, 2)
68
+ const b = a.plus(5)
69
+ // a.x === 5
70
+ ```
71
+
72
+ ## Docs
73
+
74
+ - **EPSILON** = `0.000001` — used in `a.equals(b)` functions
75
+ - **RANDOM** = `Math.random` — used in `.random()` functions
76
+ - **ANGLE_ORDER** = `'zyx'` — used in [`Quat.fromEuler`](https://github.com/dkaraush/glmaths/blob/main/src/quat.ts#L482)
77
+ - **[ALWAYS_COPY](#out-argument)** = `false`
78
+ - **LEFT_HANDED** = `false` — set to true for left handed geometry, used in `mat4`
79
+
80
+ <!-- These are automatically generated, look at ./docs.js -->
81
+ <!-- DOCS -->
82
+
83
+ ### [mat2](https://github.com/dkaraush/glmaths/blob/main/src/mat2.ts#L8)
84
+ - **[clone](https://github.com/dkaraush/glmaths/blob/main/src/mat2.ts#L35)**(): [mat2](#mat2)
85
+ - **[transpose](https://github.com/dkaraush/glmaths/blob/main/src/mat2.ts#L45)**(out?: [mat2](#mat2)): [mat2](#mat2)
86
+ - **[invert](https://github.com/dkaraush/glmaths/blob/main/src/mat2.ts#L65)**(out?: [mat2](#mat2)): [mat2](#mat2) | null
87
+ - **[adjoint](https://github.com/dkaraush/glmaths/blob/main/src/mat2.ts#L86)**(out?: [mat2](#mat2)): [mat2](#mat2)
88
+ - **[determinant](https://github.com/dkaraush/glmaths/blob/main/src/mat2.ts#L100)**(): number
89
+ - **[rotate](https://github.com/dkaraush/glmaths/blob/main/src/mat2.ts#L111)**(rad: number, out?: [mat2](#mat2)): [mat2](#mat2)
90
+ - **[scale](https://github.com/dkaraush/glmaths/blob/main/src/mat2.ts#L128)**(v: [vec2](#vec2), out?: [mat2](#mat2)): [mat2](#mat2)
91
+ - _static_ **[fromRotation](https://github.com/dkaraush/glmaths/blob/main/src/mat2.ts#L144)**(rad: number, out?: [mat2](#mat2)): [mat2](#mat2)
92
+ - _static_ **[fromScaling](https://github.com/dkaraush/glmaths/blob/main/src/mat2.ts#L160)**(v: [vec2](#vec2), out?: [mat2](#mat2)): [mat2](#mat2)
93
+ - **[toString](https://github.com/dkaraush/glmaths/blob/main/src/mat2.ts#L172)**(): string
94
+ - **[str](https://github.com/dkaraush/glmaths/blob/main/src/mat2.ts#L311)** → **[toString](https://github.com/dkaraush/glmaths/blob/main/src/mat2.ts#L172)**
95
+ - **[frob](https://github.com/dkaraush/glmaths/blob/main/src/mat2.ts#L180)**(): number
96
+ - **[LDU](https://github.com/dkaraush/glmaths/blob/main/src/mat2.ts#L191)**(L?: [mat2](#mat2), D?: [mat2](#mat2), U?: [mat2](#mat2)): mat2[]
97
+ - **[plus](https://github.com/dkaraush/glmaths/blob/main/src/mat2.ts#L206)**(b: [mat2](#mat2), out?: [mat2](#mat2)): [mat2](#mat2)
98
+ - **[add](https://github.com/dkaraush/glmaths/blob/main/src/mat2.ts#L304)** → **[plus](https://github.com/dkaraush/glmaths/blob/main/src/mat2.ts#L206)**
99
+ - **[minus](https://github.com/dkaraush/glmaths/blob/main/src/mat2.ts#L221)**(b: [mat2](#mat2), out?: [mat2](#mat2)): [mat2](#mat2)
100
+ - **[sub](https://github.com/dkaraush/glmaths/blob/main/src/mat2.ts#L305)** → **[minus](https://github.com/dkaraush/glmaths/blob/main/src/mat2.ts#L221)**
101
+ - **[subtract](https://github.com/dkaraush/glmaths/blob/main/src/mat2.ts#L306)** → **[minus](https://github.com/dkaraush/glmaths/blob/main/src/mat2.ts#L221)**
102
+ - **[multiply](https://github.com/dkaraush/glmaths/blob/main/src/mat2.ts#L238)**(b: [mat2](#mat2) | [vec2](#vec2), out?: [mat2](#mat2)): [mat2](#mat2) | [vec2](#vec2)
103
+ - **[mul](https://github.com/dkaraush/glmaths/blob/main/src/mat2.ts#L307)** → **[multiply](https://github.com/dkaraush/glmaths/blob/main/src/mat2.ts#L238)**
104
+ - **[mult](https://github.com/dkaraush/glmaths/blob/main/src/mat2.ts#L308)** → **[multiply](https://github.com/dkaraush/glmaths/blob/main/src/mat2.ts#L238)**
105
+ - **[times](https://github.com/dkaraush/glmaths/blob/main/src/mat2.ts#L309)** → **[multiply](https://github.com/dkaraush/glmaths/blob/main/src/mat2.ts#L238)**
106
+ - **[exactEquals](https://github.com/dkaraush/glmaths/blob/main/src/mat2.ts#L257)**(b: [mat2](#mat2)): boolean
107
+ - **[equals](https://github.com/dkaraush/glmaths/blob/main/src/mat2.ts#L266)**(b: [mat2](#mat2)): boolean
108
+ - **[scaleScalar](https://github.com/dkaraush/glmaths/blob/main/src/mat2.ts#L280)**(b: number, out?: [mat2](#mat2)): [mat2](#mat2)
109
+ - **[multiplyScalar](https://github.com/dkaraush/glmaths/blob/main/src/mat2.ts#L310)** → **[scaleScalar](https://github.com/dkaraush/glmaths/blob/main/src/mat2.ts#L280)**
110
+
111
+
112
+
113
+ ### [mat2x3](https://github.com/dkaraush/glmaths/blob/main/src/mat2x3.ts#L8)
114
+ - **[invert](https://github.com/dkaraush/glmaths/blob/main/src/mat2x3.ts#L40)**(out?: [mat2x3](#mat2x3)): [mat2x3](#mat2x3) | null
115
+ - **[determinant](https://github.com/dkaraush/glmaths/blob/main/src/mat2x3.ts#L60)**(): number
116
+ - **[rotate](https://github.com/dkaraush/glmaths/blob/main/src/mat2x3.ts#L71)**(rad: number, out?: [mat2x3](#mat2x3)): [mat2x3](#mat2x3)
117
+ - **[scale](https://github.com/dkaraush/glmaths/blob/main/src/mat2x3.ts#L91)**(v: [vec2](#vec2), out?: [mat2x3](#mat2x3)): [mat2x3](#mat2x3)
118
+ - **[translate](https://github.com/dkaraush/glmaths/blob/main/src/mat2x3.ts#L110)**(v: [vec2](#vec2), out?: [mat2x3](#mat2x3)): [mat2x3](#mat2x3)
119
+ - _static_ **[fromRotation](https://github.com/dkaraush/glmaths/blob/main/src/mat2x3.ts#L129)**(rad: number, out?: [mat2x3](#mat2x3)): [mat2x3](#mat2x3)
120
+ - _static_ **[fromScaling](https://github.com/dkaraush/glmaths/blob/main/src/mat2x3.ts#L146)**(v: [vec2](#vec2), out?: [mat2x3](#mat2x3)): [mat2x3](#mat2x3)
121
+ - _static_ **[fromTranslation](https://github.com/dkaraush/glmaths/blob/main/src/mat2x3.ts#L161)**(v: [vec2](#vec2), out?: [mat2x3](#mat2x3)): [mat2x3](#mat2x3)
122
+ - **[toString](https://github.com/dkaraush/glmaths/blob/main/src/mat2x3.ts#L174)**(): string
123
+ - **[str](https://github.com/dkaraush/glmaths/blob/main/src/mat2x3.ts#L320)** → **[toString](https://github.com/dkaraush/glmaths/blob/main/src/mat2x3.ts#L174)**
124
+ - **[frob](https://github.com/dkaraush/glmaths/blob/main/src/mat2x3.ts#L183)**(): number
125
+ - **[plus](https://github.com/dkaraush/glmaths/blob/main/src/mat2x3.ts#L194)**(b: [mat2x3](#mat2x3), out?: [mat2x3](#mat2x3)): [mat2x3](#mat2x3)
126
+ - **[add](https://github.com/dkaraush/glmaths/blob/main/src/mat2x3.ts#L314)** → **[plus](https://github.com/dkaraush/glmaths/blob/main/src/mat2x3.ts#L194)**
127
+ - **[minus](https://github.com/dkaraush/glmaths/blob/main/src/mat2x3.ts#L211)**(b: [mat2x3](#mat2x3), out?: [mat2x3](#mat2x3)): [mat2x3](#mat2x3)
128
+ - **[sub](https://github.com/dkaraush/glmaths/blob/main/src/mat2x3.ts#L315)** → **[minus](https://github.com/dkaraush/glmaths/blob/main/src/mat2x3.ts#L211)**
129
+ - **[subtract](https://github.com/dkaraush/glmaths/blob/main/src/mat2x3.ts#L316)** → **[minus](https://github.com/dkaraush/glmaths/blob/main/src/mat2x3.ts#L211)**
130
+ - **[multiply](https://github.com/dkaraush/glmaths/blob/main/src/mat2x3.ts#L230)**(b: [vec2](#vec2) | [mat2x3](#mat2x3), out?: [mat2x3](#mat2x3)): [vec2](#vec2) | [mat2x3](#mat2x3)
131
+ - **[mul](https://github.com/dkaraush/glmaths/blob/main/src/mat2x3.ts#L317)** → **[multiply](https://github.com/dkaraush/glmaths/blob/main/src/mat2x3.ts#L230)**
132
+ - **[mult](https://github.com/dkaraush/glmaths/blob/main/src/mat2x3.ts#L318)** → **[multiply](https://github.com/dkaraush/glmaths/blob/main/src/mat2x3.ts#L230)**
133
+ - **[times](https://github.com/dkaraush/glmaths/blob/main/src/mat2x3.ts#L319)** → **[multiply](https://github.com/dkaraush/glmaths/blob/main/src/mat2x3.ts#L230)**
134
+ - **[equals](https://github.com/dkaraush/glmaths/blob/main/src/mat2x3.ts#L251)**(b: [mat2x3](#mat2x3)): boolean
135
+ - **[exactEquals](https://github.com/dkaraush/glmaths/blob/main/src/mat2x3.ts#L263)**(b: [mat2x3](#mat2x3)): boolean
136
+ - **[scaleScalar](https://github.com/dkaraush/glmaths/blob/main/src/mat2x3.ts#L277)**(b: number, out?: [mat2x3](#mat2x3)): [mat2x3](#mat2x3)
137
+ - **[multiplyScalar](https://github.com/dkaraush/glmaths/blob/main/src/mat2x3.ts#L321)** → **[scaleScalar](https://github.com/dkaraush/glmaths/blob/main/src/mat2x3.ts#L277)**
138
+ - **[clone](https://github.com/dkaraush/glmaths/blob/main/src/mat2x3.ts#L292)**(): [mat2x3](#mat2x3)
139
+
140
+
141
+
142
+ ### [mat3](https://github.com/dkaraush/glmaths/blob/main/src/mat3.ts#L13)
143
+ - **[clone](https://github.com/dkaraush/glmaths/blob/main/src/mat3.ts#L50)**(): [mat3](#mat3)
144
+ - **[transpose](https://github.com/dkaraush/glmaths/blob/main/src/mat3.ts#L60)**(out?: [mat3](#mat3)): [mat3](#mat3)
145
+ - **[invert](https://github.com/dkaraush/glmaths/blob/main/src/mat3.ts#L89)**(out?: [mat3](#mat3)): [mat3](#mat3) | null
146
+ - **[adjoint](https://github.com/dkaraush/glmaths/blob/main/src/mat3.ts#L120)**(out?: [mat3](#mat3)): [mat3](#mat3)
147
+ - **[determinant](https://github.com/dkaraush/glmaths/blob/main/src/mat3.ts#L142)**(): number
148
+ - **[multiply](https://github.com/dkaraush/glmaths/blob/main/src/mat3.ts#L159)**(b: [vec2](#vec2) | [vec3](#vec3) | [mat3](#mat3), out?: [mat3](#mat3)): [vec2](#vec2) | [vec3](#vec3) | [mat3](#mat3)
149
+ - **[mul](https://github.com/dkaraush/glmaths/blob/main/src/mat3.ts#L611)** → **[multiply](https://github.com/dkaraush/glmaths/blob/main/src/mat3.ts#L159)**
150
+ - **[mult](https://github.com/dkaraush/glmaths/blob/main/src/mat3.ts#L612)** → **[multiply](https://github.com/dkaraush/glmaths/blob/main/src/mat3.ts#L159)**
151
+ - **[times](https://github.com/dkaraush/glmaths/blob/main/src/mat3.ts#L613)** → **[multiply](https://github.com/dkaraush/glmaths/blob/main/src/mat3.ts#L159)**
152
+ - **[translate](https://github.com/dkaraush/glmaths/blob/main/src/mat3.ts#L192)**(v: [vec2](#vec2), out?: [mat3](#mat3)): [mat3](#mat3)
153
+ - **[rotate](https://github.com/dkaraush/glmaths/blob/main/src/mat3.ts#L217)**(rad: number, out?: [mat3](#mat3)): [mat3](#mat3)
154
+ - **[scale](https://github.com/dkaraush/glmaths/blob/main/src/mat3.ts#L242)**(v: [vec2](#vec2), out?: [mat3](#mat3)): [mat3](#mat3)
155
+ - _static_ **[fromTranslation](https://github.com/dkaraush/glmaths/blob/main/src/mat3.ts#L263)**(v: [vec2](#vec2), out?: [mat3](#mat3)): [mat3](#mat3)
156
+ - _static_ **[fromRotation](https://github.com/dkaraush/glmaths/blob/main/src/mat3.ts#L283)**(rad: number, out?: [mat3](#mat3)): [mat3](#mat3)
157
+ - _static_ **[fromScaling](https://github.com/dkaraush/glmaths/blob/main/src/mat3.ts#L304)**(v: [vec2](#vec2), out?: [mat3](#mat3)): [mat3](#mat3)
158
+ - _static_ **[fromMat2x3](https://github.com/dkaraush/glmaths/blob/main/src/mat3.ts#L324)**(a: [mat2x3](#mat2x3), out?: [mat3](#mat3)): [mat3](#mat3)
159
+ - _static_ **[fromMat2d](https://github.com/dkaraush/glmaths/blob/main/src/mat3.ts#L606)** → **[fromMat2x3](https://github.com/dkaraush/glmaths/blob/main/src/mat3.ts#L324)**
160
+ - _static_ **[fromQuat](https://github.com/dkaraush/glmaths/blob/main/src/mat3.ts#L345)**(q: [quat](#quat), out?: [mat3](#mat3)): [mat3](#mat3)
161
+ - _static_ **[normalFromMat4](https://github.com/dkaraush/glmaths/blob/main/src/mat3.ts#L373)**(a: [mat4](#mat4), out?: [mat3](#mat3)): [mat3](#mat3) | null
162
+ - _static_ **[fromMat4](https://github.com/dkaraush/glmaths/blob/main/src/mat3.ts#L415)**(a: [mat4](#mat4), out?: [mat3](#mat3)): [mat3](#mat3)
163
+ - _static_ **[fromMat4x4](https://github.com/dkaraush/glmaths/blob/main/src/mat3.ts#L607)** → **[fromMat4](https://github.com/dkaraush/glmaths/blob/main/src/mat3.ts#L415)**
164
+ - _static_ **[projection](https://github.com/dkaraush/glmaths/blob/main/src/mat3.ts#L437)**(width: number, height: number, out?: [mat3](#mat3)): [mat3](#mat3)
165
+ - **[frob](https://github.com/dkaraush/glmaths/blob/main/src/mat3.ts#L455)**(): number
166
+ - **[plus](https://github.com/dkaraush/glmaths/blob/main/src/mat3.ts#L470)**(b: [mat3](#mat3), out?: [mat3](#mat3)): [mat3](#mat3)
167
+ - **[add](https://github.com/dkaraush/glmaths/blob/main/src/mat3.ts#L608)** → **[plus](https://github.com/dkaraush/glmaths/blob/main/src/mat3.ts#L470)**
168
+ - **[minus](https://github.com/dkaraush/glmaths/blob/main/src/mat3.ts#L490)**(b: [mat3](#mat3), out?: [mat3](#mat3)): [mat3](#mat3)
169
+ - **[sub](https://github.com/dkaraush/glmaths/blob/main/src/mat3.ts#L609)** → **[minus](https://github.com/dkaraush/glmaths/blob/main/src/mat3.ts#L490)**
170
+ - **[subtract](https://github.com/dkaraush/glmaths/blob/main/src/mat3.ts#L610)** → **[minus](https://github.com/dkaraush/glmaths/blob/main/src/mat3.ts#L490)**
171
+ - **[scaleScalar](https://github.com/dkaraush/glmaths/blob/main/src/mat3.ts#L510)**(b: number, out?: [mat3](#mat3)): [mat3](#mat3)
172
+ - **[multiplyScalar](https://github.com/dkaraush/glmaths/blob/main/src/mat3.ts#L615)** → **[scaleScalar](https://github.com/dkaraush/glmaths/blob/main/src/mat3.ts#L510)**
173
+ - **[multiplyScalarAndAdd](https://github.com/dkaraush/glmaths/blob/main/src/mat3.ts#L531)**(b: [mat3](#mat3), scale: number, out?: [mat3](#mat3)): [mat3](#mat3)
174
+ - **[toString](https://github.com/dkaraush/glmaths/blob/main/src/mat3.ts#L549)**(): string
175
+ - **[str](https://github.com/dkaraush/glmaths/blob/main/src/mat3.ts#L614)** → **[toString](https://github.com/dkaraush/glmaths/blob/main/src/mat3.ts#L549)**
176
+ - **[exactEquals](https://github.com/dkaraush/glmaths/blob/main/src/mat3.ts#L559)**(b: [mat3](#mat3)): boolean
177
+ - **[equals](https://github.com/dkaraush/glmaths/blob/main/src/mat3.ts#L579)**(b: [mat3](#mat3)): boolean
178
+
179
+
180
+
181
+ ### [mat4](https://github.com/dkaraush/glmaths/blob/main/src/mat4.ts#L12)
182
+ - **[clone](https://github.com/dkaraush/glmaths/blob/main/src/mat4.ts#L68)**(): [mat4](#mat4)
183
+ - **[transpose](https://github.com/dkaraush/glmaths/blob/main/src/mat4.ts#L83)**(out?: [mat4](#mat4)): [mat4](#mat4)
184
+ - **[invert](https://github.com/dkaraush/glmaths/blob/main/src/mat4.ts#L114)**(out?: [mat4](#mat4)): [mat4](#mat4) | null
185
+ - **[adjoint](https://github.com/dkaraush/glmaths/blob/main/src/mat4.ts#L162)**(out?: [mat4](#mat4)): [mat4](#mat4)
186
+ - **[determinant](https://github.com/dkaraush/glmaths/blob/main/src/mat4.ts#L205)**(): number
187
+ - **[multiply](https://github.com/dkaraush/glmaths/blob/main/src/mat4.ts#L231)**(b: [vec2](#vec2) | [vec3](#vec3) | [vec4](#vec4) | [mat4](#mat4), out?: [mat4](#mat4)): [vec2](#vec2) | [vec3](#vec3) | [vec4](#vec4) | [mat4](#mat4)
188
+ - **[mul](https://github.com/dkaraush/glmaths/blob/main/src/mat4.ts#L1301)** → **[multiply](https://github.com/dkaraush/glmaths/blob/main/src/mat4.ts#L231)**
189
+ - **[mult](https://github.com/dkaraush/glmaths/blob/main/src/mat4.ts#L1302)** → **[multiply](https://github.com/dkaraush/glmaths/blob/main/src/mat4.ts#L231)**
190
+ - **[times](https://github.com/dkaraush/glmaths/blob/main/src/mat4.ts#L1303)** → **[multiply](https://github.com/dkaraush/glmaths/blob/main/src/mat4.ts#L231)**
191
+ - **[translate](https://github.com/dkaraush/glmaths/blob/main/src/mat4.ts#L277)**(v: [vec3](#vec3), out?: [mat4](#mat4)): [mat4](#mat4)
192
+ - **[scale](https://github.com/dkaraush/glmaths/blob/main/src/mat4.ts#L306)**(v: [vec3](#vec3), out?: [mat4](#mat4)): [mat4](#mat4)
193
+ - **[rotate](https://github.com/dkaraush/glmaths/blob/main/src/mat4.ts#L323)**(rad: number, axis: [vec3](#vec3), out?: [mat4](#mat4)): [mat4](#mat4) | null
194
+ - **[rotateX](https://github.com/dkaraush/glmaths/blob/main/src/mat4.ts#L362)**(rad: number, out?: [mat4](#mat4)): [mat4](#mat4)
195
+ - **[rotateY](https://github.com/dkaraush/glmaths/blob/main/src/mat4.ts#L386)**(rad: number, out?: [mat4](#mat4)): [mat4](#mat4)
196
+ - **[rotateZ](https://github.com/dkaraush/glmaths/blob/main/src/mat4.ts#L410)**(rad: number, out?: [mat4](#mat4)): [mat4](#mat4)
197
+ - **[getTranslation](https://github.com/dkaraush/glmaths/blob/main/src/mat4.ts#L433)**(out?: [vec3](#vec3)): [vec3](#vec3)
198
+ - **[getScaling](https://github.com/dkaraush/glmaths/blob/main/src/mat4.ts#L444)**(out?: [vec3](#vec3)): [vec3](#vec3)
199
+ - **[getRotation](https://github.com/dkaraush/glmaths/blob/main/src/mat4.ts#L463)**(out?: [quat](#quat)): [quat](#quat)
200
+ - **[decompose](https://github.com/dkaraush/glmaths/blob/main/src/mat4.ts#L510)**(out_r?: [quat](#quat), out_t?: [vec3](#vec3), out_s?: [vec3](#vec3)): [quat](#quat)
201
+ - _static_ **[fromTranslation](https://github.com/dkaraush/glmaths/blob/main/src/mat4.ts#L565)**(v: [vec3](#vec3), out?: [mat4](#mat4)): [mat4](#mat4)
202
+ - _static_ **[fromScaling](https://github.com/dkaraush/glmaths/blob/main/src/mat4.ts#L581)**(v: [vec3](#vec3), out?: [mat4](#mat4)): [mat4](#mat4)
203
+ - _static_ **[fromRotation](https://github.com/dkaraush/glmaths/blob/main/src/mat4.ts#L598)**(rad: number, axis: [vec3](#vec3), out?: [mat4](#mat4)): [mat4](#mat4) | null
204
+ - _static_ **[fromXRotation](https://github.com/dkaraush/glmaths/blob/main/src/mat4.ts#L622)**(rad: number, out?: [mat4](#mat4)): [mat4](#mat4)
205
+ - _static_ **[fromYRotation](https://github.com/dkaraush/glmaths/blob/main/src/mat4.ts#L641)**(rad: number, out?: [mat4](#mat4)): [mat4](#mat4)
206
+ - _static_ **[fromZRotation](https://github.com/dkaraush/glmaths/blob/main/src/mat4.ts#L659)**(rad: number, out?: [mat4](#mat4)): [mat4](#mat4)
207
+ - _static_ **[fromRotationTranslation](https://github.com/dkaraush/glmaths/blob/main/src/mat4.ts#L678)**(q: [quat](#quat), v: [vec3](#vec3), out?: [mat4](#mat4)): [mat4](#mat4)
208
+ - _static_ **[fromRotationTranslationScale](https://github.com/dkaraush/glmaths/blob/main/src/mat4.ts#L702)**(q: [quat](#quat), v: [vec3](#vec3), s: [vec3](#vec3), out?: [mat4](#mat4)): [mat4](#mat4)
209
+ - _static_ **[fromRotationTranslationScaleOrigin](https://github.com/dkaraush/glmaths/blob/main/src/mat4.ts#L728)**(q: [quat](#quat), v: [vec3](#vec3), s: [vec3](#vec3), o: [vec3](#vec3), out?: [mat4](#mat4)): [mat4](#mat4)
210
+ - _static_ **[fromQuat](https://github.com/dkaraush/glmaths/blob/main/src/mat4.ts#L765)**(q: [quat](#quat), out?: [mat4](#mat4)): [mat4](#mat4)
211
+ - _static_ **[frustum](https://github.com/dkaraush/glmaths/blob/main/src/mat4.ts#L792)**(left: number, right: number, bottom: number, top: number, near: number, far: number, out?: [mat4](#mat4)): [mat4](#mat4)
212
+ - _static_ **[perspectiveNO](https://github.com/dkaraush/glmaths/blob/main/src/mat4.ts#L817)**(fovy: number, aspect: number, near: number, far: number | null, out?: [mat4](#mat4)): [mat4](#mat4)
213
+ - _static_ **[perspectiveZO](https://github.com/dkaraush/glmaths/blob/main/src/mat4.ts#L848)**(fovy: number, aspect: number, near: number, far: number | null, out?: [mat4](#mat4)): [mat4](#mat4)
214
+ - _static_ **[perspectiveFromFieldOfView](https://github.com/dkaraush/glmaths/blob/main/src/mat4.ts#L875)**(fov: { updegrees: number; downdegrees: number; leftdegrees: number; rightdegrees: number; }, near: number, far: number, out?: [mat4](#mat4)): [mat4](#mat4)
215
+ - _static_ **[orthoNO](https://github.com/dkaraush/glmaths/blob/main/src/mat4.ts#L910)**(left: number, right: number, bottom: number, top: number, near: number, far: number, out?: [mat4](#mat4)): [mat4](#mat4)
216
+ - _static_ **[orthoZO](https://github.com/dkaraush/glmaths/blob/main/src/mat4.ts#L937)**(left: number, right: number, bottom: number, top: number, near: number, far: number, out?: [mat4](#mat4)): [mat4](#mat4)
217
+ - _static_ **[lookAt](https://github.com/dkaraush/glmaths/blob/main/src/mat4.ts#L959)**(eye: [vec3](#vec3), center: [vec3](#vec3), up: [vec3](#vec3), out?: [mat4](#mat4)): [mat4](#mat4)
218
+ - _static_ **[targetTo](https://github.com/dkaraush/glmaths/blob/main/src/mat4.ts#L1015)**(eye: [vec3](#vec3), target: [vec3](#vec3), up: [vec3](#vec3), out?: [mat4](#mat4)): [mat4](#mat4)
219
+ - _static_ **[infinitePerspective](https://github.com/dkaraush/glmaths/blob/main/src/mat4.ts#L1057)**(fovy: number, aspect: number, near: number, out?: [mat4](#mat4)): [mat4](#mat4)
220
+ - _static_ **[project](https://github.com/dkaraush/glmaths/blob/main/src/mat4.ts#L1080)**(obj: [vec3](#vec3), model: [mat4](#mat4), proj: [mat4](#mat4), viewport: [vec4](#vec4), out?: [vec3](#vec3)): [vec3](#vec3)
221
+ - _static_ **[unProject](https://github.com/dkaraush/glmaths/blob/main/src/mat4.ts#L1112)**(win: [vec3](#vec3), model: [mat4](#mat4), proj: [mat4](#mat4), viewport: [vec4](#vec4), out?: [vec3](#vec3)): [vec3](#vec3) | null
222
+ - **[frob](https://github.com/dkaraush/glmaths/blob/main/src/mat4.ts#L1163)**(): number
223
+ - **[plus](https://github.com/dkaraush/glmaths/blob/main/src/mat4.ts#L1179)**(b: [mat4](#mat4), out?: [mat4](#mat4)): [mat4](#mat4)
224
+ - **[add](https://github.com/dkaraush/glmaths/blob/main/src/mat4.ts#L1298)** → **[plus](https://github.com/dkaraush/glmaths/blob/main/src/mat4.ts#L1179)**
225
+ - **[minus](https://github.com/dkaraush/glmaths/blob/main/src/mat4.ts#L1194)**(b: [mat4](#mat4), out?: [mat4](#mat4)): [mat4](#mat4)
226
+ - **[sub](https://github.com/dkaraush/glmaths/blob/main/src/mat4.ts#L1299)** → **[minus](https://github.com/dkaraush/glmaths/blob/main/src/mat4.ts#L1194)**
227
+ - **[subtract](https://github.com/dkaraush/glmaths/blob/main/src/mat4.ts#L1300)** → **[minus](https://github.com/dkaraush/glmaths/blob/main/src/mat4.ts#L1194)**
228
+ - **[scaleScalar](https://github.com/dkaraush/glmaths/blob/main/src/mat4.ts#L1209)**(b: number, out?: [mat4](#mat4)): [mat4](#mat4)
229
+ - **[multiplyScalar](https://github.com/dkaraush/glmaths/blob/main/src/mat4.ts#L1305)** → **[scaleScalar](https://github.com/dkaraush/glmaths/blob/main/src/mat4.ts#L1209)**
230
+ - **[multiplyScalarAndAdd](https://github.com/dkaraush/glmaths/blob/main/src/mat4.ts#L1225)**(b: [mat4](#mat4), scale: number, out?: [mat4](#mat4)): [mat4](#mat4)
231
+ - **[toString](https://github.com/dkaraush/glmaths/blob/main/src/mat4.ts#L1242)**(): string
232
+ - **[str](https://github.com/dkaraush/glmaths/blob/main/src/mat4.ts#L1304)** → **[toString](https://github.com/dkaraush/glmaths/blob/main/src/mat4.ts#L1242)**
233
+ - **[exactEquals](https://github.com/dkaraush/glmaths/blob/main/src/mat4.ts#L1252)**(b: [mat4](#mat4)): boolean
234
+ - **[equals](https://github.com/dkaraush/glmaths/blob/main/src/mat4.ts#L1267)**(b: [mat4](#mat4)): boolean
235
+
236
+
237
+
238
+ ### [quat](https://github.com/dkaraush/glmaths/blob/main/src/quat.ts#L11)
239
+ - **[multiply](https://github.com/dkaraush/glmaths/blob/main/src/quat.ts#L40)**(b: number | [quat](#quat), out?: [quat](#quat)): [quat](#quat)
240
+ - **[mult](https://github.com/dkaraush/glmaths/blob/main/src/quat.ts#L810)** → **[multiply](https://github.com/dkaraush/glmaths/blob/main/src/quat.ts#L40)**
241
+ - **[mul](https://github.com/dkaraush/glmaths/blob/main/src/quat.ts#L811)** → **[multiply](https://github.com/dkaraush/glmaths/blob/main/src/quat.ts#L40)**
242
+ - **[scale](https://github.com/dkaraush/glmaths/blob/main/src/quat.ts#L812)** → **[multiply](https://github.com/dkaraush/glmaths/blob/main/src/quat.ts#L40)**
243
+ - **[times](https://github.com/dkaraush/glmaths/blob/main/src/quat.ts#L813)** → **[multiply](https://github.com/dkaraush/glmaths/blob/main/src/quat.ts#L40)**
244
+ - _static_ **[fromAxisAngle](https://github.com/dkaraush/glmaths/blob/main/src/quat.ts#L65)**(axis: [vec3](#vec3), rad: number, out?: [quat](#quat)): [quat](#quat)
245
+ - **[setAxisAngle](https://github.com/dkaraush/glmaths/blob/main/src/quat.ts#L83)**(axis: [vec3](#vec3), rad: number, out?: [quat](#quat)): [quat](#quat)
246
+ - **[getAxisAngle](https://github.com/dkaraush/glmaths/blob/main/src/quat.ts#L105)**(out_axis: [vec3](#vec3)): number
247
+ - _static_ **[angle](https://github.com/dkaraush/glmaths/blob/main/src/quat.ts#L128)**(a: [quat](#quat), b: [quat](#quat)): number
248
+ - _static_ **[getAngle](https://github.com/dkaraush/glmaths/blob/main/src/quat.ts#L809)** → **[angle](https://github.com/dkaraush/glmaths/blob/main/src/quat.ts#L128)**
249
+ - **[rotateX](https://github.com/dkaraush/glmaths/blob/main/src/quat.ts#L149)**(rad: number, out?: [quat](#quat)): [quat](#quat)
250
+ - **[rotateY](https://github.com/dkaraush/glmaths/blob/main/src/quat.ts#L167)**(rad: number, out?: [quat](#quat)): [quat](#quat)
251
+ - **[rotateZ](https://github.com/dkaraush/glmaths/blob/main/src/quat.ts#L184)**(rad: number, out?: [quat](#quat)): [quat](#quat)
252
+ - **[calculateW](https://github.com/dkaraush/glmaths/blob/main/src/quat.ts#L200)**(): number
253
+ - _static_ **[exp](https://github.com/dkaraush/glmaths/blob/main/src/quat.ts#L212)**(q: [quat](#quat), out?: [quat](#quat)): [quat](#quat)
254
+ - **[exp](https://github.com/dkaraush/glmaths/blob/main/src/quat.ts#L229)**(out?: [quat](#quat)): [quat](#quat)
255
+ - _static_ **[ln](https://github.com/dkaraush/glmaths/blob/main/src/quat.ts#L248)**(q: [quat](#quat), out?: [quat](#quat)): [quat](#quat)
256
+ - **[ln](https://github.com/dkaraush/glmaths/blob/main/src/quat.ts#L264)**(out?: [quat](#quat)): [quat](#quat)
257
+ - **[pow](https://github.com/dkaraush/glmaths/blob/main/src/quat.ts#L281)**(b: number): this
258
+ - _static_ **[slerp](https://github.com/dkaraush/glmaths/blob/main/src/quat.ts#L297)**(a: [quat](#quat), b: [quat](#quat), t: number, out?: [quat](#quat)): [quat](#quat)
259
+ - **[slerp](https://github.com/dkaraush/glmaths/blob/main/src/quat.ts#L340)**(b: [quat](#quat), t: number, out?: [quat](#quat)): [quat](#quat)
260
+ - _static_ **[random](https://github.com/dkaraush/glmaths/blob/main/src/quat.ts#L382)**(out?: [quat](#quat)): [quat](#quat)
261
+ - _static_ **[invert](https://github.com/dkaraush/glmaths/blob/main/src/quat.ts#L404)**(q: [quat](#quat), out?: [quat](#quat)): [quat](#quat)
262
+ - **[invert](https://github.com/dkaraush/glmaths/blob/main/src/quat.ts#L421)**(out?: [quat](#quat)): [quat](#quat)
263
+ - _static_ **[conjugate](https://github.com/dkaraush/glmaths/blob/main/src/quat.ts#L440)**(q: [quat](#quat), out?: [quat](#quat)): [quat](#quat)
264
+ - **[conjugate](https://github.com/dkaraush/glmaths/blob/main/src/quat.ts#L453)**(out?: [quat](#quat)): [quat](#quat)
265
+ - _static_ **[fromMat3](https://github.com/dkaraush/glmaths/blob/main/src/quat.ts#L468)**(m: [mat3](#mat3), out?: [quat](#quat)): [quat](#quat)
266
+ - _static_ **[fromEuler](https://github.com/dkaraush/glmaths/blob/main/src/quat.ts#L507)**(x: number, y: number, z: number, order?: string, out?: [quat](#quat)): [quat](#quat)
267
+ - **[toString](https://github.com/dkaraush/glmaths/blob/main/src/quat.ts#L566)**(): string
268
+ - **[str](https://github.com/dkaraush/glmaths/blob/main/src/quat.ts#L814)** → **[toString](https://github.com/dkaraush/glmaths/blob/main/src/quat.ts#L566)**
269
+ - _static_ **[dot](https://github.com/dkaraush/glmaths/blob/main/src/quat.ts#L577)**(a: [quat](#quat), b: [quat](#quat)): number
270
+ - **[dot](https://github.com/dkaraush/glmaths/blob/main/src/quat.ts#L588)**(b: [quat](#quat)): number
271
+ - **[equals](https://github.com/dkaraush/glmaths/blob/main/src/quat.ts#L598)**(b: [quat](#quat)): boolean
272
+ - _static_ **[rotationTo](https://github.com/dkaraush/glmaths/blob/main/src/quat.ts#L611)**(a: [vec3](#vec3), b: [vec3](#vec3), out?: [quat](#quat)): [quat](#quat)
273
+ - _static_ **[sqlerp](https://github.com/dkaraush/glmaths/blob/main/src/quat.ts#L645)**(a: [quat](#quat), b: [quat](#quat), c: [quat](#quat), d: [quat](#quat), t: number, out?: [quat](#quat)): [quat](#quat)
274
+ - _static_ **[setAxes](https://github.com/dkaraush/glmaths/blob/main/src/quat.ts#L662)**(view: [vec3](#vec3), right: [vec3](#vec3), up: [vec3](#vec3), out?: [quat](#quat)): [quat](#quat)
275
+ - **[normalize](https://github.com/dkaraush/glmaths/blob/main/src/quat.ts#L685)**(out?: [quat](#quat)): [quat](#quat)
276
+ - _static_ **[quatLookAt](https://github.com/dkaraush/glmaths/blob/main/src/quat.ts#L706)**(direction: [vec3](#vec3), up: [vec3](#vec3), out?: [quat](#quat)): [quat](#quat)
277
+ - **[pitch](https://github.com/dkaraush/glmaths/blob/main/src/quat.ts#L723)**(): number
278
+ - **[yaw](https://github.com/dkaraush/glmaths/blob/main/src/quat.ts#L733)**(): number
279
+ - **[roll](https://github.com/dkaraush/glmaths/blob/main/src/quat.ts#L742)**(): number
280
+ - **[eulerAngles](https://github.com/dkaraush/glmaths/blob/main/src/quat.ts#L753)**(out?: [vec3](#vec3)): [vec3](#vec3)
281
+ - **[toMat3](https://github.com/dkaraush/glmaths/blob/main/src/quat.ts#L766)**(out?: [mat3](#mat3)): [mat3](#mat3)
282
+ - **[toMat4](https://github.com/dkaraush/glmaths/blob/main/src/quat.ts#L784)**(out?: [mat4](#mat4)): [mat4](#mat4)
283
+
284
+
285
+
286
+ ### [quat2](https://github.com/dkaraush/glmaths/blob/main/src/quat2.ts#L12)
287
+ - **[getReal](https://github.com/dkaraush/glmaths/blob/main/src/quat2.ts#L42)**(out?: [quat](#quat)): [quat](#quat)
288
+ - **[getDual](https://github.com/dkaraush/glmaths/blob/main/src/quat2.ts#L53)**(out?: [quat](#quat)): [quat](#quat)
289
+ - **[setReal](https://github.com/dkaraush/glmaths/blob/main/src/quat2.ts#L64)**(q: [quat](#quat)): this
290
+ - **[setDual](https://github.com/dkaraush/glmaths/blob/main/src/quat2.ts#L75)**(q: [quat](#quat)): this
291
+ - **[getTranslation](https://github.com/dkaraush/glmaths/blob/main/src/quat2.ts#L86)**(out?: [vec3](#vec3)): [vec3](#vec3)
292
+ - _static_ **[fromRotationTranslation](https://github.com/dkaraush/glmaths/blob/main/src/quat2.ts#L103)**(q: [quat](#quat), t: [vec3](#vec3), out?: [quat2](#quat2)): [quat2](#quat2)
293
+ - _static_ **[fromTranslation](https://github.com/dkaraush/glmaths/blob/main/src/quat2.ts#L121)**(t: [vec3](#vec3), out?: [quat2](#quat2)): [quat2](#quat2)
294
+ - _static_ **[fromRotation](https://github.com/dkaraush/glmaths/blob/main/src/quat2.ts#L134)**(q: [quat](#quat), out?: [quat2](#quat2)): [quat2](#quat2)
295
+ - _static_ **[fromMat4](https://github.com/dkaraush/glmaths/blob/main/src/quat2.ts#L147)**(m: [mat4](#mat4), out?: [quat2](#quat2)): [quat2](#quat2)
296
+ - **[clone](https://github.com/dkaraush/glmaths/blob/main/src/quat2.ts#L158)**(): [quat2](#quat2)
297
+ - **[translate](https://github.com/dkaraush/glmaths/blob/main/src/quat2.ts#L199)**(v: [vec3](#vec3), out?: [quat2](#quat2)): [quat2](#quat2)
298
+ - **[conjugate](https://github.com/dkaraush/glmaths/blob/main/src/quat2.ts#L217)**(out?: [quat2](#quat2)): [quat2](#quat2)
299
+ - **[invert](https://github.com/dkaraush/glmaths/blob/main/src/quat2.ts#L229)**(out?: [quat2](#quat2)): [quat2](#quat2)
300
+ - **[squaredLength](https://github.com/dkaraush/glmaths/blob/main/src/quat2.ts#L243)**(): number
301
+ - **[sqrLen](https://github.com/dkaraush/glmaths/blob/main/src/quat2.ts#L405)** → **[squaredLength](https://github.com/dkaraush/glmaths/blob/main/src/quat2.ts#L243)**
302
+ - **[len](https://github.com/dkaraush/glmaths/blob/main/src/quat2.ts#L253)**(): number
303
+ - **[normalize](https://github.com/dkaraush/glmaths/blob/main/src/quat2.ts#L263)**(out?: [quat2](#quat2)): [quat2](#quat2)
304
+ - _static_ **[dot](https://github.com/dkaraush/glmaths/blob/main/src/quat2.ts#L287)**(a: [quat2](#quat2), b: [quat2](#quat2)): number
305
+ - _static_ **[lerp](https://github.com/dkaraush/glmaths/blob/main/src/quat2.ts#L300)**(a: [quat2](#quat2), b: [quat2](#quat2), t: number, out?: [quat2](#quat2)): [quat2](#quat2)
306
+ - **[plus](https://github.com/dkaraush/glmaths/blob/main/src/quat2.ts#L321)**(b: [quat2](#quat2), out?: [quat2](#quat2)): [quat2](#quat2)
307
+ - **[add](https://github.com/dkaraush/glmaths/blob/main/src/quat2.ts#L407)** → **[plus](https://github.com/dkaraush/glmaths/blob/main/src/quat2.ts#L321)**
308
+ - **[scale](https://github.com/dkaraush/glmaths/blob/main/src/quat2.ts#L336)**(s: number, out?: [quat2](#quat2)): [quat2](#quat2)
309
+ - **[equals](https://github.com/dkaraush/glmaths/blob/main/src/quat2.ts#L350)**(b: [quat2](#quat2)): boolean
310
+ - **[exactEquals](https://github.com/dkaraush/glmaths/blob/main/src/quat2.ts#L365)**(b: [quat2](#quat2)): boolean
311
+ - **[toString](https://github.com/dkaraush/glmaths/blob/main/src/quat2.ts#L377)**(): string
312
+ - **[str](https://github.com/dkaraush/glmaths/blob/main/src/quat2.ts#L406)** → **[toString](https://github.com/dkaraush/glmaths/blob/main/src/quat2.ts#L377)**
313
+
314
+
315
+
316
+ ### [vec2](https://github.com/dkaraush/glmaths/blob/main/src/vec2.ts#L14)
317
+ - **[plus](https://github.com/dkaraush/glmaths/blob/main/src/vec2.ts#L48)**(b: number | [vec2](#vec2), out?: [vec2](#vec2)): [vec2](#vec2)
318
+ - **[add](https://github.com/dkaraush/glmaths/blob/main/src/vec2.ts#L769)** → **[plus](https://github.com/dkaraush/glmaths/blob/main/src/vec2.ts#L48)**
319
+ - **[minus](https://github.com/dkaraush/glmaths/blob/main/src/vec2.ts#L66)**(b: number | [vec2](#vec2), out?: [vec2](#vec2)): [vec2](#vec2)
320
+ - **[sub](https://github.com/dkaraush/glmaths/blob/main/src/vec2.ts#L770)** → **[minus](https://github.com/dkaraush/glmaths/blob/main/src/vec2.ts#L66)**
321
+ - **[subtract](https://github.com/dkaraush/glmaths/blob/main/src/vec2.ts#L771)** → **[minus](https://github.com/dkaraush/glmaths/blob/main/src/vec2.ts#L66)**
322
+ - **[mult](https://github.com/dkaraush/glmaths/blob/main/src/vec2.ts#L84)**(b: number | [vec2](#vec2), out?: [vec2](#vec2)): [vec2](#vec2)
323
+ - **[mul](https://github.com/dkaraush/glmaths/blob/main/src/vec2.ts#L772)** → **[mult](https://github.com/dkaraush/glmaths/blob/main/src/vec2.ts#L84)**
324
+ - **[multiply](https://github.com/dkaraush/glmaths/blob/main/src/vec2.ts#L773)** → **[mult](https://github.com/dkaraush/glmaths/blob/main/src/vec2.ts#L84)**
325
+ - **[scale](https://github.com/dkaraush/glmaths/blob/main/src/vec2.ts#L774)** → **[mult](https://github.com/dkaraush/glmaths/blob/main/src/vec2.ts#L84)**
326
+ - **[times](https://github.com/dkaraush/glmaths/blob/main/src/vec2.ts#L775)** → **[mult](https://github.com/dkaraush/glmaths/blob/main/src/vec2.ts#L84)**
327
+ - **[div](https://github.com/dkaraush/glmaths/blob/main/src/vec2.ts#L102)**(b: number | [vec2](#vec2), out?: [vec2](#vec2)): [vec2](#vec2)
328
+ - **[divide](https://github.com/dkaraush/glmaths/blob/main/src/vec2.ts#L776)** → **[div](https://github.com/dkaraush/glmaths/blob/main/src/vec2.ts#L102)**
329
+ - **[invDiv](https://github.com/dkaraush/glmaths/blob/main/src/vec2.ts#L120)**(a: number | [vec2](#vec2), out?: [vec2](#vec2)): [vec2](#vec2)
330
+ - **[rem](https://github.com/dkaraush/glmaths/blob/main/src/vec2.ts#L138)**(b: number | [vec2](#vec2), out?: [vec2](#vec2)): [vec2](#vec2)
331
+ - **[negate](https://github.com/dkaraush/glmaths/blob/main/src/vec2.ts#L155)**(out?: [vec2](#vec2)): [vec2](#vec2)
332
+ - **[neg](https://github.com/dkaraush/glmaths/blob/main/src/vec2.ts#L777)** → **[negate](https://github.com/dkaraush/glmaths/blob/main/src/vec2.ts#L155)**
333
+ - **[unaryMinus](https://github.com/dkaraush/glmaths/blob/main/src/vec2.ts#L778)** → **[negate](https://github.com/dkaraush/glmaths/blob/main/src/vec2.ts#L155)**
334
+ - **[unaryPlus](https://github.com/dkaraush/glmaths/blob/main/src/vec2.ts#L160)**(out?: [vec2](#vec2)): [vec2](#vec2)
335
+ - **[normalize](https://github.com/dkaraush/glmaths/blob/main/src/vec2.ts#L173)**(out?: [vec2](#vec2)): [vec2](#vec2)
336
+ - **[equals](https://github.com/dkaraush/glmaths/blob/main/src/vec2.ts#L190)**(b: [vec2](#vec2)): boolean
337
+ - **[exactEquals](https://github.com/dkaraush/glmaths/blob/main/src/vec2.ts#L203)**(b: [vec2](#vec2)): boolean
338
+ - **[squaredLength](https://github.com/dkaraush/glmaths/blob/main/src/vec2.ts#L212)**(): number
339
+ - **[sqrLen](https://github.com/dkaraush/glmaths/blob/main/src/vec2.ts#L779)** → **[squaredLength](https://github.com/dkaraush/glmaths/blob/main/src/vec2.ts#L212)**
340
+ - **[len](https://github.com/dkaraush/glmaths/blob/main/src/vec2.ts#L222)**(): number
341
+ - **[floor](https://github.com/dkaraush/glmaths/blob/main/src/vec2.ts#L233)**(out?: [vec2](#vec2)): [vec2](#vec2)
342
+ - **[round](https://github.com/dkaraush/glmaths/blob/main/src/vec2.ts#L244)**(out?: [vec2](#vec2)): [vec2](#vec2)
343
+ - **[ceil](https://github.com/dkaraush/glmaths/blob/main/src/vec2.ts#L256)**(out?: [vec2](#vec2)): [vec2](#vec2)
344
+ - **[inverse](https://github.com/dkaraush/glmaths/blob/main/src/vec2.ts#L268)**(out?: [vec2](#vec2)): [vec2](#vec2)
345
+ - **[clone](https://github.com/dkaraush/glmaths/blob/main/src/vec2.ts#L279)**(): [vec2](#vec2)
346
+ - **[rotate](https://github.com/dkaraush/glmaths/blob/main/src/vec2.ts#L289)**(rad?: number, origin?: [vec2](#vec2), out?: [vec2](#vec2)): [vec2](#vec2)
347
+ - **[toString](https://github.com/dkaraush/glmaths/blob/main/src/vec2.ts#L304)**(): string
348
+ - **[str](https://github.com/dkaraush/glmaths/blob/main/src/vec2.ts#L780)** → **[toString](https://github.com/dkaraush/glmaths/blob/main/src/vec2.ts#L304)**
349
+ - _static_ **[random](https://github.com/dkaraush/glmaths/blob/main/src/vec2.ts#L314)**(scale?: number, out?: [vec2](#vec2)): [vec2](#vec2)
350
+ - _static_ **[angle](https://github.com/dkaraush/glmaths/blob/main/src/vec2.ts#L328)**(a: [vec2](#vec2), b: [vec2](#vec2)): number
351
+ - _static_ **[signedAngle](https://github.com/dkaraush/glmaths/blob/main/src/vec2.ts#L340)**(a: [vec2](#vec2), b: [vec2](#vec2)): number
352
+ - _static_ **[dot](https://github.com/dkaraush/glmaths/blob/main/src/vec2.ts#L353)**(a: [vec2](#vec2), b: [vec2](#vec2)): number
353
+ - **[dot](https://github.com/dkaraush/glmaths/blob/main/src/vec2.ts#L363)**(b: [vec2](#vec2)): number
354
+ - _static_ **[cross](https://github.com/dkaraush/glmaths/blob/main/src/vec2.ts#L374)**(a: [vec2](#vec2), b: [vec2](#vec2), out?: [vec3](#vec3)): [vec3](#vec3)
355
+ - _static_ **[distance](https://github.com/dkaraush/glmaths/blob/main/src/vec2.ts#L387)**(a: [vec2](#vec2), b: [vec2](#vec2)): number
356
+ - _static_ **[dist](https://github.com/dkaraush/glmaths/blob/main/src/vec2.ts#L767)** → **[distance](https://github.com/dkaraush/glmaths/blob/main/src/vec2.ts#L387)**
357
+ - _static_ **[squaredDistance](https://github.com/dkaraush/glmaths/blob/main/src/vec2.ts#L401)**(a: [vec2](#vec2), b: [vec2](#vec2)): number
358
+ - _static_ **[sqrDist](https://github.com/dkaraush/glmaths/blob/main/src/vec2.ts#L768)** → **[squaredDistance](https://github.com/dkaraush/glmaths/blob/main/src/vec2.ts#L401)**
359
+ - _static_ **[lerp](https://github.com/dkaraush/glmaths/blob/main/src/vec2.ts#L416)**(a: [vec2](#vec2), b: [vec2](#vec2), t: number, out?: [vec2](#vec2)): [vec2](#vec2)
360
+ - _static_ **[max](https://github.com/dkaraush/glmaths/blob/main/src/vec2.ts#L430)**(a: [vec2](#vec2), b: [vec2](#vec2), out?: [vec2](#vec2)): [vec2](#vec2)
361
+ - _static_ **[min](https://github.com/dkaraush/glmaths/blob/main/src/vec2.ts#L442)**(a: [vec2](#vec2), b: [vec2](#vec2), out?: [vec2](#vec2)): [vec2](#vec2)
362
+ - _static_ **[clamp](https://github.com/dkaraush/glmaths/blob/main/src/vec2.ts#L456)**(v: [vec2](#vec2), min: number | [vec2](#vec2), max: number | [vec2](#vec2), out?: [vec2](#vec2)): [vec2](#vec2)
363
+ - _static_ **[mix](https://github.com/dkaraush/glmaths/blob/main/src/vec2.ts#L479)**(a: [vec2](#vec2), b: [vec2](#vec2), t: number | [vec2](#vec2), out?: [vec2](#vec2)): [vec2](#vec2)
364
+ - **[lerpV](https://github.com/dkaraush/glmaths/blob/main/src/vec2.ts#L781)** → **[mix](https://github.com/dkaraush/glmaths/blob/main/src/vec2.ts#L479)**
365
+ - _static_ **[smoothstep](https://github.com/dkaraush/glmaths/blob/main/src/vec2.ts#L498)**(edge0: number | [vec2](#vec2), edge1: number | [vec2](#vec2), v: [vec2](#vec2), out?: [vec2](#vec2)): [vec2](#vec2)
366
+ - **[scaleAndAdd](https://github.com/dkaraush/glmaths/blob/main/src/vec2.ts#L518)**(b: [vec2](#vec2), scale: number, out?: [vec2](#vec2)): [vec2](#vec2)
367
+ - **[abs](https://github.com/dkaraush/glmaths/blob/main/src/vec2.ts#L530)**(out?: [vec2](#vec2)): [vec2](#vec2)
368
+ - **[sign](https://github.com/dkaraush/glmaths/blob/main/src/vec2.ts#L542)**(out?: [vec2](#vec2)): [vec2](#vec2)
369
+ - **[fract](https://github.com/dkaraush/glmaths/blob/main/src/vec2.ts#L554)**(out?: [vec2](#vec2)): [vec2](#vec2)
370
+ - **[clamp](https://github.com/dkaraush/glmaths/blob/main/src/vec2.ts#L568)**(min: number | [vec2](#vec2), max: number | [vec2](#vec2), out?: [vec2](#vec2)): [vec2](#vec2)
371
+ - **[saturate](https://github.com/dkaraush/glmaths/blob/main/src/vec2.ts#L589)**(out?: [vec2](#vec2)): [vec2](#vec2)
372
+ - **[mix](https://github.com/dkaraush/glmaths/blob/main/src/vec2.ts#L603)**(b: [vec2](#vec2), t: number | [vec2](#vec2), out?: [vec2](#vec2)): [vec2](#vec2)
373
+ - **[lerpV](https://github.com/dkaraush/glmaths/blob/main/src/vec2.ts#L781)** → **[mix](https://github.com/dkaraush/glmaths/blob/main/src/vec2.ts#L603)**
374
+ - **[step](https://github.com/dkaraush/glmaths/blob/main/src/vec2.ts#L621)**(edge: number | [vec2](#vec2), out?: [vec2](#vec2)): [vec2](#vec2)
375
+ - **[smoothstep](https://github.com/dkaraush/glmaths/blob/main/src/vec2.ts#L640)**(edge0: number | [vec2](#vec2), edge1: number | [vec2](#vec2), out?: [vec2](#vec2)): [vec2](#vec2)
376
+ - **[transformMat2](https://github.com/dkaraush/glmaths/blob/main/src/vec2.ts#L659)**(m: [mat2](#mat2), out?: [vec2](#vec2)): [vec2](#vec2)
377
+ - **[transformMat2x2](https://github.com/dkaraush/glmaths/blob/main/src/vec2.ts#L782)** → **[transformMat2](https://github.com/dkaraush/glmaths/blob/main/src/vec2.ts#L659)**
378
+ - **[transformMat2x3](https://github.com/dkaraush/glmaths/blob/main/src/vec2.ts#L673)**(m: [mat2x3](#mat2x3), out?: [vec2](#vec2)): [vec2](#vec2)
379
+ - **[transformMat2d](https://github.com/dkaraush/glmaths/blob/main/src/vec2.ts#L783)** → **[transformMat2x3](https://github.com/dkaraush/glmaths/blob/main/src/vec2.ts#L673)**
380
+ - **[transformMat3](https://github.com/dkaraush/glmaths/blob/main/src/vec2.ts#L687)**(m: [mat3](#mat3), out?: [vec2](#vec2)): [vec2](#vec2)
381
+ - **[transformMat3x3](https://github.com/dkaraush/glmaths/blob/main/src/vec2.ts#L784)** → **[transformMat3](https://github.com/dkaraush/glmaths/blob/main/src/vec2.ts#L687)**
382
+ - **[transformMat4](https://github.com/dkaraush/glmaths/blob/main/src/vec2.ts#L701)**(m: [mat4](#mat4), out?: [vec2](#vec2)): [vec2](#vec2)
383
+ - **[transformMat4x4](https://github.com/dkaraush/glmaths/blob/main/src/vec2.ts#L785)** → **[transformMat4](https://github.com/dkaraush/glmaths/blob/main/src/vec2.ts#L701)**
384
+ - _static_ **[scaleAndAdd](https://github.com/dkaraush/glmaths/blob/main/src/vec2.ts#L717)**(a: [vec2](#vec2), b: [vec2](#vec2), scale: number, out?: [vec2](#vec2)): [vec2](#vec2)
385
+ - _static_ **[reflect](https://github.com/dkaraush/glmaths/blob/main/src/vec2.ts#L731)**(I: [vec2](#vec2), N: [vec2](#vec2), out?: [vec2](#vec2)): [vec2](#vec2)
386
+
387
+
388
+
389
+ ### [vec3](https://github.com/dkaraush/glmaths/blob/main/src/vec3.ts#L13)
390
+ - **[plus](https://github.com/dkaraush/glmaths/blob/main/src/vec3.ts#L59)**(b: number | [vec3](#vec3), out?: [vec3](#vec3)): [vec3](#vec3)
391
+ - **[add](https://github.com/dkaraush/glmaths/blob/main/src/vec3.ts#L1043)** → **[plus](https://github.com/dkaraush/glmaths/blob/main/src/vec3.ts#L59)**
392
+ - **[minus](https://github.com/dkaraush/glmaths/blob/main/src/vec3.ts#L79)**(b: number | [vec3](#vec3), out?: [vec3](#vec3)): [vec3](#vec3)
393
+ - **[sub](https://github.com/dkaraush/glmaths/blob/main/src/vec3.ts#L1044)** → **[minus](https://github.com/dkaraush/glmaths/blob/main/src/vec3.ts#L79)**
394
+ - **[subtract](https://github.com/dkaraush/glmaths/blob/main/src/vec3.ts#L1045)** → **[minus](https://github.com/dkaraush/glmaths/blob/main/src/vec3.ts#L79)**
395
+ - **[mult](https://github.com/dkaraush/glmaths/blob/main/src/vec3.ts#L99)**(b: number | [vec3](#vec3), out?: [vec3](#vec3)): [vec3](#vec3)
396
+ - **[mul](https://github.com/dkaraush/glmaths/blob/main/src/vec3.ts#L1046)** → **[mult](https://github.com/dkaraush/glmaths/blob/main/src/vec3.ts#L99)**
397
+ - **[scale](https://github.com/dkaraush/glmaths/blob/main/src/vec3.ts#L1047)** → **[mult](https://github.com/dkaraush/glmaths/blob/main/src/vec3.ts#L99)**
398
+ - **[multiply](https://github.com/dkaraush/glmaths/blob/main/src/vec3.ts#L1048)** → **[mult](https://github.com/dkaraush/glmaths/blob/main/src/vec3.ts#L99)**
399
+ - **[times](https://github.com/dkaraush/glmaths/blob/main/src/vec3.ts#L1049)** → **[mult](https://github.com/dkaraush/glmaths/blob/main/src/vec3.ts#L99)**
400
+ - **[div](https://github.com/dkaraush/glmaths/blob/main/src/vec3.ts#L119)**(b: number | [vec3](#vec3), out?: [vec3](#vec3)): [vec3](#vec3)
401
+ - **[divide](https://github.com/dkaraush/glmaths/blob/main/src/vec3.ts#L1050)** → **[div](https://github.com/dkaraush/glmaths/blob/main/src/vec3.ts#L119)**
402
+ - **[invDiv](https://github.com/dkaraush/glmaths/blob/main/src/vec3.ts#L131)**(b: number | [vec3](#vec3), out?: [vec3](#vec3)): [vec3](#vec3)
403
+ - **[negate](https://github.com/dkaraush/glmaths/blob/main/src/vec3.ts#L150)**(out?: [vec3](#vec3)): [vec3](#vec3)
404
+ - **[neg](https://github.com/dkaraush/glmaths/blob/main/src/vec3.ts#L1051)** → **[negate](https://github.com/dkaraush/glmaths/blob/main/src/vec3.ts#L150)**
405
+ - **[unaryMinus](https://github.com/dkaraush/glmaths/blob/main/src/vec3.ts#L1052)** → **[negate](https://github.com/dkaraush/glmaths/blob/main/src/vec3.ts#L150)**
406
+ - **[unaryPlus](https://github.com/dkaraush/glmaths/blob/main/src/vec3.ts#L156)**(out?: [vec3](#vec3)): [vec3](#vec3)
407
+ - _static_ **[normalize](https://github.com/dkaraush/glmaths/blob/main/src/vec3.ts#L172)**(v: [vec3](#vec3), out?: [vec3](#vec3)): [vec3](#vec3)
408
+ - **[normalize](https://github.com/dkaraush/glmaths/blob/main/src/vec3.ts#L187)**(out?: [vec3](#vec3)): [vec3](#vec3)
409
+ - **[equals](https://github.com/dkaraush/glmaths/blob/main/src/vec3.ts#L203)**(b: [vec3](#vec3)): boolean
410
+ - **[exactEquals](https://github.com/dkaraush/glmaths/blob/main/src/vec3.ts#L217)**(b: [vec3](#vec3)): boolean
411
+ - **[squaredLength](https://github.com/dkaraush/glmaths/blob/main/src/vec3.ts#L226)**(): number
412
+ - **[sqrLen](https://github.com/dkaraush/glmaths/blob/main/src/vec3.ts#L1053)** → **[squaredLength](https://github.com/dkaraush/glmaths/blob/main/src/vec3.ts#L226)**
413
+ - **[len](https://github.com/dkaraush/glmaths/blob/main/src/vec3.ts#L236)**(): number
414
+ - _static_ **[floor](https://github.com/dkaraush/glmaths/blob/main/src/vec3.ts#L247)**(v: [vec3](#vec3), out?: [vec3](#vec3)): [vec3](#vec3)
415
+ - _static_ **[round](https://github.com/dkaraush/glmaths/blob/main/src/vec3.ts#L259)**(v: [vec3](#vec3), out?: [vec3](#vec3)): [vec3](#vec3)
416
+ - _static_ **[ceil](https://github.com/dkaraush/glmaths/blob/main/src/vec3.ts#L271)**(v: [vec3](#vec3), out?: [vec3](#vec3)): [vec3](#vec3)
417
+ - **[floor](https://github.com/dkaraush/glmaths/blob/main/src/vec3.ts#L282)**(out?: [vec3](#vec3)): [vec3](#vec3)
418
+ - **[round](https://github.com/dkaraush/glmaths/blob/main/src/vec3.ts#L293)**(out?: [vec3](#vec3)): [vec3](#vec3)
419
+ - **[ceil](https://github.com/dkaraush/glmaths/blob/main/src/vec3.ts#L304)**(out?: [vec3](#vec3)): [vec3](#vec3)
420
+ - _static_ **[inverse](https://github.com/dkaraush/glmaths/blob/main/src/vec3.ts#L317)**(v: [vec3](#vec3), out?: [vec3](#vec3)): [vec3](#vec3)
421
+ - **[inverse](https://github.com/dkaraush/glmaths/blob/main/src/vec3.ts#L328)**(out?: [vec3](#vec3)): [vec3](#vec3)
422
+ - **[clone](https://github.com/dkaraush/glmaths/blob/main/src/vec3.ts#L340)**(): [vec3](#vec3)
423
+ - **[toString](https://github.com/dkaraush/glmaths/blob/main/src/vec3.ts#L349)**(): string
424
+ - **[str](https://github.com/dkaraush/glmaths/blob/main/src/vec3.ts#L1054)** → **[toString](https://github.com/dkaraush/glmaths/blob/main/src/vec3.ts#L349)**
425
+ - _static_ **[random](https://github.com/dkaraush/glmaths/blob/main/src/vec3.ts#L359)**(scale?: number): [vec3](#vec3)
426
+ - _static_ **[angle](https://github.com/dkaraush/glmaths/blob/main/src/vec3.ts#L377)**(a: [vec3](#vec3), b: [vec3](#vec3)): number
427
+ - _static_ **[dot](https://github.com/dkaraush/glmaths/blob/main/src/vec3.ts#L392)**(a: [vec3](#vec3), b: [vec3](#vec3)): number
428
+ - _static_ **[cross](https://github.com/dkaraush/glmaths/blob/main/src/vec3.ts#L403)**(a: [vec3](#vec3), b: [vec3](#vec3), out?: [vec3](#vec3)): [vec3](#vec3)
429
+ - _static_ **[distance](https://github.com/dkaraush/glmaths/blob/main/src/vec3.ts#L419)**(a: [vec3](#vec3), b: [vec3](#vec3)): number
430
+ - _static_ **[dist](https://github.com/dkaraush/glmaths/blob/main/src/vec3.ts#L1041)** → **[distance](https://github.com/dkaraush/glmaths/blob/main/src/vec3.ts#L419)**
431
+ - _static_ **[squaredDistance](https://github.com/dkaraush/glmaths/blob/main/src/vec3.ts#L434)**(a: [vec3](#vec3), b: [vec3](#vec3)): number
432
+ - _static_ **[sqrDist](https://github.com/dkaraush/glmaths/blob/main/src/vec3.ts#L1042)** → **[squaredDistance](https://github.com/dkaraush/glmaths/blob/main/src/vec3.ts#L434)**
433
+ - _static_ **[lerp](https://github.com/dkaraush/glmaths/blob/main/src/vec3.ts#L451)**(a: [vec3](#vec3), b: [vec3](#vec3), t: number, out?: [vec3](#vec3)): [vec3](#vec3)
434
+ - _static_ **[slerp](https://github.com/dkaraush/glmaths/blob/main/src/vec3.ts#L467)**(a: [vec3](#vec3), b: [vec3](#vec3), t: number, out?: [vec3](#vec3)): [vec3](#vec3)
435
+ - _static_ **[max](https://github.com/dkaraush/glmaths/blob/main/src/vec3.ts#L485)**(a: [vec3](#vec3), b: [vec3](#vec3), out?: [vec3](#vec3)): [vec3](#vec3)
436
+ - _static_ **[min](https://github.com/dkaraush/glmaths/blob/main/src/vec3.ts#L498)**(a: [vec3](#vec3), b: [vec3](#vec3), out?: [vec3](#vec3)): [vec3](#vec3)
437
+ - _static_ **[clamp](https://github.com/dkaraush/glmaths/blob/main/src/vec3.ts#L514)**(v: [vec3](#vec3), min: number | [vec3](#vec3), max: number | [vec3](#vec3), out?: [vec3](#vec3)): [vec3](#vec3)
438
+ - _static_ **[mix](https://github.com/dkaraush/glmaths/blob/main/src/vec3.ts#L536)**(a: [vec3](#vec3), b: [vec3](#vec3), t: number | [vec3](#vec3), out?: [vec3](#vec3)): [vec3](#vec3)
439
+ - _static_ **[smoothstep](https://github.com/dkaraush/glmaths/blob/main/src/vec3.ts#L558)**(edge0: number | [vec3](#vec3), edge1: number | [vec3](#vec3), v: [vec3](#vec3), out?: [vec3](#vec3)): [vec3](#vec3)
440
+ - _static_ **[rotateX](https://github.com/dkaraush/glmaths/blob/main/src/vec3.ts#L582)**(v: [vec3](#vec3), rad: number, origin?: [vec3](#vec3), out?: [vec3](#vec3)): [vec3](#vec3)
441
+ - **[rotateX](https://github.com/dkaraush/glmaths/blob/main/src/vec3.ts#L597)**(rad: number, origin?: [vec3](#vec3), out?: [vec3](#vec3)): [vec3](#vec3)
442
+ - _static_ **[rotateY](https://github.com/dkaraush/glmaths/blob/main/src/vec3.ts#L613)**(v: [vec3](#vec3), rad: number, origin?: [vec3](#vec3), out?: [vec3](#vec3)): [vec3](#vec3)
443
+ - **[rotateY](https://github.com/dkaraush/glmaths/blob/main/src/vec3.ts#L627)**(rad: number, origin?: [vec3](#vec3), out?: [vec3](#vec3)): [vec3](#vec3)
444
+ - _static_ **[rotateZ](https://github.com/dkaraush/glmaths/blob/main/src/vec3.ts#L643)**(v: [vec3](#vec3), rad: number, origin?: [vec3](#vec3), out?: [vec3](#vec3)): [vec3](#vec3)
445
+ - **[rotateZ](https://github.com/dkaraush/glmaths/blob/main/src/vec3.ts#L657)**(rad: number, origin?: [vec3](#vec3), out?: [vec3](#vec3)): [vec3](#vec3)
446
+ - _static_ **[hermite](https://github.com/dkaraush/glmaths/blob/main/src/vec3.ts#L676)**(a: [vec3](#vec3), b: [vec3](#vec3), c: [vec3](#vec3), d: [vec3](#vec3), t: number, out?: [vec3](#vec3)): [vec3](#vec3)
447
+ - _static_ **[bezier](https://github.com/dkaraush/glmaths/blob/main/src/vec3.ts#L697)**(a: [vec3](#vec3), b: [vec3](#vec3), c: [vec3](#vec3), d: [vec3](#vec3), t: number, out?: [vec3](#vec3)): [vec3](#vec3)
448
+ - _static_ **[scaleAndAdd](https://github.com/dkaraush/glmaths/blob/main/src/vec3.ts#L720)**(a: [vec3](#vec3), b: [vec3](#vec3), scale: number, out?: [vec3](#vec3)): [vec3](#vec3)
449
+ - _static_ **[reflect](https://github.com/dkaraush/glmaths/blob/main/src/vec3.ts#L734)**(I: [vec3](#vec3), N: [vec3](#vec3), out?: [vec3](#vec3)): [vec3](#vec3)
450
+ - _static_ **[refract](https://github.com/dkaraush/glmaths/blob/main/src/vec3.ts#L748)**(I: [vec3](#vec3), N: [vec3](#vec3), eta: number, out?: [vec3](#vec3)): [vec3](#vec3)
451
+ - _static_ **[faceforward](https://github.com/dkaraush/glmaths/blob/main/src/vec3.ts#L767)**(N: [vec3](#vec3), I: [vec3](#vec3), Nref: [vec3](#vec3), out?: [vec3](#vec3)): [vec3](#vec3)
452
+ - _static_ **[triangleNormal](https://github.com/dkaraush/glmaths/blob/main/src/vec3.ts#L782)**(p1: [vec3](#vec3), p2: [vec3](#vec3), p3: [vec3](#vec3), out?: [vec3](#vec3)): [vec3](#vec3)
453
+ - _static_ **[project](https://github.com/dkaraush/glmaths/blob/main/src/vec3.ts#L798)**(a: [vec3](#vec3), b: [vec3](#vec3), out?: [vec3](#vec3)): [vec3](#vec3)
454
+ - _static_ **[orientedAngle](https://github.com/dkaraush/glmaths/blob/main/src/vec3.ts#L811)**(a: [vec3](#vec3), b: [vec3](#vec3), ref: [vec3](#vec3)): number
455
+ - **[scaleAndAdd](https://github.com/dkaraush/glmaths/blob/main/src/vec3.ts#L825)**(b: [vec3](#vec3), scale: number, out?: [vec3](#vec3)): [vec3](#vec3)
456
+ - **[abs](https://github.com/dkaraush/glmaths/blob/main/src/vec3.ts#L837)**(out?: [vec3](#vec3)): [vec3](#vec3)
457
+ - **[clamp](https://github.com/dkaraush/glmaths/blob/main/src/vec3.ts#L851)**(min: number | [vec3](#vec3), max: number | [vec3](#vec3), out?: [vec3](#vec3)): [vec3](#vec3)
458
+ - **[mix](https://github.com/dkaraush/glmaths/blob/main/src/vec3.ts#L871)**(b: [vec3](#vec3), t: number | [vec3](#vec3), out?: [vec3](#vec3)): [vec3](#vec3)
459
+ - **[step](https://github.com/dkaraush/glmaths/blob/main/src/vec3.ts#L890)**(edge: number | [vec3](#vec3), out?: [vec3](#vec3)): [vec3](#vec3)
460
+ - **[smoothstep](https://github.com/dkaraush/glmaths/blob/main/src/vec3.ts#L910)**(edge0: number | [vec3](#vec3), edge1: number | [vec3](#vec3), out?: [vec3](#vec3)): [vec3](#vec3)
461
+ - **[fract](https://github.com/dkaraush/glmaths/blob/main/src/vec3.ts#L931)**(out?: [vec3](#vec3)): [vec3](#vec3)
462
+ - **[sign](https://github.com/dkaraush/glmaths/blob/main/src/vec3.ts#L943)**(out?: [vec3](#vec3)): [vec3](#vec3)
463
+ - **[saturate](https://github.com/dkaraush/glmaths/blob/main/src/vec3.ts#L955)**(out?: [vec3](#vec3)): [vec3](#vec3)
464
+ - **[transformMat3](https://github.com/dkaraush/glmaths/blob/main/src/vec3.ts#L968)**(m: [mat3](#mat3), out?: [vec3](#vec3)): [vec3](#vec3)
465
+ - **[transformMat3x3](https://github.com/dkaraush/glmaths/blob/main/src/vec3.ts#L1055)** → **[transformMat3](https://github.com/dkaraush/glmaths/blob/main/src/vec3.ts#L968)**
466
+ - **[transformMat4](https://github.com/dkaraush/glmaths/blob/main/src/vec3.ts#L983)**(m: [mat4](#mat4), out?: [vec3](#vec3)): [vec3](#vec3)
467
+ - **[transformMat4x4](https://github.com/dkaraush/glmaths/blob/main/src/vec3.ts#L1056)** → **[transformMat4](https://github.com/dkaraush/glmaths/blob/main/src/vec3.ts#L983)**
468
+ - **[transformQuat](https://github.com/dkaraush/glmaths/blob/main/src/vec3.ts#L1000)**(q: [quat](#quat), out?: [vec3](#vec3)): [vec3](#vec3)
469
+
470
+
471
+
472
+ ### [vec4](https://github.com/dkaraush/glmaths/blob/main/src/vec4.ts#L12)
473
+ - **[plus](https://github.com/dkaraush/glmaths/blob/main/src/vec4.ts#L56)**(b: number | [vec4](#vec4), out?: [vec4](#vec4)): [vec4](#vec4)
474
+ - **[add](https://github.com/dkaraush/glmaths/blob/main/src/vec4.ts#L785)** → **[plus](https://github.com/dkaraush/glmaths/blob/main/src/vec4.ts#L56)**
475
+ - **[minus](https://github.com/dkaraush/glmaths/blob/main/src/vec4.ts#L78)**(b: number | [vec4](#vec4), out?: [vec4](#vec4)): [vec4](#vec4)
476
+ - **[sub](https://github.com/dkaraush/glmaths/blob/main/src/vec4.ts#L787)** → **[minus](https://github.com/dkaraush/glmaths/blob/main/src/vec4.ts#L78)**
477
+ - **[subtract](https://github.com/dkaraush/glmaths/blob/main/src/vec4.ts#L788)** → **[minus](https://github.com/dkaraush/glmaths/blob/main/src/vec4.ts#L78)**
478
+ - **[mult](https://github.com/dkaraush/glmaths/blob/main/src/vec4.ts#L100)**(b: number | [vec4](#vec4), out?: [vec4](#vec4)): [vec4](#vec4)
479
+ - **[mul](https://github.com/dkaraush/glmaths/blob/main/src/vec4.ts#L789)** → **[mult](https://github.com/dkaraush/glmaths/blob/main/src/vec4.ts#L100)**
480
+ - **[scale](https://github.com/dkaraush/glmaths/blob/main/src/vec4.ts#L790)** → **[mult](https://github.com/dkaraush/glmaths/blob/main/src/vec4.ts#L100)**
481
+ - **[times](https://github.com/dkaraush/glmaths/blob/main/src/vec4.ts#L791)** → **[mult](https://github.com/dkaraush/glmaths/blob/main/src/vec4.ts#L100)**
482
+ - **[multiply](https://github.com/dkaraush/glmaths/blob/main/src/vec4.ts#L792)** → **[mult](https://github.com/dkaraush/glmaths/blob/main/src/vec4.ts#L100)**
483
+ - **[div](https://github.com/dkaraush/glmaths/blob/main/src/vec4.ts#L122)**(b: number | [vec4](#vec4), out?: [vec4](#vec4)): [vec4](#vec4)
484
+ - **[divide](https://github.com/dkaraush/glmaths/blob/main/src/vec4.ts#L786)** → **[div](https://github.com/dkaraush/glmaths/blob/main/src/vec4.ts#L122)**
485
+ - **[invDiv](https://github.com/dkaraush/glmaths/blob/main/src/vec4.ts#L137)**(b: number | [vec4](#vec4), out?: [vec4](#vec4)): [vec4](#vec4)
486
+ - **[negate](https://github.com/dkaraush/glmaths/blob/main/src/vec4.ts#L158)**(out?: [vec4](#vec4)): [vec4](#vec4)
487
+ - **[neg](https://github.com/dkaraush/glmaths/blob/main/src/vec4.ts#L793)** → **[negate](https://github.com/dkaraush/glmaths/blob/main/src/vec4.ts#L158)**
488
+ - **[unaryMinus](https://github.com/dkaraush/glmaths/blob/main/src/vec4.ts#L794)** → **[negate](https://github.com/dkaraush/glmaths/blob/main/src/vec4.ts#L158)**
489
+ - **[unaryPlus](https://github.com/dkaraush/glmaths/blob/main/src/vec4.ts#L165)**(out?: [vec4](#vec4)): [vec4](#vec4)
490
+ - **[normalize](https://github.com/dkaraush/glmaths/blob/main/src/vec4.ts#L181)**(out?: [vec4](#vec4)): [vec4](#vec4)
491
+ - **[equals](https://github.com/dkaraush/glmaths/blob/main/src/vec4.ts#L200)**(b: [vec4](#vec4)): boolean
492
+ - **[exactEquals](https://github.com/dkaraush/glmaths/blob/main/src/vec4.ts#L212)**(b: [vec4](#vec4)): boolean
493
+ - **[squaredLength](https://github.com/dkaraush/glmaths/blob/main/src/vec4.ts#L221)**(): number
494
+ - **[sqrLen](https://github.com/dkaraush/glmaths/blob/main/src/vec4.ts#L795)** → **[squaredLength](https://github.com/dkaraush/glmaths/blob/main/src/vec4.ts#L221)**
495
+ - **[len](https://github.com/dkaraush/glmaths/blob/main/src/vec4.ts#L231)**(): number
496
+ - **[floor](https://github.com/dkaraush/glmaths/blob/main/src/vec4.ts#L242)**(out?: [vec4](#vec4)): [vec4](#vec4)
497
+ - **[round](https://github.com/dkaraush/glmaths/blob/main/src/vec4.ts#L255)**(out?: [vec4](#vec4)): [vec4](#vec4)
498
+ - **[ceil](https://github.com/dkaraush/glmaths/blob/main/src/vec4.ts#L268)**(out?: [vec4](#vec4)): [vec4](#vec4)
499
+ - **[inverse](https://github.com/dkaraush/glmaths/blob/main/src/vec4.ts#L282)**(out?: [vec4](#vec4)): [vec4](#vec4)
500
+ - **[clone](https://github.com/dkaraush/glmaths/blob/main/src/vec4.ts#L295)**(): [vec4](#vec4)
501
+ - **[toString](https://github.com/dkaraush/glmaths/blob/main/src/vec4.ts#L304)**(): string
502
+ - **[str](https://github.com/dkaraush/glmaths/blob/main/src/vec4.ts#L796)** → **[toString](https://github.com/dkaraush/glmaths/blob/main/src/vec4.ts#L304)**
503
+ - _static_ **[random](https://github.com/dkaraush/glmaths/blob/main/src/vec4.ts#L315)**(scale?: number, out?: [vec4](#vec4)): [vec4](#vec4)
504
+ - _static_ **[dot](https://github.com/dkaraush/glmaths/blob/main/src/vec4.ts#L348)**(a: [vec4](#vec4), b: [vec4](#vec4)): number
505
+ - _static_ **[cross](https://github.com/dkaraush/glmaths/blob/main/src/vec4.ts#L360)**(u: [vec4](#vec4), v: [vec4](#vec4), w: [vec4](#vec4), out?: [vec4](#vec4)): [vec4](#vec4)
506
+ - _static_ **[distance](https://github.com/dkaraush/glmaths/blob/main/src/vec4.ts#L382)**(a: [vec4](#vec4), b: [vec4](#vec4)): number
507
+ - _static_ **[dist](https://github.com/dkaraush/glmaths/blob/main/src/vec4.ts#L783)** → **[distance](https://github.com/dkaraush/glmaths/blob/main/src/vec4.ts#L382)**
508
+ - _static_ **[squaredDistance](https://github.com/dkaraush/glmaths/blob/main/src/vec4.ts#L398)**(a: [vec4](#vec4), b: [vec4](#vec4)): number
509
+ - _static_ **[sqrDist](https://github.com/dkaraush/glmaths/blob/main/src/vec4.ts#L784)** → **[squaredDistance](https://github.com/dkaraush/glmaths/blob/main/src/vec4.ts#L398)**
510
+ - _static_ **[lerp](https://github.com/dkaraush/glmaths/blob/main/src/vec4.ts#L416)**(a: [vec4](#vec4), b: [vec4](#vec4), t: number, out?: [vec4](#vec4)): [vec4](#vec4)
511
+ - _static_ **[max](https://github.com/dkaraush/glmaths/blob/main/src/vec4.ts#L433)**(a: [vec4](#vec4), b: [vec4](#vec4), out?: [vec4](#vec4)): [vec4](#vec4)
512
+ - _static_ **[min](https://github.com/dkaraush/glmaths/blob/main/src/vec4.ts#L448)**(a: [vec4](#vec4), b: [vec4](#vec4), out?: [vec4](#vec4)): [vec4](#vec4)
513
+ - _static_ **[clamp](https://github.com/dkaraush/glmaths/blob/main/src/vec4.ts#L465)**(v: [vec4](#vec4), min: number | [vec4](#vec4), max: number | [vec4](#vec4), out?: [vec4](#vec4)): [vec4](#vec4)
514
+ - _static_ **[mix](https://github.com/dkaraush/glmaths/blob/main/src/vec4.ts#L490)**(a: [vec4](#vec4), b: [vec4](#vec4), t: number | [vec4](#vec4), out?: [vec4](#vec4)): [vec4](#vec4)
515
+ - _static_ **[smoothstep](https://github.com/dkaraush/glmaths/blob/main/src/vec4.ts#L514)**(edge0: number | [vec4](#vec4), edge1: number | [vec4](#vec4), v: [vec4](#vec4), out?: [vec4](#vec4)): [vec4](#vec4)
516
+ - **[scaleAndAdd](https://github.com/dkaraush/glmaths/blob/main/src/vec4.ts#L542)**(b: [vec4](#vec4), scale: number, out?: [vec4](#vec4)): [vec4](#vec4)
517
+ - **[abs](https://github.com/dkaraush/glmaths/blob/main/src/vec4.ts#L556)**(out?: [vec4](#vec4)): [vec4](#vec4)
518
+ - **[clamp](https://github.com/dkaraush/glmaths/blob/main/src/vec4.ts#L572)**(min: number | [vec4](#vec4), max: number | [vec4](#vec4), out?: [vec4](#vec4)): [vec4](#vec4)
519
+ - **[mix](https://github.com/dkaraush/glmaths/blob/main/src/vec4.ts#L596)**(b: [vec4](#vec4), t: number | [vec4](#vec4), out?: [vec4](#vec4)): [vec4](#vec4)
520
+ - **[step](https://github.com/dkaraush/glmaths/blob/main/src/vec4.ts#L618)**(edge: number | [vec4](#vec4), out?: [vec4](#vec4)): [vec4](#vec4)
521
+ - **[smoothstep](https://github.com/dkaraush/glmaths/blob/main/src/vec4.ts#L641)**(edge0: number | [vec4](#vec4), edge1: number | [vec4](#vec4), out?: [vec4](#vec4)): [vec4](#vec4)
522
+ - **[fract](https://github.com/dkaraush/glmaths/blob/main/src/vec4.ts#L667)**(out?: [vec4](#vec4)): [vec4](#vec4)
523
+ - **[sign](https://github.com/dkaraush/glmaths/blob/main/src/vec4.ts#L681)**(out?: [vec4](#vec4)): [vec4](#vec4)
524
+ - **[saturate](https://github.com/dkaraush/glmaths/blob/main/src/vec4.ts#L695)**(out?: [vec4](#vec4)): [vec4](#vec4)
525
+ - **[transformMat4](https://github.com/dkaraush/glmaths/blob/main/src/vec4.ts#L710)**(m: [mat4](#mat4), out?: [vec4](#vec4)): [vec4](#vec4)
526
+ - **[transformMat4x4](https://github.com/dkaraush/glmaths/blob/main/src/vec4.ts#L797)** → **[transformMat4](https://github.com/dkaraush/glmaths/blob/main/src/vec4.ts#L710)**
527
+ - **[transformQuat](https://github.com/dkaraush/glmaths/blob/main/src/vec4.ts#L726)**(q: [quat](#quat), out?: [vec4](#vec4)): [vec4](#vec4)
528
+ - _static_ **[scaleAndAdd](https://github.com/dkaraush/glmaths/blob/main/src/vec4.ts#L750)**(a: [vec4](#vec4), b: [vec4](#vec4), scale: number, out?: [vec4](#vec4)): [vec4](#vec4)
529
+
530
+
531
+
532
+ ### [mat2x3](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L4)
533
+ - **[invert](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L25)**(out?: [mat2x3](#mat2x3) | undefined): [mat2x3](#mat2x3) | null
534
+ - **[determinant](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L31)**(): number
535
+ - **[rotate](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L39)**(rad: number, out?: [mat2x3](#mat2x3) | undefined): [mat2x3](#mat2x3)
536
+ - **[scale](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L47)**(v: [vec2](#vec2), out?: [mat2x3](#mat2x3) | undefined): [mat2x3](#mat2x3)
537
+ - **[translate](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L55)**(v: [vec2](#vec2), out?: [mat2x3](#mat2x3) | undefined): [mat2x3](#mat2x3)
538
+ - _static_ **[fromRotation](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L63)**(rad: number, out?: [mat2x3](#mat2x3) | undefined): [mat2x3](#mat2x3)
539
+ - _static_ **[fromScaling](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L71)**(v: [vec2](#vec2), out?: [mat2x3](#mat2x3) | undefined): [mat2x3](#mat2x3)
540
+ - _static_ **[fromTranslation](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L79)**(v: [vec2](#vec2), out?: [mat2x3](#mat2x3) | undefined): [mat2x3](#mat2x3)
541
+ - **[toString](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L85)**(): string
542
+ - **[frob](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L91)**(): number
543
+ - **[plus](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L99)**(b: [mat2x3](#mat2x3), out?: [mat2x3](#mat2x3) | undefined): [mat2x3](#mat2x3)
544
+ - **[minus](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L107)**(b: [mat2x3](#mat2x3), out?: [mat2x3](#mat2x3) | undefined): [mat2x3](#mat2x3)
545
+ - **[multiply](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L115)**(b: [vec2](#vec2)): [vec2](#vec2)
546
+ - **[multiply](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L116)**(b: [mat2x3](#mat2x3), out?: [mat2x3](#mat2x3) | undefined): [mat2x3](#mat2x3)
547
+ - **[equals](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L123)**(b: [mat2x3](#mat2x3)): boolean
548
+ - **[exactEquals](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L130)**(b: [mat2x3](#mat2x3)): boolean
549
+ - **[scaleScalar](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L138)**(b: number, out?: [mat2x3](#mat2x3) | undefined): [mat2x3](#mat2x3)
550
+ - **[clone](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L144)**(): [mat2x3](#mat2x3)
551
+
552
+
553
+
554
+ ### [mat3](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L166)
555
+ - **[clone](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L189)**(): [mat3](#mat3)
556
+ - **[transpose](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L196)**(out?: [mat3](#mat3) | undefined): [mat3](#mat3)
557
+ - **[invert](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L203)**(out?: [mat3](#mat3) | undefined): [mat3](#mat3) | null
558
+ - **[adjoint](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L210)**(out?: [mat3](#mat3) | undefined): [mat3](#mat3)
559
+ - **[determinant](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L216)**(): number
560
+ - **[multiply](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L224)**(b: [vec2](#vec2)): [vec2](#vec2)
561
+ - **[multiply](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L225)**(b: [vec3](#vec3)): [vec3](#vec3)
562
+ - **[multiply](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L226)**(b: [mat3](#mat3), out?: [mat3](#mat3) | undefined): [mat3](#mat3)
563
+ - **[translate](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L234)**(v: [vec2](#vec2), out?: [mat3](#mat3) | undefined): [mat3](#mat3)
564
+ - **[rotate](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L242)**(rad: number, out?: [mat3](#mat3) | undefined): [mat3](#mat3)
565
+ - **[scale](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L250)**(v: [vec2](#vec2), out?: [mat3](#mat3) | undefined): [mat3](#mat3)
566
+ - _static_ **[fromTranslation](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L258)**(v: [vec2](#vec2), out?: [mat3](#mat3) | undefined): [mat3](#mat3)
567
+ - _static_ **[fromRotation](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L266)**(rad: number, out?: [mat3](#mat3) | undefined): [mat3](#mat3)
568
+ - _static_ **[fromScaling](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L274)**(v: [vec2](#vec2), out?: [mat3](#mat3) | undefined): [mat3](#mat3)
569
+ - _static_ **[fromMat2x3](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L282)**(a: [mat2x3](#mat2x3), out?: [mat3](#mat3) | undefined): [mat3](#mat3)
570
+ - _static_ **[fromQuat](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L291)**(q: [quat](#quat), out?: [mat3](#mat3) | undefined): [mat3](#mat3)
571
+ - _static_ **[normalFromMat4](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L299)**(a: [mat4](#mat4), out?: [mat3](#mat3) | undefined): [mat3](#mat3) | null
572
+ - _static_ **[fromMat4](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L307)**(a: [mat4](#mat4), out?: [mat3](#mat3) | undefined): [mat3](#mat3)
573
+ - _static_ **[projection](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L317)**(width: number, height: number, out?: [mat3](#mat3) | undefined): [mat3](#mat3)
574
+ - **[frob](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L323)**(): number
575
+ - **[plus](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L331)**(b: [mat3](#mat3), out?: [mat3](#mat3) | undefined): [mat3](#mat3)
576
+ - **[minus](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L339)**(b: [mat3](#mat3), out?: [mat3](#mat3) | undefined): [mat3](#mat3)
577
+ - **[scaleScalar](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L347)**(b: number, out?: [mat3](#mat3) | undefined): [mat3](#mat3)
578
+ - **[multiplyScalarAndAdd](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L356)**(b: [mat3](#mat3), scale: number, out?: [mat3](#mat3) | undefined): [mat3](#mat3)
579
+ - **[toString](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L362)**(): string
580
+ - **[exactEquals](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L369)**(b: [mat3](#mat3)): boolean
581
+ - **[equals](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L376)**(b: [mat3](#mat3)): boolean
582
+
583
+
584
+
585
+ ### [quat](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L401)
586
+ - **[multiply](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L421)**(b: number | [quat](#quat), out?: [quat](#quat) | undefined): [quat](#quat)
587
+ - _static_ **[fromAxisAngle](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L430)**(axis: [vec3](#vec3), rad: number, out?: [quat](#quat) | undefined): [quat](#quat)
588
+ - **[setAxisAngle](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L439)**(axis: [vec3](#vec3), rad: number, out?: [quat](#quat) | undefined): [quat](#quat)
589
+ - **[getAxisAngle](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L452)**(out_axis: [vec3](#vec3)): number
590
+ - _static_ **[angle](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L460)**(a: [quat](#quat), b: [quat](#quat)): number
591
+ - **[rotateX](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L476)**(rad: number, out?: [quat](#quat) | undefined): [quat](#quat)
592
+ - **[rotateY](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L484)**(rad: number, out?: [quat](#quat) | undefined): [quat](#quat)
593
+ - **[rotateZ](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L492)**(rad: number, out?: [quat](#quat) | undefined): [quat](#quat)
594
+ - **[calculateW](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L498)**(): number
595
+ - _static_ **[exp](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L506)**(q: [quat](#quat), out?: [quat](#quat) | undefined): [quat](#quat)
596
+ - **[exp](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L513)**(out?: [quat](#quat) | undefined): [quat](#quat)
597
+ - _static_ **[ln](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L521)**(q: [quat](#quat), out?: [quat](#quat) | undefined): [quat](#quat)
598
+ - **[ln](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L528)**(out?: [quat](#quat) | undefined): [quat](#quat)
599
+ - **[pow](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L535)**(b: number): this
600
+ - _static_ **[slerp](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L545)**(a: [quat](#quat), b: [quat](#quat), t: number, out?: [quat](#quat) | undefined): [quat](#quat)
601
+ - **[slerp](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L554)**(b: [quat](#quat), t: number, out?: [quat](#quat) | undefined): [quat](#quat)
602
+ - _static_ **[random](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L561)**(out?: [quat](#quat) | undefined): [quat](#quat)
603
+ - _static_ **[invert](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L569)**(q: [quat](#quat), out?: [quat](#quat) | undefined): [quat](#quat)
604
+ - **[invert](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L576)**(out?: [quat](#quat) | undefined): [quat](#quat)
605
+ - _static_ **[conjugate](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L584)**(q: [quat](#quat), out?: [quat](#quat) | undefined): [quat](#quat)
606
+ - **[conjugate](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L591)**(out?: [quat](#quat) | undefined): [quat](#quat)
607
+ - _static_ **[fromMat3](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L599)**(m: [mat3](#mat3), out?: [quat](#quat) | undefined): [quat](#quat)
608
+ - _static_ **[fromEuler](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L610)**(x: number, y: number, z: number, order?: string | undefined, out?: [quat](#quat) | undefined): [quat](#quat)
609
+ - **[toString](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L616)**(): string
610
+ - _static_ **[dot](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L624)**(a: [quat](#quat), b: [quat](#quat)): number
611
+ - **[dot](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L632)**(b: [quat](#quat)): number
612
+ - **[equals](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L639)**(b: [quat](#quat)): boolean
613
+ - _static_ **[rotationTo](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L649)**(a: [vec3](#vec3), b: [vec3](#vec3), out?: [quat](#quat) | undefined): [quat](#quat)
614
+ - _static_ **[sqlerp](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L663)**(a: [quat](#quat), b: [quat](#quat), c: [quat](#quat), d: [quat](#quat), t: number, out?: [quat](#quat) | undefined): [quat](#quat)
615
+ - _static_ **[setAxes](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L674)**(view: [vec3](#vec3), right: [vec3](#vec3), up: [vec3](#vec3), out?: [quat](#quat) | undefined): [quat](#quat)
616
+ - **[normalize](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L681)**(out?: [quat](#quat) | undefined): [quat](#quat)
617
+ - _static_ **[quatLookAt](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L690)**(direction: [vec3](#vec3), up: [vec3](#vec3), out?: [quat](#quat) | undefined): [quat](#quat)
618
+ - **[pitch](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L696)**(): number
619
+ - **[yaw](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L702)**(): number
620
+ - **[roll](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L708)**(): number
621
+ - **[eulerAngles](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L715)**(out?: [vec3](#vec3) | undefined): [vec3](#vec3)
622
+ - **[toMat3](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L722)**(out?: [mat3](#mat3) | undefined): [mat3](#mat3)
623
+ - **[toMat4](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L729)**(out?: [mat4](#mat4) | undefined): [mat4](#mat4)
624
+
625
+
626
+
627
+ ### [mat4](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L745)
628
+ - **[clone](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L775)**(): [mat4](#mat4)
629
+ - **[transpose](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L782)**(out?: [mat4](#mat4) | undefined): [mat4](#mat4)
630
+ - **[invert](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L789)**(out?: [mat4](#mat4) | undefined): [mat4](#mat4) | null
631
+ - **[adjoint](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L796)**(out?: [mat4](#mat4) | undefined): [mat4](#mat4)
632
+ - **[determinant](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L802)**(): number
633
+ - **[multiply](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L810)**(b: [vec2](#vec2)): [vec2](#vec2)
634
+ - **[multiply](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L811)**(b: [vec3](#vec3)): [vec3](#vec3)
635
+ - **[multiply](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L812)**(b: [vec4](#vec4)): [vec4](#vec4)
636
+ - **[multiply](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L813)**(b: [mat4](#mat4), out?: [mat4](#mat4) | undefined): [mat4](#mat4)
637
+ - **[translate](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L821)**(v: [vec3](#vec3), out?: [mat4](#mat4) | undefined): [mat4](#mat4)
638
+ - **[scale](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L829)**(v: [vec3](#vec3), out?: [mat4](#mat4) | undefined): [mat4](#mat4)
639
+ - **[rotate](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L838)**(rad: number, axis: [vec3](#vec3), out?: [mat4](#mat4) | undefined): [mat4](#mat4) | null
640
+ - **[rotateX](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L846)**(rad: number, out?: [mat4](#mat4) | undefined): [mat4](#mat4)
641
+ - **[rotateY](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L854)**(rad: number, out?: [mat4](#mat4) | undefined): [mat4](#mat4)
642
+ - **[rotateZ](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L862)**(rad: number, out?: [mat4](#mat4) | undefined): [mat4](#mat4)
643
+ - **[getTranslation](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L869)**(out?: [vec3](#vec3) | undefined): [vec3](#vec3)
644
+ - **[getScaling](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L876)**(out?: [vec3](#vec3) | undefined): [vec3](#vec3)
645
+ - **[getRotation](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L886)**(out?: [quat](#quat) | undefined): [quat](#quat)
646
+ - **[decompose](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L895)**(out_r?: [quat](#quat) | undefined, out_t?: [vec3](#vec3) | undefined, out_s?: [vec3](#vec3) | undefined): [quat](#quat)
647
+ - _static_ **[fromTranslation](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L903)**(v: [vec3](#vec3), out?: [mat4](#mat4) | undefined): [mat4](#mat4)
648
+ - _static_ **[fromScaling](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L911)**(v: [vec3](#vec3), out?: [mat4](#mat4) | undefined): [mat4](#mat4)
649
+ - _static_ **[fromRotation](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L920)**(rad: number, axis: [vec3](#vec3), out?: [mat4](#mat4) | undefined): [mat4](#mat4) | null
650
+ - _static_ **[fromXRotation](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L928)**(rad: number, out?: [mat4](#mat4) | undefined): [mat4](#mat4)
651
+ - _static_ **[fromYRotation](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L936)**(rad: number, out?: [mat4](#mat4) | undefined): [mat4](#mat4)
652
+ - _static_ **[fromZRotation](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L944)**(rad: number, out?: [mat4](#mat4) | undefined): [mat4](#mat4)
653
+ - _static_ **[fromRotationTranslation](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L953)**(q: [quat](#quat), v: [vec3](#vec3), out?: [mat4](#mat4) | undefined): [mat4](#mat4)
654
+ - _static_ **[fromRotationTranslationScale](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L963)**(q: [quat](#quat), v: [vec3](#vec3), s: [vec3](#vec3), out?: [mat4](#mat4) | undefined): [mat4](#mat4)
655
+ - _static_ **[fromRotationTranslationScaleOrigin](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L974)**(q: [quat](#quat), v: [vec3](#vec3), s: [vec3](#vec3), o: [vec3](#vec3), out?: [mat4](#mat4) | undefined): [mat4](#mat4)
656
+ - _static_ **[fromQuat](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L982)**(q: [quat](#quat), out?: [mat4](#mat4) | undefined): [mat4](#mat4)
657
+ - _static_ **[frustum](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L995)**(left: number, right: number, bottom: number, top: number, near: number, far: number, out?: [mat4](#mat4) | undefined): [mat4](#mat4)
658
+ - _static_ **[perspectiveNO](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L1008)**(fovy: number, aspect: number, near: number, far: number | null, out?: [mat4](#mat4) | undefined): [mat4](#mat4)
659
+ - _static_ **[perspectiveZO](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L1022)**(fovy: number, aspect: number, near: number, far: number | null, out?: [mat4](#mat4) | undefined): [mat4](#mat4)
660
+ - _static_ **[perspectiveFromFieldOfView](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L1032)**(fov: { updegrees: number; downdegrees: number; leftdegrees: number; rightdegrees: number; }, near: number, far: number, out?: [mat4](#mat4) | undefined): [mat4](#mat4)
661
+ - _static_ **[orthoNO](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L1052)**(left: number, right: number, bottom: number, top: number, near: number, far: number, out?: [mat4](#mat4) | undefined): [mat4](#mat4)
662
+ - _static_ **[orthoZO](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L1068)**(left: number, right: number, bottom: number, top: number, near: number, far: number, out?: [mat4](#mat4) | undefined): [mat4](#mat4)
663
+ - _static_ **[lookAt](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L1079)**(eye: [vec3](#vec3), center: [vec3](#vec3), up: [vec3](#vec3), out?: [mat4](#mat4) | undefined): [mat4](#mat4)
664
+ - _static_ **[targetTo](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L1089)**(eye: [vec3](#vec3), target: [vec3](#vec3), up: [vec3](#vec3), out?: [mat4](#mat4) | undefined): [mat4](#mat4)
665
+ - _static_ **[infinitePerspective](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L1100)**(fovy: number, aspect: number, near: number, out?: [mat4](#mat4) | undefined): [mat4](#mat4)
666
+ - _static_ **[project](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L1112)**(obj: [vec3](#vec3), model: [mat4](#mat4), proj: [mat4](#mat4), viewport: [vec4](#vec4), out?: [vec3](#vec3) | undefined): [vec3](#vec3)
667
+ - _static_ **[unProject](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L1124)**(win: [vec3](#vec3), model: [mat4](#mat4), proj: [mat4](#mat4), viewport: [vec4](#vec4), out?: [vec3](#vec3) | undefined): [vec3](#vec3) | null
668
+ - **[frob](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L1130)**(): number
669
+ - **[plus](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L1138)**(b: [mat4](#mat4), out?: [mat4](#mat4) | undefined): [mat4](#mat4)
670
+ - **[minus](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L1146)**(b: [mat4](#mat4), out?: [mat4](#mat4) | undefined): [mat4](#mat4)
671
+ - **[scaleScalar](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L1154)**(b: number, out?: [mat4](#mat4) | undefined): [mat4](#mat4)
672
+ - **[multiplyScalarAndAdd](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L1163)**(b: [mat4](#mat4), scale: number, out?: [mat4](#mat4) | undefined): [mat4](#mat4)
673
+ - **[toString](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L1169)**(): string
674
+ - **[exactEquals](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L1176)**(b: [mat4](#mat4)): boolean
675
+ - **[equals](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L1183)**(b: [mat4](#mat4)): boolean
676
+
677
+
678
+
679
+ ### [vec4](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L1211)
680
+ - **[plus](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L1242)**(b: number | [vec4](#vec4), out?: [vec4](#vec4) | undefined): [vec4](#vec4)
681
+ - **[minus](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L1250)**(b: number | [vec4](#vec4), out?: [vec4](#vec4) | undefined): [vec4](#vec4)
682
+ - **[mult](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L1258)**(b: number | [vec4](#vec4), out?: [vec4](#vec4) | undefined): [vec4](#vec4)
683
+ - **[div](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L1266)**(b: number | [vec4](#vec4), out?: [vec4](#vec4) | undefined): [vec4](#vec4)
684
+ - **[invDiv](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L1267)**(b: number | [vec4](#vec4), out?: [vec4](#vec4) | undefined): [vec4](#vec4)
685
+ - **[negate](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L1274)**(out?: [vec4](#vec4) | undefined): [vec4](#vec4)
686
+ - **[unaryPlus](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L1275)**(out?: [vec4](#vec4) | undefined): [vec4](#vec4)
687
+ - **[normalize](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L1282)**(out?: [vec4](#vec4) | undefined): [vec4](#vec4)
688
+ - **[equals](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L1289)**(b: [vec4](#vec4)): boolean
689
+ - **[exactEquals](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L1296)**(b: [vec4](#vec4)): boolean
690
+ - **[squaredLength](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L1302)**(): number
691
+ - **[len](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L1308)**(): number
692
+ - **[floor](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L1315)**(out?: [vec4](#vec4) | undefined): [vec4](#vec4)
693
+ - **[round](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L1322)**(out?: [vec4](#vec4) | undefined): [vec4](#vec4)
694
+ - **[ceil](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L1329)**(out?: [vec4](#vec4) | undefined): [vec4](#vec4)
695
+ - **[inverse](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L1336)**(out?: [vec4](#vec4) | undefined): [vec4](#vec4)
696
+ - **[clone](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L1342)**(): [vec4](#vec4)
697
+ - **[toString](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L1348)**(): string
698
+ - _static_ **[random](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L1356)**(scale?: number | undefined, out?: [vec4](#vec4) | undefined): [vec4](#vec4)
699
+ - _static_ **[dot](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L1364)**(a: [vec4](#vec4), b: [vec4](#vec4)): number
700
+ - _static_ **[cross](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L1374)**(u: [vec4](#vec4), v: [vec4](#vec4), w: [vec4](#vec4), out?: [vec4](#vec4) | undefined): [vec4](#vec4)
701
+ - _static_ **[distance](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L1382)**(a: [vec4](#vec4), b: [vec4](#vec4)): number
702
+ - _static_ **[squaredDistance](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L1391)**(a: [vec4](#vec4), b: [vec4](#vec4)): number
703
+ - _static_ **[lerp](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L1402)**(a: [vec4](#vec4), b: [vec4](#vec4), t: number, out?: [vec4](#vec4) | undefined): [vec4](#vec4)
704
+ - _static_ **[max](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L1411)**(a: [vec4](#vec4), b: [vec4](#vec4), out?: [vec4](#vec4) | undefined): [vec4](#vec4)
705
+ - _static_ **[min](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L1420)**(a: [vec4](#vec4), b: [vec4](#vec4), out?: [vec4](#vec4) | undefined): [vec4](#vec4)
706
+ - _static_ **[clamp](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L1430)**(v: [vec4](#vec4), min: number | [vec4](#vec4), max: number | [vec4](#vec4), out?: [vec4](#vec4) | undefined): [vec4](#vec4)
707
+ - _static_ **[mix](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L1440)**(a: [vec4](#vec4), b: [vec4](#vec4), t: number | [vec4](#vec4), out?: [vec4](#vec4) | undefined): [vec4](#vec4)
708
+ - _static_ **[smoothstep](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L1450)**(edge0: number | [vec4](#vec4), edge1: number | [vec4](#vec4), v: [vec4](#vec4), out?: [vec4](#vec4) | undefined): [vec4](#vec4)
709
+ - **[scaleAndAdd](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L1459)**(b: [vec4](#vec4), scale: number, out?: [vec4](#vec4) | undefined): [vec4](#vec4)
710
+ - **[abs](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L1466)**(out?: [vec4](#vec4) | undefined): [vec4](#vec4)
711
+ - **[clamp](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L1475)**(min: number | [vec4](#vec4), max: number | [vec4](#vec4), out?: [vec4](#vec4) | undefined): [vec4](#vec4)
712
+ - **[mix](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L1484)**(b: [vec4](#vec4), t: number | [vec4](#vec4), out?: [vec4](#vec4) | undefined): [vec4](#vec4)
713
+ - **[step](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L1492)**(edge: number | [vec4](#vec4), out?: [vec4](#vec4) | undefined): [vec4](#vec4)
714
+ - **[smoothstep](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L1501)**(edge0: number | [vec4](#vec4), edge1: number | [vec4](#vec4), out?: [vec4](#vec4) | undefined): [vec4](#vec4)
715
+ - **[fract](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L1508)**(out?: [vec4](#vec4) | undefined): [vec4](#vec4)
716
+ - **[sign](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L1515)**(out?: [vec4](#vec4) | undefined): [vec4](#vec4)
717
+ - **[saturate](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L1522)**(out?: [vec4](#vec4) | undefined): [vec4](#vec4)
718
+ - **[transformMat4](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L1530)**(m: [mat4](#mat4), out?: [vec4](#vec4) | undefined): [vec4](#vec4)
719
+ - **[transformQuat](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L1538)**(q: [quat](#quat), out?: [vec4](#vec4) | undefined): [vec4](#vec4)
720
+ - _static_ **[scaleAndAdd](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L1548)**(a: [vec4](#vec4), b: [vec4](#vec4), scale: number, out?: [vec4](#vec4) | undefined): [vec4](#vec4)
721
+
722
+
723
+
724
+ ### [vec3](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L4581)
725
+ - **[plus](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L4615)**(b: number | [vec3](#vec3), out?: [vec3](#vec3) | undefined): [vec3](#vec3)
726
+ - **[minus](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L4623)**(b: number | [vec3](#vec3), out?: [vec3](#vec3) | undefined): [vec3](#vec3)
727
+ - **[mult](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L4631)**(b: number | [vec3](#vec3), out?: [vec3](#vec3) | undefined): [vec3](#vec3)
728
+ - **[div](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L4639)**(b: number | [vec3](#vec3), out?: [vec3](#vec3) | undefined): [vec3](#vec3)
729
+ - **[invDiv](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L4640)**(b: number | [vec3](#vec3), out?: [vec3](#vec3) | undefined): [vec3](#vec3)
730
+ - **[negate](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L4647)**(out?: [vec3](#vec3) | undefined): [vec3](#vec3)
731
+ - **[unaryPlus](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L4648)**(out?: [vec3](#vec3) | undefined): [vec3](#vec3)
732
+ - _static_ **[normalize](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L4656)**(v: [vec3](#vec3), out?: [vec3](#vec3) | undefined): [vec3](#vec3)
733
+ - **[normalize](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L4663)**(out?: [vec3](#vec3) | undefined): [vec3](#vec3)
734
+ - **[equals](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L4670)**(b: [vec3](#vec3)): boolean
735
+ - **[exactEquals](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L4677)**(b: [vec3](#vec3)): boolean
736
+ - **[squaredLength](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L4683)**(): number
737
+ - **[len](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L4689)**(): number
738
+ - _static_ **[floor](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L4696)**(v: [vec3](#vec3), out?: [vec3](#vec3) | undefined): [vec3](#vec3)
739
+ - _static_ **[round](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L4703)**(v: [vec3](#vec3), out?: [vec3](#vec3) | undefined): [vec3](#vec3)
740
+ - _static_ **[ceil](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L4710)**(v: [vec3](#vec3), out?: [vec3](#vec3) | undefined): [vec3](#vec3)
741
+ - **[floor](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L4716)**(out?: [vec3](#vec3) | undefined): [vec3](#vec3)
742
+ - **[round](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L4722)**(out?: [vec3](#vec3) | undefined): [vec3](#vec3)
743
+ - **[ceil](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L4728)**(out?: [vec3](#vec3) | undefined): [vec3](#vec3)
744
+ - _static_ **[inverse](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L4735)**(v: [vec3](#vec3), out?: [vec3](#vec3) | undefined): [vec3](#vec3)
745
+ - **[inverse](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L4741)**(out?: [vec3](#vec3) | undefined): [vec3](#vec3)
746
+ - **[clone](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L4747)**(): [vec3](#vec3)
747
+ - **[toString](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L4753)**(): string
748
+ - _static_ **[random](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L4760)**(scale?: number | undefined): [vec3](#vec3)
749
+ - _static_ **[angle](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L4768)**(a: [vec3](#vec3), b: [vec3](#vec3)): number
750
+ - _static_ **[dot](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L4776)**(a: [vec3](#vec3), b: [vec3](#vec3)): number
751
+ - _static_ **[cross](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L4785)**(a: [vec3](#vec3), b: [vec3](#vec3), out?: [vec3](#vec3) | undefined): [vec3](#vec3)
752
+ - _static_ **[distance](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L4793)**(a: [vec3](#vec3), b: [vec3](#vec3)): number
753
+ - _static_ **[squaredDistance](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L4802)**(a: [vec3](#vec3), b: [vec3](#vec3)): number
754
+ - _static_ **[lerp](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L4813)**(a: [vec3](#vec3), b: [vec3](#vec3), t: number, out?: [vec3](#vec3) | undefined): [vec3](#vec3)
755
+ - _static_ **[slerp](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L4823)**(a: [vec3](#vec3), b: [vec3](#vec3), t: number, out?: [vec3](#vec3) | undefined): [vec3](#vec3)
756
+ - _static_ **[max](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L4831)**(a: [vec3](#vec3), b: [vec3](#vec3), out?: [vec3](#vec3) | undefined): [vec3](#vec3)
757
+ - _static_ **[min](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L4839)**(a: [vec3](#vec3), b: [vec3](#vec3), out?: [vec3](#vec3) | undefined): [vec3](#vec3)
758
+ - _static_ **[clamp](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L4849)**(v: [vec3](#vec3), min: number | [vec3](#vec3), max: number | [vec3](#vec3), out?: [vec3](#vec3) | undefined): [vec3](#vec3)
759
+ - _static_ **[mix](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L4859)**(a: [vec3](#vec3), b: [vec3](#vec3), t: number | [vec3](#vec3), out?: [vec3](#vec3) | undefined): [vec3](#vec3)
760
+ - _static_ **[smoothstep](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L4869)**(edge0: number | [vec3](#vec3), edge1: number | [vec3](#vec3), v: [vec3](#vec3), out?: [vec3](#vec3) | undefined): [vec3](#vec3)
761
+ - _static_ **[rotateX](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L4878)**(v: [vec3](#vec3), rad: number, origin?: [vec3](#vec3) | undefined, out?: [vec3](#vec3) | undefined): [vec3](#vec3)
762
+ - **[rotateX](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L4886)**(rad: number, origin?: [vec3](#vec3) | undefined, out?: [vec3](#vec3) | undefined): [vec3](#vec3)
763
+ - _static_ **[rotateY](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L4895)**(v: [vec3](#vec3), rad: number, origin?: [vec3](#vec3) | undefined, out?: [vec3](#vec3) | undefined): [vec3](#vec3)
764
+ - **[rotateY](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L4902)**(rad: number, origin?: [vec3](#vec3) | undefined, out?: [vec3](#vec3) | undefined): [vec3](#vec3)
765
+ - _static_ **[rotateZ](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L4911)**(v: [vec3](#vec3), rad: number, origin?: [vec3](#vec3) | undefined, out?: [vec3](#vec3) | undefined): [vec3](#vec3)
766
+ - **[rotateZ](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L4918)**(rad: number, origin?: [vec3](#vec3) | undefined, out?: [vec3](#vec3) | undefined): [vec3](#vec3)
767
+ - _static_ **[hermite](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L4929)**(a: [vec3](#vec3), b: [vec3](#vec3), c: [vec3](#vec3), d: [vec3](#vec3), t: number, out?: [vec3](#vec3) | undefined): [vec3](#vec3)
768
+ - _static_ **[bezier](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L4940)**(a: [vec3](#vec3), b: [vec3](#vec3), c: [vec3](#vec3), d: [vec3](#vec3), t: number, out?: [vec3](#vec3) | undefined): [vec3](#vec3)
769
+ - _static_ **[scaleAndAdd](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L4950)**(a: [vec3](#vec3), b: [vec3](#vec3), scale: number, out?: [vec3](#vec3) | undefined): [vec3](#vec3)
770
+ - _static_ **[reflect](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L4959)**(I: [vec3](#vec3), N: [vec3](#vec3), out?: [vec3](#vec3) | undefined): [vec3](#vec3)
771
+ - _static_ **[refract](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L4969)**(I: [vec3](#vec3), N: [vec3](#vec3), eta: number, out?: [vec3](#vec3) | undefined): [vec3](#vec3)
772
+ - _static_ **[faceforward](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L4979)**(N: [vec3](#vec3), I: [vec3](#vec3), Nref: [vec3](#vec3), out?: [vec3](#vec3) | undefined): [vec3](#vec3)
773
+ - _static_ **[triangleNormal](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L4989)**(p1: [vec3](#vec3), p2: [vec3](#vec3), p3: [vec3](#vec3), out?: [vec3](#vec3) | undefined): [vec3](#vec3)
774
+ - _static_ **[project](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L4998)**(a: [vec3](#vec3), b: [vec3](#vec3), out?: [vec3](#vec3) | undefined): [vec3](#vec3)
775
+ - _static_ **[orientedAngle](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L5007)**(a: [vec3](#vec3), b: [vec3](#vec3), ref: [vec3](#vec3)): number
776
+ - **[scaleAndAdd](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L5016)**(b: [vec3](#vec3), scale: number, out?: [vec3](#vec3) | undefined): [vec3](#vec3)
777
+ - **[abs](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L5023)**(out?: [vec3](#vec3) | undefined): [vec3](#vec3)
778
+ - **[clamp](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L5032)**(min: number | [vec3](#vec3), max: number | [vec3](#vec3), out?: [vec3](#vec3) | undefined): [vec3](#vec3)
779
+ - **[mix](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L5041)**(b: [vec3](#vec3), t: number | [vec3](#vec3), out?: [vec3](#vec3) | undefined): [vec3](#vec3)
780
+ - **[step](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L5049)**(edge: number | [vec3](#vec3), out?: [vec3](#vec3) | undefined): [vec3](#vec3)
781
+ - **[smoothstep](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L5058)**(edge0: number | [vec3](#vec3), edge1: number | [vec3](#vec3), out?: [vec3](#vec3) | undefined): [vec3](#vec3)
782
+ - **[fract](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L5065)**(out?: [vec3](#vec3) | undefined): [vec3](#vec3)
783
+ - **[sign](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L5072)**(out?: [vec3](#vec3) | undefined): [vec3](#vec3)
784
+ - **[saturate](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L5079)**(out?: [vec3](#vec3) | undefined): [vec3](#vec3)
785
+ - **[transformMat3](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L5087)**(m: [mat3](#mat3), out?: [vec3](#vec3) | undefined): [vec3](#vec3)
786
+ - **[transformMat4](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L5095)**(m: [mat4](#mat4), out?: [vec3](#vec3) | undefined): [vec3](#vec3)
787
+ - **[transformQuat](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L5103)**(q: [quat](#quat), out?: [vec3](#vec3) | undefined): [vec3](#vec3)
788
+
789
+
790
+
791
+ ### [mat2](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L8136)
792
+ - **[clone](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L8154)**(): [mat2](#mat2)
793
+ - **[transpose](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L8161)**(out?: [mat2](#mat2) | undefined): [mat2](#mat2)
794
+ - **[invert](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L8168)**(out?: [mat2](#mat2) | undefined): [mat2](#mat2) | null
795
+ - **[adjoint](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L8175)**(out?: [mat2](#mat2) | undefined): [mat2](#mat2)
796
+ - **[determinant](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L8181)**(): number
797
+ - **[rotate](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L8189)**(rad: number, out?: [mat2](#mat2) | undefined): [mat2](#mat2)
798
+ - **[scale](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L8197)**(v: [vec2](#vec2), out?: [mat2](#mat2) | undefined): [mat2](#mat2)
799
+ - _static_ **[fromRotation](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L8205)**(rad: number, out?: [mat2](#mat2) | undefined): [mat2](#mat2)
800
+ - _static_ **[fromScaling](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L8213)**(v: [vec2](#vec2), out?: [mat2](#mat2) | undefined): [mat2](#mat2)
801
+ - **[toString](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L8219)**(): string
802
+ - **[frob](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L8224)**(): number
803
+ - **[LDU](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L8231)**(L?: [mat2](#mat2) | undefined, D?: [mat2](#mat2) | undefined, U?: [mat2](#mat2) | undefined): mat2[]
804
+ - **[plus](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L8239)**(b: [mat2](#mat2), out?: [mat2](#mat2) | undefined): [mat2](#mat2)
805
+ - **[minus](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L8247)**(b: [mat2](#mat2), out?: [mat2](#mat2) | undefined): [mat2](#mat2)
806
+ - **[multiply](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L8255)**(b: [vec2](#vec2)): [vec2](#vec2)
807
+ - **[multiply](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L8256)**(b: [mat2](#mat2), out?: [mat2](#mat2) | undefined): [mat2](#mat2)
808
+ - **[exactEquals](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L8263)**(b: [mat2](#mat2)): boolean
809
+ - **[equals](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L8270)**(b: [mat2](#mat2)): boolean
810
+ - **[scaleScalar](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L8278)**(b: number, out?: [mat2](#mat2) | undefined): [mat2](#mat2)
811
+
812
+
813
+
814
+ ### [vec2](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L8301)
815
+ - **[plus](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L8326)**(b: number | [vec2](#vec2), out?: [vec2](#vec2) | undefined): [vec2](#vec2)
816
+ - **[minus](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L8334)**(b: number | [vec2](#vec2), out?: [vec2](#vec2) | undefined): [vec2](#vec2)
817
+ - **[mult](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L8342)**(b: number | [vec2](#vec2), out?: [vec2](#vec2) | undefined): [vec2](#vec2)
818
+ - **[div](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L8350)**(b: number | [vec2](#vec2), out?: [vec2](#vec2) | undefined): [vec2](#vec2)
819
+ - **[invDiv](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L8358)**(a: number | [vec2](#vec2), out?: [vec2](#vec2) | undefined): [vec2](#vec2)
820
+ - **[rem](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L8366)**(b: number | [vec2](#vec2), out?: [vec2](#vec2) | undefined): [vec2](#vec2)
821
+ - **[negate](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L8373)**(out?: [vec2](#vec2) | undefined): [vec2](#vec2)
822
+ - **[unaryPlus](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L8374)**(out?: [vec2](#vec2) | undefined): [vec2](#vec2)
823
+ - **[normalize](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L8380)**(out?: [vec2](#vec2) | undefined): [vec2](#vec2)
824
+ - **[equals](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L8387)**(b: [vec2](#vec2)): boolean
825
+ - **[exactEquals](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L8394)**(b: [vec2](#vec2)): boolean
826
+ - **[squaredLength](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L8400)**(): number
827
+ - **[len](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L8406)**(): number
828
+ - **[floor](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L8413)**(out?: [vec2](#vec2) | undefined): [vec2](#vec2)
829
+ - **[round](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L8420)**(out?: [vec2](#vec2) | undefined): [vec2](#vec2)
830
+ - **[ceil](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L8427)**(out?: [vec2](#vec2) | undefined): [vec2](#vec2)
831
+ - **[inverse](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L8434)**(out?: [vec2](#vec2) | undefined): [vec2](#vec2)
832
+ - **[clone](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L8440)**(): [vec2](#vec2)
833
+ - **[rotate](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L8449)**(rad?: number | undefined, origin?: [vec2](#vec2) | undefined, out?: [vec2](#vec2) | undefined): [vec2](#vec2)
834
+ - **[toString](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L8455)**(): string
835
+ - _static_ **[random](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L8462)**(scale?: number | undefined, out?: [vec2](#vec2) | undefined): [vec2](#vec2)
836
+ - _static_ **[angle](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L8470)**(a: [vec2](#vec2), b: [vec2](#vec2)): number
837
+ - _static_ **[signedAngle](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L8478)**(a: [vec2](#vec2), b: [vec2](#vec2)): number
838
+ - _static_ **[dot](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L8486)**(a: [vec2](#vec2), b: [vec2](#vec2)): number
839
+ - **[dot](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L8493)**(b: [vec2](#vec2)): number
840
+ - _static_ **[cross](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L8502)**(a: [vec2](#vec2), b: [vec2](#vec2), out?: [vec3](#vec3) | undefined): [vec3](#vec3)
841
+ - _static_ **[distance](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L8510)**(a: [vec2](#vec2), b: [vec2](#vec2)): number
842
+ - _static_ **[squaredDistance](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L8519)**(a: [vec2](#vec2), b: [vec2](#vec2)): number
843
+ - _static_ **[lerp](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L8529)**(a: [vec2](#vec2), b: [vec2](#vec2), t: number, out?: [vec2](#vec2) | undefined): [vec2](#vec2)
844
+ - _static_ **[max](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L8537)**(a: [vec2](#vec2), b: [vec2](#vec2), out?: [vec2](#vec2) | undefined): [vec2](#vec2)
845
+ - _static_ **[min](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L8545)**(a: [vec2](#vec2), b: [vec2](#vec2), out?: [vec2](#vec2) | undefined): [vec2](#vec2)
846
+ - _static_ **[clamp](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L8554)**(v: [vec2](#vec2), min: number | [vec2](#vec2), max: number | [vec2](#vec2), out?: [vec2](#vec2) | undefined): [vec2](#vec2)
847
+ - _static_ **[mix](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L8563)**(a: [vec2](#vec2), b: [vec2](#vec2), t: number | [vec2](#vec2), out?: [vec2](#vec2) | undefined): [vec2](#vec2)
848
+ - _static_ **[smoothstep](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L8572)**(edge0: number | [vec2](#vec2), edge1: number | [vec2](#vec2), v: [vec2](#vec2), out?: [vec2](#vec2) | undefined): [vec2](#vec2)
849
+ - **[scaleAndAdd](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L8581)**(b: [vec2](#vec2), scale: number, out?: [vec2](#vec2) | undefined): [vec2](#vec2)
850
+ - **[abs](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L8588)**(out?: [vec2](#vec2) | undefined): [vec2](#vec2)
851
+ - **[sign](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L8595)**(out?: [vec2](#vec2) | undefined): [vec2](#vec2)
852
+ - **[fract](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L8602)**(out?: [vec2](#vec2) | undefined): [vec2](#vec2)
853
+ - **[clamp](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L8611)**(min: number | [vec2](#vec2), max: number | [vec2](#vec2), out?: [vec2](#vec2) | undefined): [vec2](#vec2)
854
+ - **[saturate](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L8618)**(out?: [vec2](#vec2) | undefined): [vec2](#vec2)
855
+ - **[mix](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L8627)**(b: [vec2](#vec2), t: number | [vec2](#vec2), out?: [vec2](#vec2) | undefined): [vec2](#vec2)
856
+ - **[step](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L8635)**(edge: number | [vec2](#vec2), out?: [vec2](#vec2) | undefined): [vec2](#vec2)
857
+ - **[smoothstep](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L8644)**(edge0: number | [vec2](#vec2), edge1: number | [vec2](#vec2), out?: [vec2](#vec2) | undefined): [vec2](#vec2)
858
+ - **[transformMat2](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L8652)**(m: [mat2](#mat2), out?: [vec2](#vec2) | undefined): [vec2](#vec2)
859
+ - **[transformMat2x3](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L8660)**(m: [mat2x3](#mat2x3), out?: [vec2](#vec2) | undefined): [vec2](#vec2)
860
+ - **[transformMat3](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L8668)**(m: [mat3](#mat3), out?: [vec2](#vec2) | undefined): [vec2](#vec2)
861
+ - **[transformMat4](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L8676)**(m: [mat4](#mat4), out?: [vec2](#vec2) | undefined): [vec2](#vec2)
862
+ - _static_ **[scaleAndAdd](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L8686)**(a: [vec2](#vec2), b: [vec2](#vec2), scale: number, out?: [vec2](#vec2) | undefined): [vec2](#vec2)
863
+ - _static_ **[reflect](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L8695)**(I: [vec2](#vec2), N: [vec2](#vec2), out?: [vec2](#vec2) | undefined): [vec2](#vec2)
864
+
865
+
866
+
867
+ ### [quat2](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L11733)
868
+ - **[getReal](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L11756)**(out?: [quat](#quat) | undefined): [quat](#quat)
869
+ - **[getDual](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L11763)**(out?: [quat](#quat) | undefined): [quat](#quat)
870
+ - **[setReal](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L11770)**(q: [quat](#quat)): this
871
+ - **[setDual](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L11777)**(q: [quat](#quat)): this
872
+ - **[getTranslation](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L11784)**(out?: [vec3](#vec3) | undefined): [vec3](#vec3)
873
+ - _static_ **[fromRotationTranslation](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L11793)**(q: [quat](#quat), t: [vec3](#vec3), out?: [quat2](#quat2) | undefined): [quat2](#quat2)
874
+ - _static_ **[fromTranslation](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L11801)**(t: [vec3](#vec3), out?: [quat2](#quat2) | undefined): [quat2](#quat2)
875
+ - _static_ **[fromRotation](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L11809)**(q: [quat](#quat), out?: [quat2](#quat2) | undefined): [quat2](#quat2)
876
+ - _static_ **[fromMat4](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L11817)**(m: [mat4](#mat4), out?: [quat2](#quat2) | undefined): [quat2](#quat2)
877
+ - **[clone](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L11823)**(): [quat2](#quat2)
878
+ - **[translate](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L11839)**(v: [vec3](#vec3), out?: [quat2](#quat2) | undefined): [quat2](#quat2)
879
+ - **[conjugate](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L11846)**(out?: [quat2](#quat2) | undefined): [quat2](#quat2)
880
+ - **[invert](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L11853)**(out?: [quat2](#quat2) | undefined): [quat2](#quat2)
881
+ - **[squaredLength](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L11859)**(): number
882
+ - **[len](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L11865)**(): number
883
+ - **[normalize](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L11872)**(out?: [quat2](#quat2) | undefined): [quat2](#quat2)
884
+ - _static_ **[dot](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L11880)**(a: [quat2](#quat2), b: [quat2](#quat2)): number
885
+ - _static_ **[lerp](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L11890)**(a: [quat2](#quat2), b: [quat2](#quat2), t: number, out?: [quat2](#quat2) | undefined): [quat2](#quat2)
886
+ - **[plus](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L11898)**(b: [quat2](#quat2), out?: [quat2](#quat2) | undefined): [quat2](#quat2)
887
+ - **[scale](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L11906)**(s: number, out?: [quat2](#quat2) | undefined): [quat2](#quat2)
888
+ - **[equals](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L11913)**(b: [quat2](#quat2)): boolean
889
+ - **[exactEquals](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L11920)**(b: [quat2](#quat2)): boolean
890
+ - **[toString](https://github.com/dkaraush/glmaths/blob/main/src/glmaths.d.ts#L11926)**(): string
891
+
892
+ <!-- DOCS -->
893
+
894
+ ## Benchmark results
895
+
896
+ You can run benchmark with `npm run bench`.
897
+
898
+ Suprisingly, in most operations `glmat` comes faster than its simpler `gl-matrix` library? I honestly quite skeptical about it.
899
+
900
+ This benchmark, though, doesn't tell the difference in loading up a library. When I started running benchmarks, I noticed how on first test `glmat` was consistently slower, than `gl-matrix`; and I believe this is a setup cost for extending `Float32Array` with all methods and getters for swizzles. There is a hack in `bencmark.js` to overcome this.
901
+
902
+ ## Benchmark Results
903
+
904
+ | Operation | gl-matrix | glmaths | Diff |
905
+ |:---|---:|---:|---:|
906
+ | Vec3 creation | 41.8M ops/s ±3.0% | 40.9M ops/s ±1.5% | -2% |
907
+ | Vec3 add | 137.9M ops/s ±3.1% | 193.8M ops/s ±4.6% | **+40%** |
908
+ | Vec3 dot | 151.6M ops/s ±3.5% | 234.1M ops/s ±5.3% | **+54%** |
909
+ | Vec3 cross | 135.0M ops/s ±2.8% | 196.2M ops/s ±3.6% | **+45%** |
910
+ | Vec3 normalize | 136.5M ops/s ±2.5% | 207.2M ops/s ±4.0% | **+52%** |
911
+ | Vec3 scale | 143.2M ops/s ±4.0% | 216.0M ops/s ±4.1% | **+51%** |
912
+ | Vec3 length | 162.0M ops/s ±3.1% | 258.5M ops/s ±5.1% | **+60%** |
913
+ | Vec3 distance | 155.4M ops/s ±2.8% | 235.8M ops/s ±5.3% | **+52%** |
914
+ | Vec3 lerp | 132.8M ops/s ±3.6% | 192.0M ops/s ±4.3% | **+45%** |
915
+ | Vec2 creation | 41.8M ops/s ±1.4% | 42.4M ops/s ±1.2% | +2% |
916
+ | Vec2 add | 142.5M ops/s ±3.3% | 220.5M ops/s ±4.2% | **+55%** |
917
+ | Vec4 add | 131.1M ops/s ±2.4% | 107.3M ops/s ±2.5% | **-18%** |
918
+ | Vec4 normalize | 127.3M ops/s ±2.2% | 111.6M ops/s ±3.0% | **-12%** |
919
+ | Mat4 creation | 41.1M ops/s ±1.6% | 44.0M ops/s ±1.4% | +7% |
920
+ | Mat4 multiply | 58.1M ops/s ±2.1% | 52.6M ops/s ±1.4% | -9% |
921
+ | Mat4 invert | 60.6M ops/s ±2.7% | 69.5M ops/s ±1.0% | **+15%** |
922
+ | Mat4 transpose | 107.7M ops/s ±2.4% | 120.1M ops/s ±2.6% | **+11%** |
923
+ | Mat4 translate | 78.0M ops/s ±2.0% | 73.7M ops/s ±2.2% | -5% |
924
+ | Mat4 scale | 96.6M ops/s ±2.2% | 123.3M ops/s ±2.1% | **+28%** |
925
+ | Mat4 rotateX | 95.3M ops/s ±2.6% | 102.5M ops/s ±2.8% | +8% |
926
+ | Mat4 determinant | 133.1M ops/s ±2.6% | 194.2M ops/s ±5.2% | **+46%** |
927
+ | Mat4 perspective | 125.5M ops/s ±2.1% | 175.5M ops/s ±3.2% | **+40%** |
928
+ | Mat4 lookAt | 45.7M ops/s ±1.9% | 55.6M ops/s ±2.1% | **+22%** |
929
+ | Mat3 multiply | 94.3M ops/s ±1.7% | 78.5M ops/s ±2.1% | **-17%** |
930
+ | Mat3 invert | 106.1M ops/s ±2.3% | 139.9M ops/s ±2.6% | **+32%** |
931
+ | Quat multiply | 121.1M ops/s ±2.6% | 167.3M ops/s ±4.3% | **+38%** |
932
+ | Quat slerp | 56.6M ops/s ±2.0% | 125.3M ops/s ±1.6% | **+121%** |
933
+ | Quat normalize | 130.7M ops/s ±2.2% | 173.0M ops/s ±3.5% | **+32%** |
934
+ | Quat invert | 133.4M ops/s ±2.7% | 195.1M ops/s ±4.2% | **+46%** |
935
+ | Quat fromAxisAngle | 143.0M ops/s ±3.2% | 201.9M ops/s ±4.5% | **+41%** |
936
+ | Vec3 transformMat4 | 102.4M ops/s ±2.7% | 140.3M ops/s ±2.0% | **+37%** |
937
+ | Vec3 transformQuat | 121.1M ops/s ±3.0% | 165.9M ops/s ±4.5% | **+37%** |
938
+ | Vec3 scaleAndAdd | 137.1M ops/s ±2.5% | 191.9M ops/s ±4.3% | **+40%** |
939
+ | Vec3 mix (lerp) | 134.1M ops/s ±2.8% | 189.6M ops/s ±3.6% | **+41%** |
940
+ | Vec4 transformMat4 | 100.5M ops/s ±2.5% | 84.8M ops/s ±1.8% | **-16%** |
941
+ | Mat4 project | — | 31.5M ops/s ±1.0% | — |
942
+ | Mat4 unProject | — | 11.9M ops/s ±1.1% | — |
943
+ | Quat eulerAngles / pitch / yaw / roll | — | 248.4M ops/s ±5.1% | — |
944
+ | Quat toMat4 vs Mat4.fromQuat | — | 148.5M ops/s ±2.9% | — |
945
+ | Quat2 multiply | — | 89.9M ops/s ±2.2% | — |
946
+ | Quat2 getTranslation | — | 42.5M ops/s ±1.1% | — |
947
+
948
+ _Benchmark was run on my Macbook Pro M4._
949
+
950
+ ### Tests
951
+
952
+ You can run tests with `npm run test`