Consts
CMP_EPSILON = 0.00001'f32
LN2 = 0.6931471805599453
SQRT2 = 1.4142135623730951
SQRT12 = 0.7071067811865476
Procs
func `*`(left: AABB; right: Transform3D): AABB {....raises: [], tags: [RootEffect], forbids: [].}
func `*`(left: Plane; right: Transform3D): Plane {....raises: [], tags: [RootEffect], forbids: [].}
func `*`(left: Projection; right: Projection): Projection {....raises: [], tags: [RootEffect], forbids: [].}
func `*`(left: Projection; right: Vector4): Vector4 {....raises: [], tags: [RootEffect], forbids: [].}
func `*`(left: Quaternion; right: Float): Quaternion {....raises: [], tags: [RootEffect], forbids: [].}
func `*`(left: Quaternion; right: Int): Quaternion {....raises: [], tags: [RootEffect], forbids: [].}
func `*`(left: Quaternion; right: Quaternion): Quaternion {....raises: [], tags: [RootEffect], forbids: [].}
func `*`(left: Quaternion; right: Vector3): Vector3 {....raises: [], tags: [RootEffect], forbids: [].}
func `*`(left: Rect2; right: Transform2D): Rect2 {....raises: [], tags: [RootEffect], forbids: [].}
func `*`(left: Transform2D; right: Float): Transform2D {....raises: [], tags: [RootEffect], forbids: [].}
func `*`(left: Transform2D; right: Int): Transform2D {....raises: [], tags: [RootEffect], forbids: [].}
func `*`(left: Transform2D; right: PackedVector2Array): PackedVector2Array {. ...raises: [], tags: [RootEffect], forbids: [].}
func `*`(left: Transform2D; right: Rect2): Rect2 {....raises: [], tags: [RootEffect], forbids: [].}
func `*`(left: Transform2D; right: Transform2D): Transform2D {....raises: [], tags: [RootEffect], forbids: [].}
func `*`(left: Transform2D; right: Vector2): Vector2 {....raises: [], tags: [RootEffect], forbids: [].}
func `*`(left: Transform3D; right: AABB): AABB {....raises: [], tags: [RootEffect], forbids: [].}
func `*`(left: Transform3D; right: Float): Transform3D {....raises: [], tags: [RootEffect], forbids: [].}
func `*`(left: Transform3D; right: Int): Transform3D {....raises: [], tags: [RootEffect], forbids: [].}
func `*`(left: Transform3D; right: PackedVector3Array): PackedVector3Array {. ...raises: [], tags: [RootEffect], forbids: [].}
func `*`(left: Transform3D; right: Plane): Plane {....raises: [], tags: [RootEffect], forbids: [].}
func `*`(left: Transform3D; right: Transform3D): Transform3D {....raises: [], tags: [RootEffect], forbids: [].}
func `*`(left: Transform3D; right: Vector3): Vector3 {....raises: [], tags: [RootEffect], forbids: [].}
func `*`(left: Vector2; right: Transform2D): Vector2 {....raises: [], tags: [RootEffect], forbids: [].}
func `*`(left: Vector3; right: Quaternion): Vector3 {....raises: [], tags: [RootEffect], forbids: [].}
func `*`(left: Vector3; right: Transform3D): Vector3 {....raises: [], tags: [RootEffect], forbids: [].}
func `*`(left: Vector4; right: Projection): Vector4 {....raises: [], tags: [RootEffect], forbids: [].}
func `+`(left: Quaternion): Quaternion {....raises: [], tags: [RootEffect], forbids: [].}
func `+`(left: Quaternion; right: Quaternion): Quaternion {....raises: [], tags: [RootEffect], forbids: [].}
func `-`(left: Quaternion): Quaternion {....raises: [], tags: [RootEffect], forbids: [].}
func `-`(left: Quaternion; right: Quaternion): Quaternion {....raises: [], tags: [RootEffect], forbids: [].}
func `/`(left: Quaternion; right: Float): Quaternion {....raises: [], tags: [RootEffect], forbids: [].}
func `/`(left: Quaternion; right: Int): Quaternion {....raises: [], tags: [RootEffect], forbids: [].}
func `/`(left: Transform2D; right: Float): Transform2D {....raises: [], tags: [RootEffect], forbids: [].}
func `/`(left: Transform2D; right: Int): Transform2D {....raises: [], tags: [RootEffect], forbids: [].}
func `/`(left: Transform3D; right: Float): Transform3D {....raises: [], tags: [RootEffect], forbids: [].}
func `/`(left: Transform3D; right: Int): Transform3D {....raises: [], tags: [RootEffect], forbids: [].}
proc `[]`(self: Projection; index: int): Vector4 {....raises: [], tags: [], forbids: [].}
proc `[]`(self: Quaternion; index: int): real_elem {....raises: [], tags: [], forbids: [].}
proc `[]`(self: Transform2D; index: int): Vector2 {....raises: [], tags: [], forbids: [].}
proc affineInverse(self: Transform2D): Transform2D {....raises: [], tags: [RootEffect], forbids: [].}
proc affineInverse(self: Transform3D): Transform3D {....raises: [], tags: [RootEffect], forbids: [].}
proc angleTo(self: Quaternion; to: Quaternion): Float {....raises: [], tags: [RootEffect], forbids: [].}
func angleToPoint[T](self, to: Vector[2, T]): T {.inline.}
proc asNormalized[N: static int; T: SomeFloat](vec: Vector[N, T]): NVector[N, T] {. inline.}
proc basis(from: Quaternion): Basis {....raises: [], tags: [RootEffect], forbids: [].}
proc basisXform(self: Transform2D; v: Vector2): Vector2 {....raises: [], tags: [RootEffect], forbids: [].}
proc basisXformInv(self: Transform2D; v: Vector2): Vector2 {....raises: [], tags: [RootEffect], forbids: [].}
func clamp01[T: SomeFloat](x: T): T
proc clampf(self: Vector2; min: Float; max: Float): Vector2 {....raises: [], tags: [RootEffect], forbids: [].}
proc clampi(self: Vector2i; min: Int; max: Int): Vector2i {....raises: [], tags: [RootEffect], forbids: [].}
proc createDepthCorrection(_: typedesc[Projection]; flipY: bool): Projection
proc createFitAabb(_: typedesc[Projection]; aabb: AABB): Projection
proc createForHmd(_: typedesc[Projection]; eye: Int; aspect: Float; intraocularDist: Float; displayWidth: Float; displayToLens: Float; oversample: Float; zNear: Float; zFar: Float): Projection
proc createFrustum(_: typedesc[Projection]; left: Float; right: Float; bottom: Float; top: Float; zNear: Float; zFar: Float): Projection
proc createFrustumAspect(_: typedesc[Projection]; size: Float; aspect: Float; offset: Vector2; zNear: Float; zFar: Float; flipFov: bool = false): Projection
proc createLightAtlasRect(_: typedesc[Projection]; rect: Rect2): Projection
proc createOrthogonal(_: typedesc[Projection]; left: Float; right: Float; bottom: Float; top: Float; zNear: Float; zFar: Float): Projection
proc createOrthogonalAspect(_: typedesc[Projection]; size: Float; aspect: Float; zNear: Float; zFar: Float; flipFov: bool = false): Projection
proc createPerspective(_: typedesc[Projection]; fovy: Float; aspect: Float; zNear: Float; zFar: Float; flipFov: bool = false): Projection
proc createPerspectiveHmd(_: typedesc[Projection]; fovy: Float; aspect: Float; zNear: Float; zFar: Float; flipFov: bool; eye: Int; intraocularDist: Float; convergenceDist: Float): Projection
proc cubicInterpolate(self: Vector2; b: Vector2; preA: Vector2; postB: Vector2; weight: Float): Vector2 {....raises: [], tags: [RootEffect], forbids: [].}
proc cubicInterpolate(self: Vector3; b: Vector3; preA: Vector3; postB: Vector3; weight: Float): Vector3 {....raises: [], tags: [RootEffect], forbids: [].}
proc cubicInterpolate(self: Vector4; b: Vector4; preA: Vector4; postB: Vector4; weight: Float): Vector4 {....raises: [], tags: [RootEffect], forbids: [].}
func cubicInterpolate[T: SomeFloat](pFrom, pTo, pPre, pPost, pWeight: T): T {. inline.}
func cubicInterpolateAngle[T: SomeFloat](pFrom, pTo, pPre, pPost: T; pWeight: T): T {. inline.}
proc cubicInterpolateInTime(self: Vector2; b: Vector2; preA: Vector2; postB: Vector2; weight: Float; bT: Float; preAT: Float; postBT: Float): Vector2 {....raises: [], tags: [RootEffect], forbids: [].}
proc determinant(self: Basis): Float {....raises: [], tags: [RootEffect], forbids: [].}
proc determinant(self: Projection): Float {....raises: [], tags: [RootEffect], forbids: [].}
proc determinant(self: Transform2D): Float {....raises: [], tags: [RootEffect], forbids: [].}
func directionTo[N: static int; T: SomeFloat](self, to: Vector[N, T]): Vector[N, T] {.inline.}
proc distanceSquaredTo(self: Vector2i; to: Vector2i): Int {....raises: [], tags: [RootEffect], forbids: [].}
proc distanceSquaredTo(self: Vector3i; to: Vector3i): Int {....raises: [], tags: [RootEffect], forbids: [].}
proc distanceSquaredTo(self: Vector4i; to: Vector4i): Int {....raises: [], tags: [RootEffect], forbids: [].}
func distanceSquaredTo[N: static int; T: SomeFloat](self, to: Vector[N, T]): T {. inline.}
proc distanceTo(self: Plane; point: Vector3): Float {....raises: [], tags: [RootEffect], forbids: [].}
proc distanceTo(self: Vector2i; to: Vector2i): Float {....raises: [], tags: [RootEffect], forbids: [].}
proc distanceTo(self: Vector3i; to: Vector3i): Float {....raises: [], tags: [RootEffect], forbids: [].}
proc distanceTo(self: Vector4i; to: Vector4i): Float {....raises: [], tags: [RootEffect], forbids: [].}
func distanceTo[N: static int; T: SomeFloat](self, to: Vector[N, T]): T {.inline.}
proc dot(self: Quaternion; with: Quaternion): Float {....raises: [], tags: [RootEffect], forbids: [].}
proc exp(self: Quaternion): Quaternion {....raises: [], tags: [RootEffect], forbids: [].}
proc extend[T](value: T; N: static int): array[N, T]
proc flippedY(self: Projection): Projection {....raises: [], tags: [RootEffect], forbids: [].}
func floorLog2[T: SomeOrdinal](x: T): T
func fposmodp[T: SomeFloat](pX, pY: T): T {.inline.}
proc fromEuler(_: typedesc[Quaternion]; euler: Vector3): Quaternion
proc getAngle(self: Quaternion): Float {....raises: [], tags: [RootEffect], forbids: [].}
proc getAspect(self: Projection): Float {....raises: [], tags: [RootEffect], forbids: [].}
proc getAxis(self: Quaternion): Vector3 {....raises: [], tags: [RootEffect], forbids: [].}
proc getEndpoint(self: AABB; idx: Int): Vector3 {....raises: [], tags: [RootEffect], forbids: [].}
proc getEuler(self: Basis; order: Int = 2): Vector3 {....raises: [], tags: [RootEffect], forbids: [].}
proc getEuler(self: Quaternion; order: Int = 2): Vector3 {....raises: [], tags: [RootEffect], forbids: [].}
proc getFarPlaneHalfExtents(self: Projection): Vector2 {....raises: [], tags: [RootEffect], forbids: [].}
proc getFov(self: Projection): Float {....raises: [], tags: [RootEffect], forbids: [].}
proc getFovy(_: typedesc[Projection]; fovx: Float; aspect: Float): Float
proc getLodMultiplier(self: Projection): Float {....raises: [], tags: [RootEffect], forbids: [].}
proc getLongestAxis(self: AABB): Vector3 {....raises: [], tags: [RootEffect], forbids: [].}
proc getLongestAxisIndex(self: AABB): Int {....raises: [], tags: [RootEffect], forbids: [].}
proc getLongestAxisSize(self: AABB): Float {....raises: [], tags: [RootEffect], forbids: [].}
func getNumBits[T](x: T): T
proc getOrigin(self: Transform2D): Vector2 {....raises: [], tags: [RootEffect], forbids: [].}
proc getPixelsPerMeter(self: Projection; forPixelWidth: Int): Int {....raises: [], tags: [RootEffect], forbids: [].}
proc getProjectionPlane(self: Projection; plane: Int): Plane {....raises: [], tags: [RootEffect], forbids: [].}
proc getRotation(self: Transform2D): Float {....raises: [], tags: [RootEffect], forbids: [].}
proc getRotationQuaternion(self: Basis): Quaternion {....raises: [], tags: [RootEffect], forbids: [].}
proc getScale(self: Transform2D): Vector2 {....raises: [], tags: [RootEffect], forbids: [].}
proc getShortestAxis(self: AABB): Vector3 {....raises: [], tags: [RootEffect], forbids: [].}
proc getShortestAxisIndex(self: AABB): Int {....raises: [], tags: [RootEffect], forbids: [].}
proc getShortestAxisSize(self: AABB): Float {....raises: [], tags: [RootEffect], forbids: [].}
proc getSkew(self: Transform2D): Float {....raises: [], tags: [RootEffect], forbids: [].}
proc getSupport(self: AABB; direction: Vector3): Vector3 {....raises: [], tags: [RootEffect], forbids: [].}
proc getSupport(self: Rect2; direction: Vector2): Vector2 {....raises: [], tags: [RootEffect], forbids: [].}
proc getViewportHalfExtents(self: Projection): Vector2 {....raises: [], tags: [RootEffect], forbids: [].}
proc getZFar(self: Projection): Float {....raises: [], tags: [RootEffect], forbids: [].}
proc getZNear(self: Projection): Float {....raises: [], tags: [RootEffect], forbids: [].}
proc hasSurface(self: AABB): bool {....raises: [], tags: [RootEffect], forbids: [].}
proc interpolateWith(self: Transform2D; xform: Transform2D; weight: Float): Transform2D {. ...raises: [], tags: [RootEffect], forbids: [].}
proc interpolateWith(self: Transform3D; xform: Transform3D; weight: Float): Transform3D {. ...raises: [], tags: [RootEffect], forbids: [].}
proc intersect3(self: Plane; b: Plane; c: Plane): Variant {....raises: [], tags: [RootEffect], forbids: [].}
proc intersection(self: AABB; with: AABB): AABB {....raises: [], tags: [RootEffect], forbids: [].}
proc intersection(self: Rect2; b: Rect2): Rect2 {....raises: [], tags: [RootEffect], forbids: [].}
proc intersection(self: Rect2i; b: Rect2i): Rect2i {....raises: [], tags: [RootEffect], forbids: [].}
proc intersects(self: AABB; with: AABB): bool {....raises: [], tags: [RootEffect], forbids: [].}
proc intersects(self: Rect2; b: Rect2; includeBorders: bool = false): bool {. ...raises: [], tags: [RootEffect], forbids: [].}
proc intersects(self: Rect2i; b: Rect2i): bool {....raises: [], tags: [RootEffect], forbids: [].}
proc intersectsPlane(self: AABB; plane: Plane): bool {....raises: [], tags: [RootEffect], forbids: [].}
proc intersectsRay(self: AABB; from: Vector3; dir: Vector3): Variant {. ...raises: [], tags: [RootEffect], forbids: [].}
proc intersectsRay(self: Plane; from: Vector3; dir: Vector3): Variant {. ...raises: [], tags: [RootEffect], forbids: [].}
proc intersectsSegment(self: AABB; from: Vector3; to: Vector3): Variant {. ...raises: [], tags: [RootEffect], forbids: [].}
proc intersectsSegment(self: Plane; from: Vector3; to: Vector3): Variant {. ...raises: [], tags: [RootEffect], forbids: [].}
proc inverse(self: Projection): Projection {....raises: [], tags: [RootEffect], forbids: [].}
proc inverse(self: Quaternion): Quaternion {....raises: [], tags: [RootEffect], forbids: [].}
proc inverse(self: Transform2D): Transform2D {....raises: [], tags: [RootEffect], forbids: [].}
proc inverse(self: Transform3D): Transform3D {....raises: [], tags: [RootEffect], forbids: [].}
proc isConformal(self: Basis): bool {....raises: [], tags: [RootEffect], forbids: [].}
proc isConformal(self: Transform2D): bool {....raises: [], tags: [RootEffect], forbids: [].}
proc isEqualApprox(self: AABB; aabb: AABB): bool {....raises: [], tags: [RootEffect], forbids: [].}
proc isEqualApprox(self: Basis; b: Basis): bool {....raises: [], tags: [RootEffect], forbids: [].}
proc isEqualApprox(self: Plane; toPlane: Plane): bool {....raises: [], tags: [RootEffect], forbids: [].}
proc isEqualApprox(self: Quaternion; to: Quaternion): bool {....raises: [], tags: [RootEffect], forbids: [].}
proc isEqualApprox(self: Rect2; rect: Rect2): bool {....raises: [], tags: [RootEffect], forbids: [].}
proc isEqualApprox(self: Transform2D; xform: Transform2D): bool {....raises: [], tags: [RootEffect], forbids: [].}
proc isEqualApprox(self: Transform3D; xform: Transform3D): bool {....raises: [], tags: [RootEffect], forbids: [].}
proc isEqualApprox[N: static int; T: SomeFloat](left, right: Vector[N, T]): bool {. inline.}
proc isEqualApprox[T: SomeFloat](a, b, tolerance: T): bool {.inline.}
proc isEqualApprox[T: SomeFloat](a, b: T): bool {.inline.}
proc isFinite(self: Quaternion): bool {....raises: [], tags: [RootEffect], forbids: [].}
proc isFinite(self: Transform2D): bool {....raises: [], tags: [RootEffect], forbids: [].}
proc isFinite(self: Transform3D): bool {....raises: [], tags: [RootEffect], forbids: [].}
func isFinite[T: SomeFloat](pX: T): bool
proc isNormalized(self: Quaternion): bool {....raises: [], tags: [RootEffect], forbids: [].}
proc isOrthogonal(self: Projection): bool {....raises: [], tags: [RootEffect], forbids: [].}
proc isPointOver(self: Plane; point: Vector3): bool {....raises: [], tags: [RootEffect], forbids: [].}
proc isZeroApprox[N: static int; T: SomeFloat](self: Vector[N, T]): bool {. inline.}
proc isZeroApprox[T: SomeFloat](s: T): bool {.inline.}
proc jitterOffseted(self: Projection; offset: Vector2): Projection {....raises: [], tags: [RootEffect], forbids: [].}
proc length(self: Quaternion): Float {....raises: [], tags: [RootEffect], forbids: [].}
proc lengthSquared(self: Quaternion): Float {....raises: [], tags: [RootEffect], forbids: [].}
func lengthSquared[N: static int; T: SomeNumber](self: Vector[N, T]): T {.inline.}
func lerp[T: SomeFloat](pFrom, pTo: T; t: T): T {.inline.}
func lerpAngle[T: SomeFloat](pFrom, pTo: T; t: T): T {.inline.}
proc limitLength(self: Vector2; length: Float = 1.0): Vector2 {....raises: [], tags: [RootEffect], forbids: [].}
proc limitLength(self: Vector3; length: Float = 1.0): Vector3 {....raises: [], tags: [RootEffect], forbids: [].}
proc log(self: Quaternion): Quaternion {....raises: [], tags: [RootEffect], forbids: [].}
proc lookingAt(_: typedesc[Basis]; target: Vector3; up: Vector3 = vector3(0, 1, 0); useModelFront: bool = false): Basis
proc lookingAt(self: Transform2D; target: Vector2 = vector2(0, 0)): Transform2D {. ...raises: [], tags: [RootEffect], forbids: [].}
proc lookingAt(self: Transform3D; target: Vector3; up: Vector3 = vector3(0, 1, 0); useModelFront: bool = false): Transform3D {. ...raises: [], tags: [RootEffect], forbids: [].}
proc max(self: Vector2i; with: Vector2i): Vector2i {....raises: [], tags: [RootEffect], forbids: [].}
proc max(self: Vector3i; with: Vector3i): Vector3i {....raises: [], tags: [RootEffect], forbids: [].}
proc max(self: Vector4i; with: Vector4i): Vector4i {....raises: [], tags: [RootEffect], forbids: [].}
func max[T](x: T; xs: varargs[T]): T
proc min(self: Vector2i; with: Vector2i): Vector2i {....raises: [], tags: [RootEffect], forbids: [].}
proc min(self: Vector3i; with: Vector3i): Vector3i {....raises: [], tags: [RootEffect], forbids: [].}
proc min(self: Vector4i; with: Vector4i): Vector4i {....raises: [], tags: [RootEffect], forbids: [].}
func min[T](x: T; xs: varargs[T]): T
proc moveToward[N: static int; T: SomeFloat](from, to: Vector[N, T]; delta: T): Vector[ N, T] {.inline.}
proc moveToward[T: SomeFloat](from, to, delta: T): T
proc normalized(self: Plane): Plane {....raises: [], tags: [RootEffect], forbids: [].}
proc normalized(self: Quaternion): Quaternion {....raises: [], tags: [RootEffect], forbids: [].}
func normalized[N: static int; T: SomeFloat](self: Vector[N, T]): NVector[N, T] {. inline.}
func `not`(left: Projection): bool {....raises: [], tags: [RootEffect], forbids: [].}
func `not`(left: Quaternion): bool {....raises: [], tags: [RootEffect], forbids: [].}
func `not`(left: Transform2D): bool {....raises: [], tags: [RootEffect], forbids: [].}
func `not`(left: Transform3D): bool {....raises: [], tags: [RootEffect], forbids: [].}
proc octahedronDecode(_: typedesc[Vector3]; uv: Vector2): Vector3
proc octahedronEncode(self: Vector3): Vector2 {....raises: [], tags: [RootEffect], forbids: [].}
proc orthogonal(self: Vector2): Vector2 {....raises: [], tags: [RootEffect], forbids: [].}
proc orthonormalized(self: Basis): Basis {....raises: [], tags: [RootEffect], forbids: [].}
proc orthonormalized(self: Transform2D): Transform2D {....raises: [], tags: [RootEffect], forbids: [].}
proc orthonormalized(self: Transform3D): Transform3D {....raises: [], tags: [RootEffect], forbids: [].}
proc perspectiveZnearAdjusted(self: Projection; newZnear: Float): Projection {. ...raises: [], tags: [RootEffect], forbids: [].}
func posmod[T: SomeNumber](pX, pY: T): T {.inline.}
proc projection(): Projection {....raises: [], tags: [], forbids: [].}
proc projection(from: Projection): Projection {....raises: [], tags: [], forbids: [].}
proc projection(from: Transform3D): Projection {....raises: [], tags: [RootEffect], forbids: [].}
proc projection(xAxis, yAxis, zAxis, wAxis: Vector4): Projection {....raises: [], tags: [], forbids: [].}
proc projection(xx, xy, xz, xw, yx, yy, yz, yw, zx, zy, zz, zw, wx, wy, wz, ww: real_elem): Projection {. ...raises: [], tags: [], forbids: [].}
proc quaternion(): Quaternion {....raises: [], tags: [], forbids: [].}
proc quaternion(arcFrom: Vector3; arcTo: Vector3): Quaternion {....raises: [], tags: [RootEffect], forbids: [].}
proc quaternion(axis: Vector3; angle: Float): Quaternion {....raises: [], tags: [RootEffect], forbids: [].}
proc quaternion(from: Basis): Quaternion {....raises: [], tags: [RootEffect], forbids: [].}
proc quaternion(from: Quaternion): Quaternion {....raises: [], tags: [], forbids: [].}
proc quaternion(x, y, z, w: real_elem): Quaternion {....raises: [], tags: [], forbids: [].}
proc rotated(self: Basis; axis: Vector3; angle: Float): Basis {....raises: [], tags: [RootEffect], forbids: [].}
proc rotated(self: Transform2D; angle: Float): Transform2D {....raises: [], tags: [RootEffect], forbids: [].}
proc rotated(self: Transform3D; axis: Vector3; angle: Float): Transform3D {. ...raises: [], tags: [RootEffect], forbids: [].}
proc rotatedLocal(self: Transform2D; angle: Float): Transform2D {....raises: [], tags: [RootEffect], forbids: [].}
proc rotatedLocal(self: Transform3D; axis: Vector3; angle: Float): Transform3D {. ...raises: [], tags: [RootEffect], forbids: [].}
proc scaled(self: Transform2D; scale: Vector2): Transform2D {....raises: [], tags: [RootEffect], forbids: [].}
proc scaled(self: Transform3D; scale: Vector3): Transform3D {....raises: [], tags: [RootEffect], forbids: [].}
proc scaledLocal(self: Transform2D; scale: Vector2): Transform2D {....raises: [], tags: [RootEffect], forbids: [].}
proc scaledLocal(self: Transform3D; scale: Vector3): Transform3D {....raises: [], tags: [RootEffect], forbids: [].}
proc signedAngleTo(self: Vector3; to: Vector3; axis: Vector3): Float {. ...raises: [], tags: [RootEffect], forbids: [].}
func sinc[T: SomeFloat](pX: T): T {.inline.}
func sincn[T: SomeFloat](pX: T): T {.inline.}
proc slerp(self: Basis; to: Basis; weight: Float): Basis {....raises: [], tags: [RootEffect], forbids: [].}
proc slerp(self: Quaternion; to: Quaternion; weight: Float): Quaternion {. ...raises: [], tags: [RootEffect], forbids: [].}
proc slerpni(self: Quaternion; to: Quaternion; weight: Float): Quaternion {. ...raises: [], tags: [RootEffect], forbids: [].}
proc snapped[T: SomeFloat; S: SomeNumber](value: T; step: S): S
proc snappedf(self: Vector2; step: Float): Vector2 {....raises: [], tags: [RootEffect], forbids: [].}
proc snappedi(self: Vector2i; step: Int): Vector2i {....raises: [], tags: [RootEffect], forbids: [].}
proc sphericalCubicInterpolate(self: Quaternion; b: Quaternion; preA: Quaternion; postB: Quaternion; weight: Float): Quaternion {....raises: [], tags: [RootEffect], forbids: [].}
proc sphericalCubicInterpolateInTime(self: Quaternion; b: Quaternion; preA: Quaternion; postB: Quaternion; weight: Float; bT: Float; preAT: Float; postBT: Float): Quaternion {....raises: [], tags: [RootEffect], forbids: [].}
proc transform2D(): Transform2D {....raises: [], tags: [], forbids: [].}
proc transform2D(from: Transform2D): Transform2D {....raises: [], tags: [], forbids: [].}
proc transform2D(rotation: Float; position: Vector2): Transform2D {....raises: [], tags: [RootEffect], forbids: [].}
proc transform2D(rotation: Float; scale: Vector2; skew: Float; position: Vector2): Transform2D {. ...raises: [], tags: [RootEffect], forbids: [].}
proc transform2D(xAxis, yAxis, origin: Vector2): Transform2D {....raises: [], tags: [], forbids: [].}
proc transform2D(xx, xy, yx, yy, ox, oy: real_elem): Transform2D {....raises: [], tags: [], forbids: [].}
proc transform3D(): Transform3D {....raises: [], tags: [], forbids: [].}
proc transform3D(basis: Basis; origin: Vector3): Transform3D {....raises: [], tags: [], forbids: [].}
proc transform3D(from: Projection): Transform3D {....raises: [], tags: [RootEffect], forbids: [].}
proc transform3D(from: Transform3D): Transform3D {....raises: [], tags: [], forbids: [].}
proc transform3D(xAxis, yAxis, zAxis, origin: Vector3): Transform3D {. ...raises: [], tags: [], forbids: [].}
proc transform3D(xx, xy, xz, yx, yy, yz, zx, zy, zz, ox, oy, oz: real_elem): Transform3D {. ...raises: [], tags: [], forbids: [].}
proc translated(self: Transform2D; offset: Vector2): Transform2D {....raises: [], tags: [RootEffect], forbids: [].}
proc translated(self: Transform3D; offset: Vector3): Transform3D {....raises: [], tags: [RootEffect], forbids: [].}
proc translatedLocal(self: Transform2D; offset: Vector2): Transform2D {. ...raises: [], tags: [RootEffect], forbids: [].}
proc translatedLocal(self: Transform3D; offset: Vector3): Transform3D {. ...raises: [], tags: [RootEffect], forbids: [].}
proc transposed(self: Basis): Basis {....raises: [], tags: [RootEffect], forbids: [].}
Templates
template `*`[F: SomeFloat; I: SomeInteger](f: F; i: I): F
template `*`[F: SomeFloat; I: SomeInteger](i: I; f: F): F
template `+`[F: SomeFloat; I: SomeInteger](f: F; i: I): F
template `+`[F: SomeFloat; I: SomeInteger](i: I; f: F): F
template `-`[F: SomeFloat; I: SomeInteger](f: F; i: I): F
template `-`[F: SomeFloat; I: SomeInteger](i: I; f: F): F
template `/`[F: SomeFloat; I: SomeInteger](f: F; i: I): F
template `/`[F: SomeFloat; I: SomeInteger](i: I; f: F): F
template absf[T: SomeFloat](x: T): T {..}
template absi[T: SomeInteger](x: T): T {..}
template acos[T: SomeFloat](pX: T): T {..}
template acosh[T: SomeFloat](pX: T): T {..}
template all[N: static int; T1, T2](pred; v1: array[N, T1] | T1; v2: array[N, T2] | T2): bool
template all[N: static int; T](pred; v: array[N, T]): bool
template any[N: static int; T1, T2](pred; v1: array[N, T1] | T1; v2: array[N, T2] | T2): bool
template any[N: static int; T](pred; v: array[N, T]): bool
template asin[T: SomeFloat](pX: T): T {..}
template asinh[T: SomeFloat](pX: T): T {..}
template atan[T: SomeFloat](pX: T): T {..}
template atan2[T: SomeFloat](pY, pX: T): T {..}
template atanh[T: SomeFloat](pX: T): T {..}
template ceilf[T: SomeFloat](x: T): T {..}
template ceili[T: SomeFloat](x: T): int {..}
template clampf[T: SomeFloat](value, min, max: T): T {..}
template clampi[T: SomeInteger](value, min, max: T): T {..}
template FlipX(_: typedesc[Transform2D]): Transform2D
template FlipX(_: typedesc[Transform3D]): Transform3D
template FlipY(_: typedesc[Transform2D]): Transform2D
template FlipY(_: typedesc[Transform3D]): Transform3D
template FlipZ(_: typedesc[Transform3D]): Transform3D
template floorf[T: SomeFloat](x: T): T {..}
template floori[T: SomeFloat](x: T): int {..}
template fmod[T: SomeNumber](x, y: T): T {..}
template fposmod[T: SomeFloat](x, y: T): T {..}
template Identity(_: typedesc[Projection]): Projection
template Identity(_: typedesc[Quaternion]): Quaternion
template Identity(_: typedesc[Transform2D]): Transform2D
template Identity(_: typedesc[Transform3D]): Transform3D
template isInf[T: SomeFloat](x: T): bool {..}
template maxf[T: SomeFloat](a, b: T): T {..}
template maxi[T: SomeInteger](a, b: T): T {..}
template minf[T: SomeFloat](a, b: T): T {..}
template mini[T: SomeInteger](a, b: T): T {..}
template ModelBottom(_: typedesc[Vector3]): Vector3
template ModelFront(_: typedesc[Vector3]): Vector3
template ModelRight(_: typedesc[Vector3]): Vector3
template nearestPo2(value: Int): Int {..}
template roundf[T: SomeFloat](x: T): T {..}
template roundi[T: SomeFloat](x: T): int {..}
template sign[T](v: T): auto {..}
template signf[T: SomeFloat](x: T): T {..}
template signi[T: SomeInteger](x: T): T {..}
template snappedf[T: SomeFloat; S: SomeFloat](value: T; step: S): S {..}
template snappedi[T: SomeFloat; S: SomeInteger](value: T; step: S): S {..}
template w[T](vector: array[4, T]): T
template w=[T](vector: var array[4, T]; value: T)
template wrapf[T: SomeFloat](value, min, max: T): T {..}
template wrapi[T: SomeInteger](value, min, max: T): T {..}
template x[T](vector: array[2, T]): T
template x[T](vector: array[3, T]): T
template x[T](vector: array[4, T]): T
template x=[T](vector: var array[2, T]; value: T)
template x=[T](vector: var array[3, T]; value: T)
template x=[T](vector: var array[4, T]; value: T)
template y[T](vector: array[2, T]): T
template y[T](vector: array[3, T]): T
template y[T](vector: array[4, T]): T
template y=[T](vector: var array[2, T]; value: T)
template y=[T](vector: var array[3, T]; value: T)
template y=[T](vector: var array[4, T]; value: T)
template Zero(_: typedesc[Projection]): Projection
template `~=`(a, b: typed): bool