vmath/README.md

1564 lines
16 KiB
Markdown
Raw Normal View History

# VMath
Collection of math routines for 2d and 3d graphics.
Has functions for Vec2, Vec3, Vec4, Mat3, Mat4 and Quat.
2019-10-17 14:42:23 +00:00
# API: vmath
```nim
import vmath
```
2020-03-18 00:38:39 +00:00
## **func** between
2020-03-09 03:13:25 +00:00
Returns true if value is between min and max or equal to them.
```nim
2020-03-18 00:38:39 +00:00
func between(value, min, max: float32): bool
2020-03-09 03:13:25 +00:00
```
2020-03-18 00:38:39 +00:00
## **func** sign
2019-10-17 14:42:23 +00:00
Returns the sign of a number, -1 or 1.
```nim
2020-03-18 00:38:39 +00:00
func sign(v: float32): float32
2019-10-17 14:42:23 +00:00
```
2020-03-18 00:38:39 +00:00
## **func** quantize
2019-10-17 14:42:23 +00:00
Makes v be multipe of n. Rounding to integer quantize by 1.0.
2019-10-17 14:42:23 +00:00
```nim
2020-03-18 00:38:39 +00:00
func quantize(v: float32; n: float32): float32
2019-10-17 14:42:23 +00:00
```
2020-03-18 00:38:39 +00:00
## **func** lerp
2019-10-17 14:42:23 +00:00
Interpolates value between a and b.
* 0 -> a
* 1 -> b
* 0.5 -> between a and b
```nim
2020-03-18 00:38:39 +00:00
func lerp(a: float32; b: float32; v: float32): float32
2019-10-17 14:42:23 +00:00
```
## **type** Vec2
2D vector
```nim
Vec2 = object
2020-03-09 03:13:25 +00:00
x*: float32
y*: float32
2019-10-17 14:42:23 +00:00
```
2020-03-18 00:38:39 +00:00
## **func** vec2
2019-10-17 14:42:23 +00:00
```nim
2020-03-18 00:38:39 +00:00
func vec2(x, y: float32): Vec2
2019-10-17 14:42:23 +00:00
```
2020-03-18 00:38:39 +00:00
## **func** vec2
2019-10-17 14:42:23 +00:00
2020-11-22 04:18:50 +00:00
```nim
func vec2(v: float32): Vec2
```
## **func** vec2
2019-10-17 14:42:23 +00:00
```nim
2020-03-18 00:38:39 +00:00
func vec2(a: Vec2): Vec2
2019-10-17 14:42:23 +00:00
```
2020-03-18 00:38:39 +00:00
## **func** `+`
2019-10-17 14:42:23 +00:00
```nim
2020-03-18 00:38:39 +00:00
func `+`(a: Vec2; b: Vec2): Vec2
2019-10-17 14:42:23 +00:00
```
2020-03-18 00:38:39 +00:00
## **func** `-`
2019-10-17 14:42:23 +00:00
```nim
2020-03-18 00:38:39 +00:00
func `-`(a: Vec2; b: Vec2): Vec2
2019-10-17 14:42:23 +00:00
```
2020-03-18 00:38:39 +00:00
## **func** `*`
2019-10-17 14:42:23 +00:00
```nim
2020-03-18 00:38:39 +00:00
func `*`(a: Vec2; b: float32): Vec2
2019-10-17 14:42:23 +00:00
```
2020-03-18 00:38:39 +00:00
## **func** `*`
2019-10-17 14:42:23 +00:00
```nim
2020-03-18 00:38:39 +00:00
func `*`(a: float32; b: Vec2): Vec2
2019-10-17 14:42:23 +00:00
```
2020-03-18 00:38:39 +00:00
## **func** `/`
2019-10-17 14:42:23 +00:00
```nim
2020-03-18 00:38:39 +00:00
func `/`(a: Vec2; b: float32): Vec2
2019-10-17 14:42:23 +00:00
```
2020-03-18 00:38:39 +00:00
## **func** `+=`
2019-10-17 14:42:23 +00:00
```nim
2020-03-18 00:38:39 +00:00
func `+=`(a: var Vec2; b: Vec2)
2019-10-17 14:42:23 +00:00
```
2020-03-18 00:38:39 +00:00
## **func** `-=`
2019-10-17 14:42:23 +00:00
```nim
2020-03-18 00:38:39 +00:00
func `-=`(a: var Vec2; b: Vec2)
2019-10-17 14:42:23 +00:00
```
2020-03-18 00:38:39 +00:00
## **func** `*=`
2019-10-17 14:42:23 +00:00
```nim
2020-03-18 00:38:39 +00:00
func `*=`(a: var Vec2; b: float32)
2019-10-17 14:42:23 +00:00
```
2020-03-18 00:38:39 +00:00
## **func** `/=`
2019-10-17 14:42:23 +00:00
```nim
2020-03-18 00:38:39 +00:00
func `/=`(a: var Vec2; b: float32)
2019-10-17 14:42:23 +00:00
```
2020-03-18 00:38:39 +00:00
## **func** zero
2019-10-17 14:42:23 +00:00
```nim
2020-03-18 00:38:39 +00:00
func zero(a: var Vec2)
2019-10-17 14:42:23 +00:00
```
2020-03-18 00:38:39 +00:00
## **func** `-`
2019-10-17 14:42:23 +00:00
```nim
2020-03-18 00:38:39 +00:00
func `-`(a: Vec2): Vec2
2019-10-17 14:42:23 +00:00
```
2020-11-22 04:18:50 +00:00
## **func** hash
```nim
func hash(a: Vec2): Hash
```
2020-03-18 00:38:39 +00:00
## **func** lengthSq
2019-10-17 14:42:23 +00:00
```nim
2020-03-18 00:38:39 +00:00
func lengthSq(a: Vec2): float32
2019-10-17 14:42:23 +00:00
```
2020-03-18 00:38:39 +00:00
## **func** length
2019-10-17 14:42:23 +00:00
```nim
2020-03-18 00:38:39 +00:00
func length(a: Vec2): float32
2019-10-17 14:42:23 +00:00
```
2020-03-18 00:38:39 +00:00
## **func** length=
2019-10-17 14:42:23 +00:00
```nim
2020-03-18 00:38:39 +00:00
func length=(a: var Vec2; b: float32)
2019-10-17 14:42:23 +00:00
```
2020-03-18 00:38:39 +00:00
## **func** normalize
2019-10-17 14:42:23 +00:00
```nim
2020-03-18 00:38:39 +00:00
func normalize(a: Vec2): Vec2
2019-10-17 14:42:23 +00:00
```
2020-03-18 00:38:39 +00:00
## **func** dot
2019-10-17 14:42:23 +00:00
```nim
2020-03-18 00:38:39 +00:00
func dot(a: Vec2; b: Vec2): float32
2019-10-17 14:42:23 +00:00
```
2020-03-18 00:38:39 +00:00
## **func** dir
2019-10-17 14:42:23 +00:00
```nim
2020-03-18 00:38:39 +00:00
func dir(at: Vec2; to: Vec2): Vec2
2019-10-17 14:42:23 +00:00
```
2020-03-18 00:38:39 +00:00
## **func** dir
2019-10-17 14:42:23 +00:00
```nim
2020-03-18 00:38:39 +00:00
func dir(th: float32): Vec2
2019-10-17 14:42:23 +00:00
```
2020-03-18 00:38:39 +00:00
## **func** dist
2019-10-17 14:42:23 +00:00
```nim
2020-03-18 00:38:39 +00:00
func dist(at: Vec2; to: Vec2): float32
2019-10-17 14:42:23 +00:00
```
2020-03-18 00:38:39 +00:00
## **func** distSq
2019-10-17 14:42:23 +00:00
```nim
2020-03-18 00:38:39 +00:00
func distSq(at: Vec2; to: Vec2): float32
2019-10-17 14:42:23 +00:00
```
2020-03-18 00:38:39 +00:00
## **func** lerp
2019-10-17 14:42:23 +00:00
```nim
2020-03-18 00:38:39 +00:00
func lerp(a: Vec2; b: Vec2; v: float32): Vec2
2019-10-17 14:42:23 +00:00
```
2020-03-18 00:38:39 +00:00
## **func** quantize
2019-10-17 14:42:23 +00:00
```nim
2020-03-18 00:38:39 +00:00
func quantize(v: Vec2; n: float32): Vec2
2019-10-17 14:42:23 +00:00
```
2020-03-18 00:38:39 +00:00
## **func** inRect
2019-10-17 14:42:23 +00:00
Check to see if v is inside a rectange formed by a and b. It does not matter how a and b are arranged.
```nim
2020-03-18 00:38:39 +00:00
func inRect(v: Vec2; a: Vec2; b: Vec2): bool
2019-10-17 14:42:23 +00:00
```
2020-03-18 00:38:39 +00:00
## **func** `[]`
2019-10-17 14:42:23 +00:00
```nim
2020-03-18 00:38:39 +00:00
func `[]`(a: Vec2; i: int): float32
2019-10-17 14:42:23 +00:00
```
2020-03-18 00:38:39 +00:00
## **func** `[]=`
2019-10-17 14:42:23 +00:00
```nim
2020-03-18 00:38:39 +00:00
func `[]=`(a: var Vec2; i: int; b: float32)
2019-10-17 14:42:23 +00:00
```
## **proc** randVec2
```nim
proc randVec2(): Vec2
2019-10-17 14:42:23 +00:00
```
2020-03-18 00:38:39 +00:00
## **func** `$`
2019-10-17 14:42:23 +00:00
```nim
2020-03-18 00:38:39 +00:00
func `$`(a: Vec2): string {.raises: [ValueError].}
2019-10-17 14:42:23 +00:00
```
2020-03-18 00:38:39 +00:00
## **func** fixAngle
2019-10-17 14:42:23 +00:00
Make angle be from -PI to PI radians.
```nim
2020-03-18 00:38:39 +00:00
func fixAngle(angle: float32): float32
2019-10-17 14:42:23 +00:00
```
2020-03-18 00:38:39 +00:00
## **func** angle
2019-10-17 14:42:23 +00:00
Angle of a Vec2.
2019-10-17 14:42:23 +00:00
```nim
2020-03-18 00:38:39 +00:00
func angle(a: Vec2): float32
2019-10-17 14:42:23 +00:00
```
2020-03-18 00:38:39 +00:00
## **func** angleBetween
2019-10-17 14:42:23 +00:00
Angle between 2 Vec2.
2019-10-17 14:42:23 +00:00
```nim
2020-03-18 00:38:39 +00:00
func angleBetween(a: Vec2; b: Vec2): float32
2019-10-17 14:42:23 +00:00
```
2020-03-18 00:38:39 +00:00
## **func** angleBetween
2019-10-17 14:42:23 +00:00
Angle between angle a and angle b.
2019-10-17 14:42:23 +00:00
```nim
2020-03-18 00:38:39 +00:00
func angleBetween(a, b: float32): float32
2019-10-17 14:42:23 +00:00
```
2020-03-18 00:38:39 +00:00
## **func** turnAngle
2019-10-17 14:42:23 +00:00
Move from angle a to angle b with step of v.
2019-10-17 14:42:23 +00:00
```nim
2020-03-18 00:38:39 +00:00
func turnAngle(a, b, speed: float32): float32
2019-10-17 14:42:23 +00:00
```
## **type** Vec3
3D vector
```nim
Vec3 = object
2020-03-09 03:13:25 +00:00
x*: float32
y*: float32
z*: float32
2019-10-17 14:42:23 +00:00
```
2020-03-18 00:38:39 +00:00
## **func** vec3
2019-10-17 14:42:23 +00:00
```nim
2020-03-18 00:38:39 +00:00
func vec3(x, y, z: float32): Vec3
2019-10-17 14:42:23 +00:00
```
2020-03-18 00:38:39 +00:00
## **func** vec3
2019-10-17 14:42:23 +00:00
2020-11-22 04:18:50 +00:00
```nim
func vec3(v: float32): Vec3
```
## **func** vec3
2019-10-17 14:42:23 +00:00
```nim
2020-03-18 00:38:39 +00:00
func vec3(a: Vec3): Vec3
2019-10-17 14:42:23 +00:00
```
## **const** X_DIR
```nim
X_DIR = (x: 1.0, y: 0.0, z: 0.0)
```
## **const** Y_DIR
```nim
Y_DIR = (x: 0.0, y: 1.0, z: 0.0)
```
## **const** Z_DIR
```nim
Z_DIR = (x: 0.0, y: 0.0, z: 1.0)
```
2020-03-18 00:38:39 +00:00
## **func** `+`
```nim
func `+`(a: Vec3; b: Vec3): Vec3
```
## **func** `-`
2019-10-17 14:42:23 +00:00
```nim
2020-03-18 00:38:39 +00:00
func `-`(a: Vec3; b: Vec3): Vec3
2019-10-17 14:42:23 +00:00
```
2020-03-18 00:38:39 +00:00
## **func** `-`
2019-10-17 14:42:23 +00:00
```nim
2020-03-18 00:38:39 +00:00
func `-`(a: Vec3): Vec3
2019-10-17 14:42:23 +00:00
```
2020-03-18 00:38:39 +00:00
## **func** `*`
2019-10-17 14:42:23 +00:00
```nim
2020-03-18 00:38:39 +00:00
func `*`(a: Vec3; b: float32): Vec3
2019-10-17 14:42:23 +00:00
```
2020-03-18 00:38:39 +00:00
## **func** `*`
2019-10-17 14:42:23 +00:00
```nim
2020-03-18 00:38:39 +00:00
func `*`(a: float32; b: Vec3): Vec3
2019-10-17 14:42:23 +00:00
```
2020-03-18 00:38:39 +00:00
## **func** `/`
2019-10-17 14:42:23 +00:00
```nim
2020-03-18 00:38:39 +00:00
func `/`(a: Vec3; b: float32): Vec3
2019-10-17 14:42:23 +00:00
```
2020-03-18 00:38:39 +00:00
## **func** `/`
2019-10-17 14:42:23 +00:00
```nim
2020-03-18 00:38:39 +00:00
func `/`(a: float32; b: Vec3): Vec3
2019-10-17 14:42:23 +00:00
```
2020-03-18 00:38:39 +00:00
## **func** `+=`
2019-10-17 14:42:23 +00:00
```nim
2020-03-18 00:38:39 +00:00
func `+=`(a: var Vec3; b: Vec3)
2019-10-17 14:42:23 +00:00
```
2020-03-18 00:38:39 +00:00
## **func** `-=`
2019-10-17 14:42:23 +00:00
```nim
2020-03-18 00:38:39 +00:00
func `-=`(a: var Vec3; b: Vec3)
2019-10-17 14:42:23 +00:00
```
2020-03-18 00:38:39 +00:00
## **func** `*=`
2019-10-17 14:42:23 +00:00
```nim
2020-03-18 00:38:39 +00:00
func `*=`(a: var Vec3; b: float32)
2019-10-17 14:42:23 +00:00
```
2020-03-18 00:38:39 +00:00
## **func** `/=`
2019-10-17 14:42:23 +00:00
```nim
2020-03-18 00:38:39 +00:00
func `/=`(a: var Vec3; b: float32)
2019-10-17 14:42:23 +00:00
```
2020-03-18 00:38:39 +00:00
## **func** zero
2019-10-17 14:42:23 +00:00
```nim
2020-03-18 00:38:39 +00:00
func zero(a: var Vec3)
2019-10-17 14:42:23 +00:00
```
2020-03-18 00:38:39 +00:00
## **func** `-`
2019-10-17 14:42:23 +00:00
```nim
2020-03-18 00:38:39 +00:00
func `-`(a: var Vec3): Vec3
2019-10-17 14:42:23 +00:00
```
2020-11-22 04:18:50 +00:00
## **func** hash
```nim
func hash(a: Vec3): Hash
```
2020-03-18 00:38:39 +00:00
## **func** lengthSq
2019-10-17 14:42:23 +00:00
```nim
2020-03-18 00:38:39 +00:00
func lengthSq(a: Vec3): float32
2019-10-17 14:42:23 +00:00
```
2020-03-18 00:38:39 +00:00
## **func** length
2019-10-17 14:42:23 +00:00
```nim
2020-03-18 00:38:39 +00:00
func length(a: Vec3): float32
2019-10-17 14:42:23 +00:00
```
2020-03-18 00:38:39 +00:00
## **func** length=
2019-10-17 14:42:23 +00:00
```nim
2020-03-18 00:38:39 +00:00
func length=(a: var Vec3; b: float32)
2019-10-17 14:42:23 +00:00
```
2020-11-22 04:18:50 +00:00
## **func** floor
```nim
func floor(a: Vec3): Vec3
```
## **func** round
```nim
func round(a: Vec3): Vec3
```
## **func** ceil
```nim
func ceil(a: Vec3): Vec3
```
2020-03-18 00:38:39 +00:00
## **func** normalize
2019-10-17 14:42:23 +00:00
```nim
2020-03-18 00:38:39 +00:00
func normalize(a: Vec3): Vec3
2019-10-17 14:42:23 +00:00
```
2020-03-18 00:38:39 +00:00
## **func** cross
2019-10-17 14:42:23 +00:00
```nim
2020-03-18 00:38:39 +00:00
func cross(a: Vec3; b: Vec3): Vec3
2019-10-17 14:42:23 +00:00
```
2020-03-18 00:38:39 +00:00
## **func** computeNormal
2019-10-17 14:42:23 +00:00
```nim
2020-03-18 00:38:39 +00:00
func computeNormal(a, b, c: Vec3): Vec3
2019-10-17 14:42:23 +00:00
```
2020-03-18 00:38:39 +00:00
## **func** dot
2019-10-17 14:42:23 +00:00
```nim
2020-03-18 00:38:39 +00:00
func dot(a: Vec3; b: Vec3): float32
2019-10-17 14:42:23 +00:00
```
2020-03-18 00:38:39 +00:00
## **func** dir
2019-10-17 14:42:23 +00:00
```nim
2020-03-18 00:38:39 +00:00
func dir(at: Vec3; to: Vec3): Vec3
2019-10-17 14:42:23 +00:00
```
2020-03-18 00:38:39 +00:00
## **func** dist
2019-10-17 14:42:23 +00:00
```nim
2020-03-18 00:38:39 +00:00
func dist(at: Vec3; to: Vec3): float32
2019-10-17 14:42:23 +00:00
```
2020-03-18 00:38:39 +00:00
## **func** distSq
2019-10-17 14:42:23 +00:00
```nim
2020-03-18 00:38:39 +00:00
func distSq(at: Vec3; to: Vec3): float32
2019-10-17 14:42:23 +00:00
```
2020-03-18 00:38:39 +00:00
## **func** lerp
2019-10-17 14:42:23 +00:00
```nim
2020-03-18 00:38:39 +00:00
func lerp(a: Vec3; b: Vec3; v: float32): Vec3
2019-10-17 14:42:23 +00:00
```
2020-03-18 00:38:39 +00:00
## **func** quantize
2019-10-17 14:42:23 +00:00
```nim
2020-03-18 00:38:39 +00:00
func quantize(v: Vec3; n: float32): Vec3
2019-10-17 14:42:23 +00:00
```
2020-03-18 00:38:39 +00:00
## **func** angleBetween
2019-10-17 14:42:23 +00:00
```nim
2020-03-18 00:38:39 +00:00
func angleBetween(a, b: Vec3): float32
2019-10-17 14:42:23 +00:00
```
2020-03-18 00:38:39 +00:00
## **func** `[]`
2019-10-17 14:42:23 +00:00
```nim
2020-03-18 00:38:39 +00:00
func `[]`(a: Vec3; i: int): float32
2019-10-17 14:42:23 +00:00
```
2020-03-18 00:38:39 +00:00
## **func** `[]=`
2019-10-17 14:42:23 +00:00
```nim
2020-03-18 00:38:39 +00:00
func `[]=`(a: var Vec3; i: int; b: float32)
2019-10-17 14:42:23 +00:00
```
2020-03-18 00:38:39 +00:00
## **func** xy
2019-10-17 14:42:23 +00:00
```nim
2020-03-18 00:38:39 +00:00
func xy(a: Vec3): Vec2
2019-10-17 14:42:23 +00:00
```
2020-03-18 00:38:39 +00:00
## **func** xz
2019-10-17 14:42:23 +00:00
```nim
2020-03-18 00:38:39 +00:00
func xz(a: Vec3): Vec2
2019-10-17 14:42:23 +00:00
```
2020-03-18 00:38:39 +00:00
## **func** yx
2019-10-17 14:42:23 +00:00
```nim
2020-03-18 00:38:39 +00:00
func yx(a: Vec3): Vec2
2019-10-17 14:42:23 +00:00
```
2020-03-18 00:38:39 +00:00
## **func** yz
2019-10-17 14:42:23 +00:00
```nim
2020-03-18 00:38:39 +00:00
func yz(a: Vec3): Vec2
2019-10-17 14:42:23 +00:00
```
2020-03-18 00:38:39 +00:00
## **func** zx
2019-10-17 14:42:23 +00:00
```nim
2020-03-18 00:38:39 +00:00
func zx(a: Vec3): Vec2
2019-10-17 14:42:23 +00:00
```
2020-03-18 00:38:39 +00:00
## **func** zy
2019-10-17 14:42:23 +00:00
```nim
2020-03-18 00:38:39 +00:00
func zy(a: Vec3): Vec2
2019-10-17 14:42:23 +00:00
```
2020-03-18 00:38:39 +00:00
## **func** almostEquals
2019-10-17 14:42:23 +00:00
```nim
2020-03-18 00:38:39 +00:00
func almostEquals(a, b: Vec3; precision = 1e-006): bool
2019-10-17 14:42:23 +00:00
```
## **proc** randVec3
2020-11-22 04:18:50 +00:00
Generates a random unit vector based on <a class="reference external" href="http://mathworld.wolfram.com/SpherePointPicking.html">http://mathworld.wolfram.com/SpherePointPicking.html</a>
2019-10-17 14:42:23 +00:00
```nim
proc randVec3(): Vec3
2019-10-17 14:42:23 +00:00
```
2020-03-18 00:38:39 +00:00
## **func** `$`
2019-10-17 14:42:23 +00:00
```nim
2020-03-18 00:38:39 +00:00
func `$`(a: Vec3): string {.raises: [ValueError].}
2019-10-17 14:42:23 +00:00
```
## **type** Vec4
4D Vector.
```nim
Vec4 = object
2020-03-09 03:13:25 +00:00
x*: float32
y*: float32
z*: float32
w*: float32
2019-10-17 14:42:23 +00:00
```
2020-03-18 00:38:39 +00:00
## **func** vec4
2019-10-17 14:42:23 +00:00
```nim
2020-03-18 00:38:39 +00:00
func vec4(x, y, z, w: float32): Vec4
2019-10-17 14:42:23 +00:00
```
2020-11-22 04:18:50 +00:00
## **func** vec4
```nim
func vec4(v: float32): Vec4
```
2020-03-18 00:38:39 +00:00
## **func** `+`
2019-10-17 14:42:23 +00:00
```nim
2020-03-18 00:38:39 +00:00
func `+`(a: Vec4; b: Vec4): Vec4
2019-10-17 14:42:23 +00:00
```
2020-03-18 00:38:39 +00:00
## **func** `-`
2019-10-17 14:42:23 +00:00
```nim
2020-03-18 00:38:39 +00:00
func `-`(a: Vec4; b: Vec4): Vec4
2019-10-17 14:42:23 +00:00
```
2020-03-18 00:38:39 +00:00
## **func** `-`
2019-10-17 14:42:23 +00:00
```nim
2020-03-18 00:38:39 +00:00
func `-`(a: Vec4): Vec4
2019-10-17 14:42:23 +00:00
```
2020-03-18 00:38:39 +00:00
## **func** `*`
2019-10-17 14:42:23 +00:00
```nim
2020-03-18 00:38:39 +00:00
func `*`(a: Vec4; b: float32): Vec4
2019-10-17 14:42:23 +00:00
```
2020-03-18 00:38:39 +00:00
## **func** `*`
2019-10-17 14:42:23 +00:00
```nim
2020-03-18 00:38:39 +00:00
func `*`(a: float32; b: Vec4): Vec4
2019-10-17 14:42:23 +00:00
```
2020-03-18 00:38:39 +00:00
## **func** `/`
2019-10-17 14:42:23 +00:00
```nim
2020-03-18 00:38:39 +00:00
func `/`(a: Vec4; b: float32): Vec4
2019-10-17 14:42:23 +00:00
```
2020-03-18 00:38:39 +00:00
## **func** `/`
2019-10-17 14:42:23 +00:00
```nim
2020-03-18 00:38:39 +00:00
func `/`(a: float32; b: Vec4): Vec4
2019-10-17 14:42:23 +00:00
```
2020-03-18 00:38:39 +00:00
## **func** `+=`
2019-10-17 14:42:23 +00:00
```nim
2020-03-18 00:38:39 +00:00
func `+=`(a: var Vec4; b: Vec4)
2019-10-17 14:42:23 +00:00
```
2020-03-18 00:38:39 +00:00
## **func** `-=`
2019-10-17 14:42:23 +00:00
```nim
2020-03-18 00:38:39 +00:00
func `-=`(a: var Vec4; b: Vec4)
2019-10-17 14:42:23 +00:00
```
2020-03-18 00:38:39 +00:00
## **func** `*=`
2019-10-17 14:42:23 +00:00
```nim
2020-03-18 00:38:39 +00:00
func `*=`(a: var Vec4; b: float32)
2019-10-17 14:42:23 +00:00
```
2020-03-18 00:38:39 +00:00
## **func** `/=`
2019-10-17 14:42:23 +00:00
```nim
2020-03-18 00:38:39 +00:00
func `/=`(a: var Vec4; b: float32)
2019-10-17 14:42:23 +00:00
```
2020-03-18 00:38:39 +00:00
## **func** zero
2019-10-17 14:42:23 +00:00
```nim
2020-03-18 00:38:39 +00:00
func zero(a: var Vec4)
2019-10-17 14:42:23 +00:00
```
2020-11-22 04:18:50 +00:00
## **func** hash
```nim
func hash(a: Vec4): Hash
```
## **func** `[]`
```nim
func `[]`(a: Vec4; i: int): float32
```
## **func** `[]=`
```nim
func `[]=`(a: var Vec4; i: int; b: float32)
```
## **func** lerp
```nim
func lerp(a: Vec4; b: Vec4; v: float32): Vec4
```
2020-03-18 00:38:39 +00:00
## **func** xyz
2019-10-17 14:42:23 +00:00
```nim
2020-03-18 00:38:39 +00:00
func xyz(a: Vec4): Vec3
2019-10-17 14:42:23 +00:00
```
2020-03-18 00:38:39 +00:00
## **func** `$`
2019-10-17 14:42:23 +00:00
```nim
2020-03-18 00:38:39 +00:00
func `$`(a: Vec4): string {.raises: [ValueError].}
2019-10-17 14:42:23 +00:00
```
2020-03-18 00:38:39 +00:00
## **func** vec3
2019-10-17 14:42:23 +00:00
```nim
2020-03-18 00:38:39 +00:00
func vec3(a: Vec2; z = 0.0): Vec3
2019-10-17 14:42:23 +00:00
```
2020-03-18 00:38:39 +00:00
## **func** vec4
2019-10-17 14:42:23 +00:00
```nim
2020-03-18 00:38:39 +00:00
func vec4(a: Vec3; w = 0.0): Vec4
2019-10-17 14:42:23 +00:00
```
2020-03-18 00:38:39 +00:00
## **func** vec4
2019-10-17 14:42:23 +00:00
```nim
2020-03-18 00:38:39 +00:00
func vec4(a: Vec2; z = 0.0; w = 0.0): Vec4
2019-10-17 14:42:23 +00:00
```
## **type** Mat3
3x3 Matrix
```nim
Mat3 = array[9, float32]
```
2020-11-22 04:18:50 +00:00
## **template** `[]`
```nim
template `[]`(a: Mat3; i, j: int): float32
```
## **template** `[]=`
```nim
template `[]=`(a: Mat3; i, j: int; v: float32)
```
2020-03-18 00:38:39 +00:00
## **func** mat3
2019-10-17 14:42:23 +00:00
```nim
2020-03-18 00:38:39 +00:00
func mat3(a, b, c, d, e, f, g, h, i: float32): Mat3
2019-10-17 14:42:23 +00:00
```
2020-03-18 00:38:39 +00:00
## **func** mat3
2019-10-17 14:42:23 +00:00
```nim
2020-03-18 00:38:39 +00:00
func mat3(a: Mat3): Mat3
2019-10-17 14:42:23 +00:00
```
2020-03-18 00:38:39 +00:00
## **func** identity
2019-10-17 14:42:23 +00:00
```nim
2020-03-18 00:38:39 +00:00
func identity(a: var Mat3)
2019-10-17 14:42:23 +00:00
```
2020-03-18 00:38:39 +00:00
## **func** mat3
2019-10-17 14:42:23 +00:00
```nim
2020-03-18 00:38:39 +00:00
func mat3(): Mat3
2019-10-17 14:42:23 +00:00
```
2020-03-18 00:38:39 +00:00
## **func** transpose
2019-10-17 14:42:23 +00:00
```nim
2020-03-18 00:38:39 +00:00
func transpose(a: Mat3): Mat3
2019-10-17 14:42:23 +00:00
```
2020-03-18 00:38:39 +00:00
## **func** `$`
2019-10-17 14:42:23 +00:00
```nim
2020-03-18 00:38:39 +00:00
func `$`(a: Mat3): string {.raises: [ValueError].}
2019-10-17 14:42:23 +00:00
```
2020-03-18 00:38:39 +00:00
## **func** `*`
2019-10-17 14:42:23 +00:00
```nim
2020-03-18 00:38:39 +00:00
func `*`(a: Mat3; b: Mat3): Mat3
2019-10-17 14:42:23 +00:00
```
2020-11-22 04:18:50 +00:00
## **func** scale
2019-10-17 14:42:23 +00:00
```nim
2020-11-22 04:18:50 +00:00
func scale(a: Mat3; v: Vec2): Mat3
2019-10-17 14:42:23 +00:00
```
2020-03-18 00:38:39 +00:00
## **func** scale
2019-10-17 14:42:23 +00:00
```nim
2020-11-22 04:18:50 +00:00
func scale(a: Mat3; v: Vec3): Mat3
```
## **func** translate
```nim
func translate(v: Vec2): Mat3
2019-10-17 14:42:23 +00:00
```
2020-03-18 00:38:39 +00:00
## **func** scale
2019-10-17 14:42:23 +00:00
```nim
2020-11-22 04:18:50 +00:00
func scale(v: Vec2): Mat3
2019-10-17 14:42:23 +00:00
```
2020-03-18 00:38:39 +00:00
## **func** rotationMat3
2019-10-17 14:42:23 +00:00
```nim
2020-03-18 00:38:39 +00:00
func rotationMat3(angle: float32): Mat3
2019-10-17 14:42:23 +00:00
```
2020-03-18 00:38:39 +00:00
## **func** rotate
2019-10-17 14:42:23 +00:00
```nim
2020-03-18 00:38:39 +00:00
func rotate(a: Mat3; angle: float32): Mat3
2019-10-17 14:42:23 +00:00
```
2020-03-18 00:38:39 +00:00
## **func** `*`
2019-10-17 14:42:23 +00:00
```nim
2020-03-18 00:38:39 +00:00
func `*`(a: Mat3; b: Vec2): Vec2
2019-10-17 14:42:23 +00:00
```
2020-11-22 04:18:50 +00:00
## **func** `*`
```nim
func `*`(a: Mat3; b: Vec3): Vec3
```
## **func** inverse
```nim
func inverse(a: Mat3): Mat3
```
2019-10-17 14:42:23 +00:00
## **type** Mat4
4x4 Matrix - OpenGL row order
```nim
Mat4 = array[16, float32]
```
2020-11-22 04:18:50 +00:00
## **template** `[]`
```nim
template `[]`(a: Mat4; i, j: int): float32
```
## **template** `[]=`
```nim
template `[]=`(a: Mat4; i, j: int; v: float32)
```
2020-03-18 00:38:39 +00:00
## **func** mat4
2019-10-17 14:42:23 +00:00
```nim
2020-03-18 00:38:39 +00:00
func mat4(v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15: float32): Mat4
2019-10-17 14:42:23 +00:00
```
2020-03-18 00:38:39 +00:00
## **func** mat4
2019-10-17 14:42:23 +00:00
```nim
2020-03-18 00:38:39 +00:00
func mat4(a: Mat4): Mat4
2019-10-17 14:42:23 +00:00
```
2020-03-18 00:38:39 +00:00
## **func** identity
2019-10-17 14:42:23 +00:00
```nim
2020-03-18 00:38:39 +00:00
func identity(): Mat4
2019-10-17 14:42:23 +00:00
```
2020-03-18 00:38:39 +00:00
## **func** mat4
2019-10-17 14:42:23 +00:00
```nim
2020-03-18 00:38:39 +00:00
func mat4(): Mat4
2019-10-17 14:42:23 +00:00
```
2020-03-18 00:38:39 +00:00
## **func** transpose
2019-10-17 14:42:23 +00:00
```nim
2020-03-18 00:38:39 +00:00
func transpose(a: Mat4): Mat4
2019-10-17 14:42:23 +00:00
```
2020-03-18 00:38:39 +00:00
## **func** determinant
2019-10-17 14:42:23 +00:00
```nim
2020-03-18 00:38:39 +00:00
func determinant(a: Mat4): float32
2019-10-17 14:42:23 +00:00
```
2020-03-18 00:38:39 +00:00
## **func** inverse
2019-10-17 14:42:23 +00:00
```nim
2020-03-18 00:38:39 +00:00
func inverse(a: Mat4): Mat4
2019-10-17 14:42:23 +00:00
```
2020-03-18 00:38:39 +00:00
## **func** `*`
2019-10-17 14:42:23 +00:00
```nim
2020-03-18 00:38:39 +00:00
func `*`(a, b: Mat4): Mat4
2019-10-17 14:42:23 +00:00
```
2020-03-18 00:38:39 +00:00
## **func** `*`
2019-10-17 14:42:23 +00:00
```nim
2020-03-18 00:38:39 +00:00
func `*`(a: Mat4; b: Vec3): Vec3
2019-10-17 14:42:23 +00:00
```
2020-11-22 04:18:50 +00:00
## **func** `*`
```nim
func `*`(a: Mat4; b: Vec4): Vec4
```
2020-03-18 00:38:39 +00:00
## **func** right
2019-10-17 14:42:23 +00:00
```nim
2020-03-18 00:38:39 +00:00
func right(a: Mat4): Vec3
2019-10-17 14:42:23 +00:00
```
2020-03-18 00:38:39 +00:00
## **func** right=
2019-10-17 14:42:23 +00:00
```nim
2020-03-18 00:38:39 +00:00
func right=(a: var Mat4; b: Vec3)
2019-10-17 14:42:23 +00:00
```
2020-03-18 00:38:39 +00:00
## **func** up
2019-10-17 14:42:23 +00:00
```nim
2020-03-18 00:38:39 +00:00
func up(a: Mat4): Vec3
2019-10-17 14:42:23 +00:00
```
2020-03-18 00:38:39 +00:00
## **func** up=
2019-10-17 14:42:23 +00:00
```nim
2020-03-18 00:38:39 +00:00
func up=(a: var Mat4; b: Vec3)
2019-10-17 14:42:23 +00:00
```
2020-11-22 04:18:50 +00:00
## **func** forward
2019-10-17 14:42:23 +00:00
```nim
2020-11-22 04:18:50 +00:00
func forward(a: Mat4): Vec3
2019-10-17 14:42:23 +00:00
```
2020-11-22 04:18:50 +00:00
## **func** forward=
2019-10-17 14:42:23 +00:00
```nim
2020-11-22 04:18:50 +00:00
func forward=(a: var Mat4; b: Vec3)
2019-10-17 14:42:23 +00:00
```
2020-03-18 00:38:39 +00:00
## **func** pos
2019-10-17 14:42:23 +00:00
```nim
2020-03-18 00:38:39 +00:00
func pos(a: Mat4): Vec3
2019-10-17 14:42:23 +00:00
```
2020-03-18 00:38:39 +00:00
## **func** pos=
2019-10-17 14:42:23 +00:00
```nim
2020-03-18 00:38:39 +00:00
func pos=(a: var Mat4; b: Vec3)
2019-10-17 14:42:23 +00:00
```
2020-03-18 00:38:39 +00:00
## **func** rotationOnly
2019-10-17 14:42:23 +00:00
```nim
2020-03-18 00:38:39 +00:00
func rotationOnly(a: Mat4): Mat4
2019-10-17 14:42:23 +00:00
```
2020-03-18 00:38:39 +00:00
## **func** dist
2019-10-17 14:42:23 +00:00
```nim
2020-03-18 00:38:39 +00:00
func dist(a, b: Mat4): float32
2019-10-17 14:42:23 +00:00
```
2020-03-18 00:38:39 +00:00
## **func** translate
2019-10-17 14:42:23 +00:00
```nim
2020-03-18 00:38:39 +00:00
func translate(v: Vec3): Mat4
2019-10-17 14:42:23 +00:00
```
2020-03-18 00:38:39 +00:00
## **func** scale
2019-10-17 14:42:23 +00:00
```nim
2020-03-18 00:38:39 +00:00
func scale(v: Vec3): Mat4
2019-10-17 14:42:23 +00:00
```
2020-03-18 00:38:39 +00:00
## **func** close
2019-10-17 14:42:23 +00:00
```nim
2020-03-18 00:38:39 +00:00
func close(a: Mat4; b: Mat4): bool
2019-10-17 14:42:23 +00:00
```
2020-03-18 00:38:39 +00:00
## **func** hrp
2019-10-17 14:42:23 +00:00
```nim
2020-03-18 00:38:39 +00:00
func hrp(m: Mat4): Vec3
2019-10-17 14:42:23 +00:00
```
2020-03-18 00:38:39 +00:00
## **func** frustum
2019-10-17 14:42:23 +00:00
```nim
2020-03-18 00:38:39 +00:00
func frustum(left, right, bottom, top, near, far: float32): Mat4
2019-10-17 14:42:23 +00:00
```
2020-03-18 00:38:39 +00:00
## **func** perspective
2019-10-17 14:42:23 +00:00
```nim
2020-03-18 00:38:39 +00:00
func perspective(fovy, aspect, near, far: float32): Mat4
2019-10-17 14:42:23 +00:00
```
2020-03-18 00:38:39 +00:00
## **func** ortho
2019-10-17 14:42:23 +00:00
```nim
2020-03-18 00:38:39 +00:00
func ortho(left, right, bottom, top, near, far: float32): Mat4
2019-10-17 14:42:23 +00:00
```
2020-03-18 00:38:39 +00:00
## **func** lookAt
2019-10-17 14:42:23 +00:00
```nim
2020-03-18 00:38:39 +00:00
func lookAt(eye, center, up: Vec3): Mat4
2019-10-17 14:42:23 +00:00
```
2020-11-22 04:18:50 +00:00
## **func** mat3
Gets rotation and translation, ignoring z coordinates.
```nim
func mat3(m: Mat4): Mat3
```
## **func** mat3Rotation
2019-10-17 14:42:23 +00:00
2020-11-22 04:18:50 +00:00
Gets the rotational part of the 4x4 matrix.
2019-10-17 14:42:23 +00:00
```nim
2020-11-22 04:18:50 +00:00
func mat3Rotation(m: Mat4): Mat3
```
## **func** mat4
Takes a 2d Mat3 with position and converts to a 3d matrix.
```nim
func mat4(m: Mat3): Mat4
```
## **func** mat4Rotation
Gets the rotational part of the 3x3 matrix into a 4x4 matrix.
```nim
func mat4Rotation(m: Mat3): Mat4
2019-10-17 14:42:23 +00:00
```
2020-03-18 00:38:39 +00:00
## **func** `$`
2019-10-17 14:42:23 +00:00
```nim
2020-03-18 00:38:39 +00:00
func `$`(a: Mat4): string {.raises: [ValueError].}
2019-10-17 14:42:23 +00:00
```
## **type** Quat
```nim
Quat = object
2020-03-09 03:13:25 +00:00
x*: float32
y*: float32
z*: float32
w*: float32
2019-10-17 14:42:23 +00:00
```
2020-03-18 00:38:39 +00:00
## **func** quat
2019-10-17 14:42:23 +00:00
```nim
2020-03-18 00:38:39 +00:00
func quat(x, y, z, w: float32): Quat
2019-10-17 14:42:23 +00:00
```
2020-03-18 00:38:39 +00:00
## **func** conjugate
2019-10-17 14:42:23 +00:00
```nim
2020-03-18 00:38:39 +00:00
func conjugate(q: Quat): Quat
2019-10-17 14:42:23 +00:00
```
2020-03-18 00:38:39 +00:00
## **func** length
2019-10-17 14:42:23 +00:00
```nim
2020-03-18 00:38:39 +00:00
func length(q: Quat): float32
2019-10-17 14:42:23 +00:00
```
2020-03-18 00:38:39 +00:00
## **func** normalize
2019-10-17 14:42:23 +00:00
```nim
2020-03-18 00:38:39 +00:00
func normalize(q: Quat): Quat
2019-10-17 14:42:23 +00:00
```
2020-03-18 00:38:39 +00:00
## **func** xyz
2019-10-17 14:42:23 +00:00
```nim
2020-03-18 00:38:39 +00:00
func xyz(q: Quat): Vec3
2019-10-17 14:42:23 +00:00
```
2020-03-18 00:38:39 +00:00
## **func** xyz=
2019-10-17 14:42:23 +00:00
```nim
2020-03-18 00:38:39 +00:00
func xyz=(q: var Quat; v: Vec3)
2019-10-17 14:42:23 +00:00
```
2020-03-18 00:38:39 +00:00
## **func** `-`
```nim
func `-`(a: var Quat): Quat
```
## **func** `+`
```nim
func `+`(a: Quat; b: Quat): Quat
```
## **func** `*`
2019-10-17 14:42:23 +00:00
Multiply the quaternion by a quaternion.
2019-10-17 14:42:23 +00:00
```nim
2020-03-18 00:38:39 +00:00
func `*`(a, b: Quat): Quat
2019-10-17 14:42:23 +00:00
```
2020-03-18 00:38:39 +00:00
## **func** `*`
2019-10-17 14:42:23 +00:00
Multiply the quaternion by a float32.
2019-10-17 14:42:23 +00:00
```nim
2020-03-18 00:38:39 +00:00
func `*`(q: Quat; v: float32): Quat
2019-10-17 14:42:23 +00:00
```
2020-03-18 00:38:39 +00:00
## **func** `*`
2019-10-17 14:42:23 +00:00
Multiply the quaternion by a vector.
2019-10-17 14:42:23 +00:00
```nim
2020-03-18 00:38:39 +00:00
func `*`(q: Quat; v: Vec3): Vec3
2019-10-17 14:42:23 +00:00
```
2020-03-18 00:38:39 +00:00
## **func** `[]=`
2019-10-17 14:42:23 +00:00
```nim
2020-03-18 00:38:39 +00:00
func `[]=`(a: var Quat; i: int; b: float32)
2019-10-17 14:42:23 +00:00
```
2020-03-18 00:38:39 +00:00
## **func** mat3
2019-10-17 14:42:23 +00:00
```nim
2020-03-18 00:38:39 +00:00
func mat3(q: Quat): Mat3
2019-10-17 14:42:23 +00:00
```
2020-03-18 00:38:39 +00:00
## **func** mat4
2019-10-17 14:42:23 +00:00
```nim
2020-03-18 00:38:39 +00:00
func mat4(q: Quat): Mat4
```
## **func** recifuncalSqrt
```nim
func recifuncalSqrt(x: float32): float32
2019-10-17 14:42:23 +00:00
```
## **proc** quat
```nim
proc quat(m: Mat4): Quat
2019-10-17 14:42:23 +00:00
```
2020-03-18 00:38:39 +00:00
## **func** fromAxisAngle
2019-10-17 14:42:23 +00:00
```nim
2020-03-18 00:38:39 +00:00
func fromAxisAngle(axis: Vec3; angle: float32): Quat
2019-10-17 14:42:23 +00:00
```
2020-03-18 00:38:39 +00:00
## **func** toAxisAngle
2019-10-17 14:42:23 +00:00
```nim
2020-03-18 00:38:39 +00:00
func toAxisAngle(q: Quat; axis: var Vec3; angle: var float32)
2019-10-17 14:42:23 +00:00
```
2020-03-18 00:38:39 +00:00
## **func** quat
```nim
func quat(heading, pitch, roll: float32): Quat
```
2020-11-22 04:18:50 +00:00
## **func** quat
```nim
func quat(hpr: Vec3): Quat
```
2020-03-18 00:38:39 +00:00
## **func** hrp
```nim
func hrp(q: Quat): Vec3
```
## **func** dot
2019-10-17 14:42:23 +00:00
```nim
2020-03-18 00:38:39 +00:00
func dot(a: Quat; b: Quat): float32
2019-10-17 14:42:23 +00:00
```
2020-03-18 00:38:39 +00:00
## **func** nlerp
2019-10-17 14:42:23 +00:00
```nim
2020-03-18 00:38:39 +00:00
func nlerp(a: Quat; b: Quat; v: float32): Quat
2019-10-17 14:42:23 +00:00
```
2020-03-18 00:38:39 +00:00
## **func** `$`
2019-10-17 14:42:23 +00:00
```nim
2020-03-18 00:38:39 +00:00
func `$`(a: Quat): string {.raises: [ValueError].}
2019-10-17 14:42:23 +00:00
```
2020-03-18 00:38:39 +00:00
## **func** rotate
2019-10-17 14:42:23 +00:00
```nim
2020-03-18 00:38:39 +00:00
func rotate(angle: float32; axis: Vec3): Mat4
2019-10-17 14:42:23 +00:00
```
2020-03-18 00:38:39 +00:00
## **func** rotateX
2019-10-17 14:42:23 +00:00
```nim
2020-03-18 00:38:39 +00:00
func rotateX(angle: float32): Mat4
2019-10-17 14:42:23 +00:00
```
2020-03-18 00:38:39 +00:00
## **func** rotateY
2019-10-17 14:42:23 +00:00
```nim
2020-03-18 00:38:39 +00:00
func rotateY(angle: float32): Mat4
2019-10-17 14:42:23 +00:00
```
2020-03-18 00:38:39 +00:00
## **func** rotateZ
2019-10-17 14:42:23 +00:00
```nim
2020-03-18 00:38:39 +00:00
func rotateZ(angle: float32): Mat4
2019-10-17 14:42:23 +00:00
```
2020-03-18 00:38:39 +00:00
## **func** scaleMat
2019-10-17 14:42:23 +00:00
```nim
2020-03-18 00:38:39 +00:00
func scaleMat(scale: Vec3): Mat4
2019-10-17 14:42:23 +00:00
```
2020-03-18 00:38:39 +00:00
## **func** scaleMat
2019-10-17 14:42:23 +00:00
```nim
2020-03-18 00:38:39 +00:00
func scaleMat(scale: float32): Mat4
2019-10-17 14:42:23 +00:00
```
## **type** Rect
```nim
Rect = object
2020-03-09 03:13:25 +00:00
x*: float32
y*: float32
w*: float32
h*: float32
2019-10-17 14:42:23 +00:00
```
2020-03-18 00:38:39 +00:00
## **func** rect
2019-10-17 14:42:23 +00:00
```nim
2020-03-18 00:38:39 +00:00
func rect(x, y, w, h: float32): Rect
2019-10-17 14:42:23 +00:00
```
2020-03-18 00:38:39 +00:00
## **func** rect
2019-10-17 14:42:23 +00:00
```nim
2020-03-18 00:38:39 +00:00
func rect(pos, size: Vec2): Rect
2019-10-17 14:42:23 +00:00
```
2020-03-18 00:38:39 +00:00
## **func** xy
2019-10-17 14:42:23 +00:00
Gets the xy as a Vec2.
2019-10-17 14:42:23 +00:00
```nim
2020-03-18 00:38:39 +00:00
func xy(rect: Rect): Vec2
2019-10-17 14:42:23 +00:00
```
2020-03-18 00:38:39 +00:00
## **func** xy=
2019-10-17 14:42:23 +00:00
Sets the xy from Vec2.
2019-10-17 14:42:23 +00:00
```nim
2020-03-18 00:38:39 +00:00
func xy=(rect: var Rect; v: Vec2)
2019-10-17 14:42:23 +00:00
```
2020-03-18 00:38:39 +00:00
## **func** wh
2019-10-17 14:42:23 +00:00
Gets the wh as a Vec2.
2019-10-17 14:42:23 +00:00
```nim
2020-03-18 00:38:39 +00:00
func wh(rect: Rect): Vec2
2019-10-17 14:42:23 +00:00
```
2020-03-18 00:38:39 +00:00
## **func** wh=
2019-10-17 14:42:23 +00:00
Sets the wh from Vec2.
2019-10-17 14:42:23 +00:00
```nim
2020-03-18 00:38:39 +00:00
func wh=(rect: var Rect; v: Vec2)
2019-10-17 14:42:23 +00:00
```
2020-03-18 00:38:39 +00:00
## **func** `*`
2019-10-17 14:42:23 +00:00
2020-03-09 03:13:25 +00:00
* all elements of a Rect.
2019-10-17 14:42:23 +00:00
```nim
2020-03-18 00:38:39 +00:00
func `*`(r: Rect; v: float): Rect
2019-10-17 14:42:23 +00:00
```
2020-03-18 00:38:39 +00:00
## **func** `/`
2019-10-17 14:42:23 +00:00
/ all elements of a Rect.
2019-10-17 14:42:23 +00:00
```nim
2020-03-18 00:38:39 +00:00
func `/`(r: Rect; v: float): Rect
2019-10-17 14:42:23 +00:00
```
2020-03-18 00:38:39 +00:00
## **func** `+`
2019-10-17 14:42:23 +00:00
2020-03-09 03:13:25 +00:00
Add two boxes together.
2019-10-17 14:42:23 +00:00
```nim
2020-03-18 00:38:39 +00:00
func `+`(a, b: Rect): Rect
2019-10-17 14:42:23 +00:00
```
2020-03-18 00:38:39 +00:00
## **func** `$`
2019-10-17 14:42:23 +00:00
```nim
2020-03-18 00:38:39 +00:00
func `$`(a: Rect): string {.raises: [ValueError].}
2019-10-17 14:42:23 +00:00
```
2020-03-09 03:13:25 +00:00
2020-03-18 00:38:39 +00:00
## **func** inside
2020-03-09 03:13:25 +00:00
Checks if pos is inside rect.
```nim
2020-03-18 00:38:39 +00:00
func inside(pos: Vec2; rect: Rect): bool
2020-03-09 03:13:25 +00:00
```
2020-03-18 00:38:39 +00:00
## **func** overlap
2020-03-09 03:13:25 +00:00
Returns true if box a overlaps box b.
```nim
2020-03-18 00:38:39 +00:00
func overlap(a, b: Rect): bool
2020-03-09 03:13:25 +00:00
```
2020-11-22 04:18:50 +00:00
## **proc** `or`
Union of two rectangles.
```nim
proc `or`(a, b: Rect): Rect
```
## **proc** `and`
Intersection of two rectangles.
```nim
proc `and`(a, b: Rect): Rect
```