Versions in this module Expand all Collapse all v1 v1.0.1 Jan 14, 2025 Changes in this version + const EPSILON + var Mat3FlipY = Matrix3(1, 0, 0, 0, -1, 0, 0, 0, 1) + var Mat3FlipZ = Matrix3(1, 0, 0, 0, 1, 0, 0, 0, -1) + var Mat3Identity = Matrix3(1, 0, 0, 0, 1, 0, 0, 0, 1) + var Mat3LYToRZ = Mat3FlipZ.Mul(Mat3YToZUp) + var Mat3LZToRY = Mat3FlipY.Mul(Mat3ZToYUp) + var Mat3YToZUp = Matrix3(1, 0, 0, 0, 0, 1, 0, -1, 0) + var Mat3ZToYUp = Matrix3(1, 0, 0, 0, 0, -1, 0, 1, 0) + var Mat4FlipY = Matrix4(1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1) + var Mat4FlipZ = Matrix4(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 1) + var Mat4Identity = Matrix4(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1) + var Mat4LYToRZ = Mat4FlipZ.Mul(Mat4YToZUp) + var Mat4LZToRY = Mat4FlipY.Mul(Mat4ZToYUp) + var Mat4Ones = Matrix4(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1) + var Mat4YToZUp = Matrix4(1, 0, 0, 0, 0, 0, 1, 0, 0, -1, 0, 0, 0, 0, 0, 1) + var Mat4ZToYUp = Matrix4(1, 0, 0, 0, 0, 0, -1, 0, 0, 1, 0, 0, 0, 0, 0, 1) + var Mat4Zeros = Matrix4(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) + var QuatIdentity = Quat + var QuatZero = Quat + var Rect3Zero = Rect3 + var Vec2One = Vec2 + var Vec2XUnit = Vec2 + var Vec2YUnit = Vec2 + var Vec2Zero = Vec2 + var Vec3One = Vec3 + var Vec3XUnit = Vec3 + var Vec3YUnit = Vec3 + var Vec3ZUnit = Vec3 + var Vec3Zero = Vec3 + var Vec4One = Vec4 + var Vec4WUnit = Vec4 + var Vec4XUnit = Vec4 + var Vec4YUnit = Vec4 + var Vec4ZUnit = Vec4 + var Vec4Zero = Vec4 + func AlmostEqual(x, y, absTol float64) bool + func Clamp(v, min, max float64) float64 + func Degrees(radians float64) (degrees float64) + func Equal(a, b float64) bool + func Lerp(a, b, t float64) float64 + func Radians(degrees float64) (radians float64) + func Rounded(v float64) float64 + type CoordSys uint8 + const CoordSysInvalid + const CoordSysYUpLeft + const CoordSysYUpRight + const CoordSysZUpLeft + const CoordSysZUpRight + func (c CoordSys) Back() Vec3 + func (c CoordSys) ConvertMat3(to CoordSys) Mat3 + func (c CoordSys) ConvertMat4(to CoordSys) Mat4 + func (c CoordSys) Down() Vec3 + func (c CoordSys) Forward() Vec3 + func (c CoordSys) Left() Vec3 + func (c CoordSys) LeftHanded() bool + func (c CoordSys) Right() Vec3 + func (c CoordSys) RightFrontUp(right, forward, up float64) Vec3 + func (c CoordSys) RightHanded() bool + func (c CoordSys) Up() Vec3 + type Mat3 [3][3]float64 + func Mat3Compose(scale, shear, hpr Vec3, cs CoordSys) Mat3 + func Mat3FromAxisAngle(axis Vec3, angle float64, cs CoordSys) Mat3 + func Mat3FromScaleShear(scale, shear Vec3, cs CoordSys) Mat3 + func Mat3FromTranslation(translation Vec2) Mat3 + func Matrix3(m00, m01, m02, m10, m11, m12, m20, m21, m22 float64) Mat3 + func (a Mat3) Add(b Mat3) Mat3 + func (a Mat3) AddScalar(s float64) Mat3 + func (a Mat3) AlmostEquals(b Mat3, epsilon float64) bool + func (a Mat3) Col(column int) Vec3 + func (a Mat3) ColVec2(column int) Vec2 + func (a Mat3) Decompose(cs CoordSys) (scale, shear, hpr Vec3) + func (a Mat3) Determinant() float64 + func (a Mat3) DivScalar(s float64) Mat3 + func (a Mat3) Equals(b Mat3) bool + func (a Mat3) Inverse() (result Mat3, ok bool) + func (a Mat3) InverseTransposed() (result Mat3, ok bool) + func (a Mat3) IsNaN() bool + func (a Mat3) Mul(b Mat3) Mat3 + func (a Mat3) MulQuat(b Quat) Mat3 + func (a Mat3) MulScalar(s float64) Mat3 + func (a Mat3) Row(row int) Vec3 + func (a Mat3) RowVec2(row int) Vec2 + func (a Mat3) SetCol(column int, values Vec3) Mat3 + func (a Mat3) SetColVec2(column int, values Vec2) Mat3 + func (a Mat3) SetRow(row int, values Vec3) Mat3 + func (a Mat3) SetRowVec2(row int, values Vec2) Mat3 + func (a Mat3) String() string + func (a Mat3) Sub(b Mat3) Mat3 + func (a Mat3) SubScalar(s float64) Mat3 + func (a Mat3) Transposed() Mat3 + type Mat4 [4][4]float64 + func Mat4FromAxisAngle(axis Vec3, angle float64, cs CoordSys) Mat4 + func Mat4FromFrustum(left, right, bottom, top, near, far float64) Mat4 + func Mat4FromScale(scale Vec3) Mat4 + func Mat4FromScaleShear(scale, shear Vec3, cs CoordSys) Mat4 + func Mat4FromTranslation(translation Vec3) Mat4 + func Mat4Ortho(left, right, bottom, top, near, far float64) Mat4 + func Mat4Perspective(fovY, aspectRatio, near, far float64) Mat4 + func Mat4UnOrtho(left, right, bottom, top, near, far float64) Mat4 + func Matrix4(...) Mat4 + func (a Mat4) Add(b Mat4) Mat4 + func (a Mat4) AddScalar(s float64) Mat4 + func (a Mat4) AffineInverse() (out Mat4, ok bool) + func (a Mat4) AlmostEquals(b Mat4, epsilon float64) bool + func (a Mat4) Col(column int) Vec4 + func (a Mat4) ColVec3(column int) Vec3 + func (a Mat4) Determinant() float64 + func (a Mat4) DivScalar(s float64) Mat4 + func (a Mat4) Equals(b Mat4) bool + func (a Mat4) Inverse() (result Mat4, ok bool) + func (a Mat4) IsNaN() bool + func (a Mat4) Mul(b Mat4) Mat4 + func (a Mat4) MulQuat(b Quat) Mat4 + func (a Mat4) MulScalar(s float64) Mat4 + func (a Mat4) Project(p3 Vec3) (p2 Vec2, ok bool) + func (a Mat4) Row(row int) Vec4 + func (a Mat4) RowVec3(row int) Vec3 + func (a Mat4) SetCol(column int, values Vec4) Mat4 + func (a Mat4) SetColVec3(column int, values Vec3) Mat4 + func (a Mat4) SetRow(row int, values Vec4) Mat4 + func (a Mat4) SetRowVec3(row int, values Vec3) Mat4 + func (a Mat4) SetTranslation(t Vec3) Mat4 + func (a Mat4) SetUpperMat3(b Mat3) Mat4 + func (a Mat4) String() string + func (a Mat4) Sub(b Mat4) Mat4 + func (a Mat4) SubScalar(s float64) Mat4 + func (a Mat4) Translation() Vec3 + func (a Mat4) Transposed() Mat4 + func (a Mat4) UpperMat3() Mat3 + type Quat struct + W float64 + X float64 + Y float64 + Z float64 + func QuatFromAxisAngle(axis Vec3, angle float64) Quat + func QuatFromHpr(hpr Vec3, cs CoordSys) Quat + func QuatFromMat3(m Mat3) Quat + func (a Quat) Add(b Quat) Quat + func (a Quat) AddScalar(b float64) Quat + func (a Quat) AlmostEquals(b Quat, epsilon float64) bool + func (a Quat) Angle() float64 + func (a Quat) AngleQuat(cs CoordSys, b Quat) float64 + func (a Quat) Axis() Vec3 + func (a Quat) Clamp(min, max float64) Quat + func (a Quat) Conjugate() Quat + func (a Quat) Div(b Quat) Quat + func (a Quat) DivScalar(b float64) Quat + func (a Quat) Dot(b Quat) float64 + func (a Quat) Equals(b Quat) bool + func (a Quat) ExtractToMat3() Mat3 + func (a Quat) ExtractToMat4() Mat4 + func (a Quat) Forward(cs CoordSys) Vec3 + func (a Quat) Hpr(cs CoordSys) (hpr Vec3) + func (a Quat) Inverse() Quat + func (a Quat) IsNaN() bool + func (a Quat) Length() float64 + func (a Quat) LengthSq() float64 + func (a Quat) Lerp(b Quat, t float64) Quat + func (a Quat) Max(b Quat) Quat + func (a Quat) Min(b Quat) Quat + func (a Quat) Mul(b Quat) Quat + func (a Quat) MulScalar(b float64) Quat + func (a Quat) Normalized() Quat + func (a Quat) Right(cs CoordSys) Vec3 + func (a Quat) String() string + func (a Quat) Sub(b Quat) Quat + func (a Quat) SubScalar(b float64) Quat + func (a Quat) TransformVec3(v Vec3) Vec3 + func (a Quat) TransformVec4(v Vec4) Vec4 + func (a Quat) Up(cs CoordSys) Vec3 + func (a Quat) Vec4() Vec4 + type Rect3 struct + Max Vec3 + Min Vec3 + func (r Rect3) Add(p Vec3) Rect3 + func (r Rect3) AlmostEmpty(epsilon float64) bool + func (r Rect3) AlmostEquals(s Rect3, epsilon float64) bool + func (r Rect3) Area() float64 + func (r Rect3) Canon() Rect3 + func (r Rect3) Center() Vec3 + func (r Rect3) Closest(p Vec3) Vec3 + func (r Rect3) Contains(p Vec3) bool + func (r Rect3) Corners() [8]Vec3 + func (r Rect3) Empty() bool + func (r Rect3) Equals(s Rect3) bool + func (r Rect3) Furthest(p Vec3) Vec3 + func (r Rect3) In(s Rect3) bool + func (r Rect3) InSphere(s Sphere) bool + func (r Rect3) Inset(n float64) Rect3 + func (r Rect3) Intersect(s Rect3) (largest Rect3, ok bool) + func (r Rect3) Overlaps(s Rect3) bool + func (r Rect3) Size() Vec3 + func (r Rect3) SqDistToPoint(p Vec3) float64 + func (r Rect3) String() string + func (r Rect3) Sub(p Vec3) Rect3 + func (r Rect3) Union(s Rect3) Rect3 + type Sphere struct + Center Vec3 + Radius float64 + func (s Sphere) Contains(p Vec3) bool + func (s Sphere) In(b Sphere) bool + func (s Sphere) InRect3(r Rect3) bool + func (s Sphere) Overlaps(b Sphere) bool + func (s Sphere) OverlapsRect3(r Rect3) bool + func (s Sphere) Rect3() Rect3 + type Vec2 struct + X float64 + Y float64 + func (a Vec2) Add(b Vec2) Vec2 + func (a Vec2) AddScalar(b float64) Vec2 + func (a Vec2) AlmostEquals(b Vec2, epsilon float64) bool + func (a Vec2) Angle(b Vec2) float64 + func (a Vec2) AnyGreater(b Vec2) bool + func (a Vec2) AnyLess(b Vec2) bool + func (a Vec2) Clamp(min, max float64) Vec2 + func (a Vec2) Degrees() Vec2 + func (a Vec2) Div(b Vec2) Vec2 + func (a Vec2) DivScalar(b float64) Vec2 + func (a Vec2) Dot(b Vec2) float64 + func (a Vec2) Equals(b Vec2) bool + func (a Vec2) Greater(b Vec2) bool + func (a Vec2) Inverse() Vec2 + func (a Vec2) IsNaN() bool + func (a Vec2) Length() float64 + func (a Vec2) LengthSq() float64 + func (a Vec2) Lerp(b Vec2, t float64) Vec2 + func (a Vec2) Less(b Vec2) bool + func (a Vec2) Max(b Vec2) Vec2 + func (a Vec2) Min(b Vec2) Vec2 + func (a Vec2) Mul(b Vec2) Vec2 + func (a Vec2) MulScalar(b float64) Vec2 + func (a Vec2) Normalized() (v Vec2, ok bool) + func (a Vec2) Proj(b Vec2) Vec2 + func (a Vec2) Radians() Vec2 + func (a Vec2) Rounded() Vec2 + func (a Vec2) String() string + func (a Vec2) Sub(b Vec2) Vec2 + func (a Vec2) SubScalar(b float64) Vec2 + func (a Vec2) TransformPointVec2(b Mat3) Vec2 + func (a Vec2) TransformVec2(b Mat3) Vec2 + type Vec3 struct + X float64 + Y float64 + Z float64 + func CartToSphere(p Vec3) Vec3 + func SphereToCart(r float64, p Vec2) Vec3 + func (a Vec3) Add(b Vec3) Vec3 + func (a Vec3) AddScalar(b float64) Vec3 + func (a Vec3) AlmostEquals(b Vec3, epsilon float64) bool + func (a Vec3) Angle(b Vec3) float64 + func (a Vec3) AnyGreater(b Vec3) bool + func (a Vec3) AnyLess(b Vec3) bool + func (a Vec3) Clamp(min, max float64) Vec3 + func (a Vec3) Cross(b Vec3) Vec3 + func (a Vec3) Degrees() Vec3 + func (a Vec3) Div(b Vec3) Vec3 + func (a Vec3) DivScalar(b float64) Vec3 + func (a Vec3) Dot(b Vec3) float64 + func (a Vec3) Equals(b Vec3) bool + func (a Vec3) Greater(b Vec3) bool + func (a Vec3) Inverse() Vec3 + func (a Vec3) IsNaN() bool + func (a Vec3) Length() float64 + func (a Vec3) LengthSq() float64 + func (a Vec3) Lerp(b Vec3, t float64) Vec3 + func (a Vec3) Less(b Vec3) bool + func (a Vec3) Max(b Vec3) Vec3 + func (a Vec3) Min(b Vec3) Vec3 + func (a Vec3) Mul(b Vec3) Vec3 + func (a Vec3) MulScalar(b float64) Vec3 + func (a Vec3) Normalized() (v Vec3, ok bool) + func (a Vec3) Proj(b Vec3) Vec3 + func (a Vec3) Radians() Vec3 + func (a Vec3) Rounded() Vec3 + func (a Vec3) SignedAngle(b, reference Vec3) float64 + func (a Vec3) String() string + func (a Vec3) Sub(b Vec3) Vec3 + func (a Vec3) SubScalar(b float64) Vec3 + func (a Vec3) TransformGeneralMat3(b Mat3) Vec3 + func (a Vec3) TransformGeneralMat4(b Mat4) Vec3 + func (a Vec3) TransformMat3(b Mat3) Vec3 + func (a Vec3) TransformMat4(b Mat4) Vec3 + func (a Vec3) TransformVecMat4(b Mat4) Vec3 + func (v Vec3) HprToXyz() Vec3 + func (v Vec3) XyzToHpr() Vec3 + type Vec4 struct + W float64 + X float64 + Y float64 + Z float64 + func (a Vec4) Add(b Vec4) Vec4 + func (a Vec4) AddScalar(b float64) Vec4 + func (a Vec4) AlmostEquals(b Vec4, epsilon float64) bool + func (a Vec4) AnyGreater(b Vec4) bool + func (a Vec4) AnyLess(b Vec4) bool + func (a Vec4) Clamp(min, max float64) Vec4 + func (a Vec4) Degrees() Vec4 + func (a Vec4) Div(b Vec4) Vec4 + func (a Vec4) DivScalar(b float64) Vec4 + func (a Vec4) Dot(b Vec4) float64 + func (a Vec4) Equals(b Vec4) bool + func (a Vec4) Greater(b Vec4) bool + func (a Vec4) IsNaN() bool + func (a Vec4) Length() float64 + func (a Vec4) LengthSq() float64 + func (a Vec4) Lerp(b Vec4, t float64) Vec4 + func (a Vec4) Less(b Vec4) bool + func (a Vec4) Max(b Vec4) Vec4 + func (a Vec4) Min(b Vec4) Vec4 + func (a Vec4) Mul(b Vec4) Vec4 + func (a Vec4) MulScalar(b float64) Vec4 + func (a Vec4) Normalized() (v Vec4, ok bool) + func (a Vec4) Proj(b Vec4) Vec4 + func (a Vec4) Quat() Quat + func (a Vec4) Radians() Vec4 + func (a Vec4) Rounded() Vec4 + func (a Vec4) String() string + func (a Vec4) Sub(b Vec4) Vec4 + func (a Vec4) SubScalar(b float64) Vec4 + func (a Vec4) Transform(b Mat4) Vec4 + func (a Vec4) Vec3() Vec3