gglm

package
v0.50.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 14, 2024 License: MIT Imports: 3 Imported by: 15

Documentation

Index

Constants

View Source
const (
	Pi         float32 = 3.14159265359
	Deg2Rad    float32 = Pi / 180
	Rad2Deg    float32 = 180 / Pi
	F32Epsilon float32 = 1e-6

	// CosHalf is Cos32(0.5)
	CosHalf float32 = 0.87758256189
)

Variables

This section is empty.

Functions

func Abs32 added in v0.3.0

func Abs32(x float32) float32

func Acos32 added in v0.1.1

func Acos32(x float32) float32

func AngleQuat added in v0.1.1

func AngleQuat(q1, q2 *Quat) float32

AngleQuat returns the angle between the two quaternions in radians

func AngleVec3 added in v0.43.0

func AngleVec3(v1, v2 *Vec3) float32

AngleVec3 returns the angle between the two vectors in radians

func Asin32 added in v0.1.1

func Asin32(x float32) float32

func Atan232 added in v0.3.1

func Atan232(x, y float32) float32

func Atan32 added in v0.3.1

func Atan32(x float32) float32

func Clamp added in v0.50.0

func Clamp[T constraints.Ordered](x, min, max T) T

Clamp returns:

min if x<min
max if x>max
x   if x>=min && x<=max

func Cos32 added in v0.1.0

func Cos32(x float32) float32

func DistVec2 added in v0.0.4

func DistVec2(v1, v2 *Vec2) float32

DistVec2 returns euclidean distance between v1 and v2

func DistVec3 added in v0.0.4

func DistVec3(v1, v2 *Vec3) float32

DistVec3 returns euclidean distance between v1 and v2

func DistVec4 added in v0.0.5

func DistVec4(v1, v2 *Vec4) float32

DistVec4 returns euclidean distance between v1 and v2

func DotQuat added in v0.1.1

func DotQuat(q1, q2 *Quat) float32

func DotVec2

func DotVec2(v1, v2 *Vec2) float32

func DotVec3

func DotVec3(v1, v2 *Vec3) float32

func DotVec4 added in v0.0.3

func DotVec4(v1, v2 *Vec4) float32

func EqF32 added in v0.0.8

func EqF32(f1, f2 float32) bool

EqF32 true if abs(f1-f2) <= F32Epsilon

func EqF32Epsilon added in v0.0.8

func EqF32Epsilon(f1, f2, eps float32) bool

EqF32Epsilon true if abs(f1-f2) <= eps

func Sin32 added in v0.1.0

func Sin32(x float32) float32

func Sincos32 added in v0.1.0

func Sincos32(x float32) (sinx, cosx float32)

func SqrDistVec2 added in v0.0.4

func SqrDistVec2(v1, v2 *Vec2) float32

DistVec2 returns the squared euclidean distance between v1 and v2 (avoids a sqrt)

func SqrDistVec3 added in v0.0.4

func SqrDistVec3(v1, v2 *Vec3) float32

DistVec3 returns the squared euclidean distance between v1 and v2 (avoids a sqrt)

func SqrDistVec4 added in v0.0.5

func SqrDistVec4(v1, v2 *Vec4) float32

DistVec4 returns the squared euclidean distance between v1 and v2 (avoids a sqrt)

func Sqrt32 added in v0.3.0

func Sqrt32(x float32) float32

func Tan32 added in v0.3.1

func Tan32(x float32) float32

Types

type Mat

type Mat interface {
	Get(row, col int) float32
	Set(row, col int, val float32)
	Size() MatSize
}

type Mat2

type Mat2 struct {
	Data [2][2]float32
}

func AddMat2

func AddMat2(m1, m2 *Mat2) Mat2

AddMat2 m3 = m1 + m2

func MulMat2 added in v0.0.2

func MulMat2(m1, m2 *Mat2) Mat2

MulMat2 m3 = m1 * m2

func NewMat2Arr added in v0.45.0

func NewMat2Arr(col0, col1 [2]float32) Mat2

func NewMat2Diag added in v0.45.0

func NewMat2Diag(diagVal float32) Mat2

func NewMat2DiagArr added in v0.45.0

func NewMat2DiagArr(diag [2]float32) Mat2

func NewMat2Id

func NewMat2Id() Mat2

NewMat2Id returns the 2x2 identity matrix

func NewMat2Vec2 added in v0.45.0

func NewMat2Vec2(col0, col1 *Vec2) Mat2

func SubMat2

func SubMat2(m1, m2 *Mat2) Mat2

SubMat2 m3 = m1 - m2

func (*Mat2) Add

func (m *Mat2) Add(m2 *Mat2) *Mat2

Add m += m2

func (*Mat2) Clone added in v0.1.0

func (m *Mat2) Clone() *Mat2

func (*Mat2) Col added in v0.3.0

func (m *Mat2) Col(c int) Vec2

func (*Mat2) Determinant added in v0.45.0

func (m *Mat2) Determinant() float32

func (*Mat2) Eq added in v0.0.3

func (m *Mat2) Eq(m2 *Mat2) bool

func (*Mat2) Get added in v0.0.4

func (m *Mat2) Get(row, col int) float32

func (*Mat2) Invert added in v0.45.0

func (m *Mat2) Invert() *Mat2

Invert inverts this matrix.

Note that the inverse is not defined if the determinant is zero or extremely small. In the case the determinant is zero the matrix will (usually) get filled with infinities

func (*Mat2) Mul added in v0.0.2

func (m1 *Mat2) Mul(m2 *Mat2) *Mat2

Mul m *= m2

func (*Mat2) Scale

func (m *Mat2) Scale(x float32) *Mat2

Scale m *= x (element wise multiplication)

func (*Mat2) Set

func (m *Mat2) Set(row, col int, val float32)

func (*Mat2) Size

func (m *Mat2) Size() MatSize

func (*Mat2) String

func (m *Mat2) String() string

func (*Mat2) Sub

func (m *Mat2) Sub(m2 *Mat2) *Mat2

Add m -= m2

func (*Mat2) Transpose added in v0.44.0

func (m *Mat2) Transpose() *Mat2

type Mat3

type Mat3 struct {
	Data [3][3]float32
}

func AddMat3

func AddMat3(m1, m2 *Mat3) Mat3

AddMat3 m3 = m1 + m2

func MulMat3 added in v0.0.2

func MulMat3(m1, m2 *Mat3) Mat3

MulMat3 m3 = m1 * m2

func NewMat3Arr added in v0.45.0

func NewMat3Arr(col0, col1, col2 [3]float32) Mat3

func NewMat3Diag added in v0.45.0

func NewMat3Diag(diagVal float32) Mat3

func NewMat3DiagArr added in v0.45.0

func NewMat3DiagArr(diag [3]float32) Mat3

func NewMat3Id

func NewMat3Id() Mat3

NewMat3Id returns the 3x3 identity matrix

func NewMat3Vec3 added in v0.45.0

func NewMat3Vec3(col0, col1, col2 *Vec3) Mat3

func SubMat3

func SubMat3(m1, m2 *Mat3) Mat3

SubMat3 m3 = m1 - m2

func (*Mat3) Add

func (m *Mat3) Add(m2 *Mat3) *Mat3

Add m += m2

func (*Mat3) Clone added in v0.1.0

func (m *Mat3) Clone() *Mat3

func (*Mat3) Col added in v0.3.0

func (m *Mat3) Col(c int) Vec3

func (*Mat3) Determinant added in v0.45.0

func (m *Mat3) Determinant() float32

func (*Mat3) Eq added in v0.0.3

func (m *Mat3) Eq(m2 *Mat3) bool

func (*Mat3) Get added in v0.0.4

func (m *Mat3) Get(row, col int) float32

func (*Mat3) Invert added in v0.45.0

func (m *Mat3) Invert() *Mat3

Invert inverts this matrix.

Note that the inverse is not defined if the determinant is zero or extremely small. In the case the determinant is zero the matrix will (usually) get filled with infinities

func (*Mat3) Mul added in v0.0.2

func (m *Mat3) Mul(m2 *Mat3) *Mat3

Mul m *= m2

func (*Mat3) Scale

func (m *Mat3) Scale(x float32) *Mat3

Scale m *= x (element wise multiplication)

func (*Mat3) Set

func (m *Mat3) Set(row, col int, val float32)

func (*Mat3) Size

func (m *Mat3) Size() MatSize

func (*Mat3) String

func (m *Mat3) String() string

func (*Mat3) Sub

func (m *Mat3) Sub(m2 *Mat3) *Mat3

Add m -= m2

func (*Mat3) ToMat2 added in v0.45.0

func (m *Mat3) ToMat2() Mat2

ToMat2 returns a Mat2 that contains the top-left 2x2 section of the Mat3. That is, column 2 and row 2 are dropped.

func (*Mat3) Transpose added in v0.44.0

func (m *Mat3) Transpose() *Mat3

type Mat4

type Mat4 struct {
	Data [4][4]float32
}

func AddMat4

func AddMat4(m1, m2 *Mat4) Mat4

AddMat4 m3 = m1 + m2

func MulMat4 added in v0.0.2

func MulMat4(m1, m2 *Mat4) Mat4

MulMat4 m3 = m1 * m2

func NewMat4Arr added in v0.45.0

func NewMat4Arr(col0, col1, col2, col3 [4]float32) *Mat4

func NewMat4Diag added in v0.45.0

func NewMat4Diag(diagVal float32) Mat4

func NewMat4DiagArr added in v0.45.0

func NewMat4DiagArr(diag [4]float32) Mat4

func NewMat4Id

func NewMat4Id() Mat4

NewMat4Id returns the 4x4 identity matrix

func NewMat4Vec4 added in v0.45.0

func NewMat4Vec4(col0, col1, col2, col3 *Vec4) Mat4

func Perspective added in v0.2.1

func Perspective(fov, aspectRatio, nearClip, farClip float32) Mat4

Perspective creates a perspective projection matrix

func SubMat4

func SubMat4(m1, m2 *Mat4) Mat4

SubMat4 m3 = m1 - m2

func (*Mat4) Add

func (m *Mat4) Add(m2 *Mat4) *Mat4

Add m += m2

func (*Mat4) Clone added in v0.1.0

func (v *Mat4) Clone() *Mat4

func (*Mat4) Col added in v0.3.0

func (m *Mat4) Col(c int) Vec4

func (*Mat4) Determinant added in v0.45.0

func (m *Mat4) Determinant() float32

func (*Mat4) Eq added in v0.0.3

func (m *Mat4) Eq(m2 *Mat4) bool

func (*Mat4) Get added in v0.0.4

func (m *Mat4) Get(row, col int) float32

func (*Mat4) Invert added in v0.45.0

func (m *Mat4) Invert() *Mat4

Invert inverts this matrix.

Note that the inverse is not defined if the determinant is zero or extremely small. In the case the determinant is zero the matrix will (usually) get filled with infinities

func (*Mat4) InvertAndTranspose added in v0.45.0

func (m *Mat4) InvertAndTranspose() *Mat4

InvertAndTranspose is equivalent to m.Invert().Transpose(), that is invert first, then transpose the inverted matrix.

This function is provided as a convenience and as a small optimization, as it inlines the invert and transpose functions which means we only have 1 function call.

Additionally, the inverse of the matrix is written to the matrix immediately transposed instead of writing the inverse and then transposing it in a second operation.

func (*Mat4) Mul added in v0.0.2

func (m *Mat4) Mul(m2 *Mat4) *Mat4

Mul m *= m2

func (*Mat4) Scale

func (m *Mat4) Scale(x float32) *Mat4

Scale m *= x (element wise multiplication)

func (*Mat4) Set

func (m *Mat4) Set(row, col int, val float32)

func (*Mat4) Size

func (m *Mat4) Size() MatSize

func (*Mat4) String

func (m *Mat4) String() string

func (*Mat4) Sub

func (m *Mat4) Sub(m2 *Mat4) *Mat4

Add m -= m2

func (*Mat4) ToMat2 added in v0.45.0

func (m *Mat4) ToMat2() Mat2

ToMat2 returns a Mat2 that contains the top-left 2x2 section of the Mat4. That is, columns 2 and 3, and rows 2 and 3, are dropped.

func (*Mat4) ToMat3 added in v0.45.0

func (m *Mat4) ToMat3() Mat3

ToMat3 returns a Mat3 that contains the top-left 3x3 section of the Mat4. That is, column 3 and row 3 are dropped.

func (*Mat4) Transpose added in v0.44.0

func (m *Mat4) Transpose() *Mat4

type MatSize

type MatSize int
const (
	MatSizeUnknown MatSize = iota
	MatSize2x2
	MatSize3x3
	MatSize4x4
)

func (MatSize) String

func (ms MatSize) String() string

String panics if the MatSize is not known

type Quat added in v0.1.0

type Quat struct {
	Vec4
}

func NewQuat added in v0.46.0

func NewQuat(x, y, z, w float32) Quat

func NewQuatAngleAxis added in v0.1.0

func NewQuatAngleAxis(rotRad float32, rotAxisNormX, rotAxisNormY, rotAxisNormZ float32) Quat

NewQuatAngleAxis produces a quaternion thats rotates rotRad radians around the *normalized* vector rotAxisNorm

func NewQuatAngleAxisVec added in v0.46.0

func NewQuatAngleAxisVec(rotRad float32, rotAxisNorm *Vec3) Quat

NewQuatAngleAxisVec produces a quaternion thats rotates rotRad radians around the *normalized* vector rotAxisNorm

func NewQuatArr added in v0.46.0

func NewQuatArr(arr [4]float32) Quat

func NewQuatEuler added in v0.1.0

func NewQuatEuler(x, y, z float32) Quat

NewQuatEuler takes rotations in radians and produces a rotation that rotates around the z-axis, y-axis and lastly x-axis.

func NewQuatEulerVec added in v0.46.0

func NewQuatEulerVec(v *Vec3) Quat

NewQuatEulerVec takes rotations in radians and produces a rotation that rotates around the z-axis, y-axis and lastly x-axis.

func NewQuatId added in v0.1.0

func NewQuatId() Quat

func NewQuatVec added in v0.46.0

func NewQuatVec(v *Vec4) Quat

func (*Quat) Angle added in v0.3.0

func (q *Quat) Angle() float32

Angle returns the angle represented by this quaternion in radians

func (*Quat) Axis added in v0.3.0

func (q *Quat) Axis() Vec3

Axis returns the rotation axis represented by this quaternion

func (*Quat) Eq added in v0.1.1

func (q *Quat) Eq(q2 *Quat) bool

Eq checks for exact equality

type Swizzle1

type Swizzle1 interface {
	X() float32
	SetX(float32)
	AddX(float32)

	R() float32
	SetR(float32)
	AddR(float32)
}

type Swizzle2

type Swizzle2 interface {
	Swizzle1

	Y() float32
	SetY(float32)
	AddY(float32)

	SetXY(float32, float32)
	AddXY(float32, float32)

	G() float32
	SetG(float32)
	AddG(float32)

	SetRG(float32, float32)
	AddRG(float32, float32)
}

type Swizzle3

type Swizzle3 interface {
	Swizzle2

	Z() float32
	SetZ(float32)
	AddZ(float32)

	SetXYZ(float32, float32, float32)
	AddXYZ(float32, float32, float32)

	B() float32
	SetB(float32)
	AddB(float32)

	SetRGB(float32, float32, float32)
	AddRGB(float32, float32, float32)
}

type Swizzle4 added in v0.0.3

type Swizzle4 interface {
	Swizzle3

	W() float32
	SetW(float32)
	AddW(float32)

	SetXYZW(float32, float32, float32, float32)
	AddXYZW(float32, float32, float32, float32)

	A() float32
	SetA(float32)
	AddA(float32)

	SetRGBA(float32, float32, float32, float32)
	AddRGBA(float32, float32, float32, float32)
}

type TrMat added in v0.1.0

type TrMat struct {
	Mat4
}

TrMat represents a transformation matrix

func LookAtLH added in v0.42.0

func LookAtLH(pos, targetPos, worldUp *Vec3) TrMat

LookAtLH does a left-handed coordinate system lookAt. Can be used to create the view matrix

func LookAtRH added in v0.42.0

func LookAtRH(pos, targetPos, worldUp *Vec3) TrMat

LookAtRH does a right-handed coordinate system lookAt (RH is the default for OpenGL). Can be used to create the view matrix

func NewRotMatQuat added in v0.48.0

func NewRotMatQuat(q *Quat) TrMat

func NewScaleMat added in v0.1.0

func NewScaleMat(scaleX, scaleY, scaleZ float32) TrMat

func NewScaleMatVec added in v0.48.0

func NewScaleMatVec(v *Vec3) TrMat

func NewTrMatId added in v0.1.1

func NewTrMatId() TrMat

func NewTrMatWithPos added in v0.49.0

func NewTrMatWithPos(x, y, z float32) TrMat

func NewTrMatWithPosVec added in v0.49.0

func NewTrMatWithPosVec(pos *Vec3) TrMat

func NewTranslationMat added in v0.1.0

func NewTranslationMat(posX, posY, posZ float32) TrMat

func NewTranslationMatVec added in v0.48.0

func NewTranslationMatVec(v *Vec3) TrMat

func Ortho added in v0.2.2

func Ortho(left, right, top, bottom, nearClip, farClip float32) TrMat

Perspective creates an orthographic projection matrix

func (*TrMat) Clone added in v0.1.0

func (t *TrMat) Clone() *TrMat

func (*TrMat) Eq added in v0.1.1

func (t *TrMat) Eq(m *TrMat) bool

func (*TrMat) Mul added in v0.1.0

func (t *TrMat) Mul(m *TrMat) *TrMat

func (*TrMat) Rotate added in v0.3.0

func (t *TrMat) Rotate(rads float32, axisX, axisY, axisZ float32) *TrMat

Rotate takes a *normalized* axis and angles in radians to rotate around the given axis

func (*TrMat) RotateVec added in v0.48.0

func (t *TrMat) RotateVec(rads float32, axis *Vec3) *TrMat

RotateVec takes a *normalized* axis and angles in radians to rotate around the given axis

func (*TrMat) Scale added in v0.1.0

func (t *TrMat) Scale(x, y, z float32) *TrMat

Scale multiplies the scale components of the transformation matrix by v

func (*TrMat) ScaleVec added in v0.48.0

func (t *TrMat) ScaleVec(v *Vec3) *TrMat

ScaleVec multiplies the scale components of the transformation matrix by v

func (*TrMat) Translate added in v0.1.0

func (t *TrMat) Translate(x, y, z float32) *TrMat

Translate adds v to the translation components of the transformation matrix

func (*TrMat) TranslateVec added in v0.48.0

func (t *TrMat) TranslateVec(v *Vec3) *TrMat

TranslateVec adds v to the translation components of the transformation matrix

type Vec2

type Vec2 struct {
	Data [2]float32
}

func AddVec2

func AddVec2(v1, v2 *Vec2) Vec2

AddVec2 v3 = v1 + v2

func MulMat2Vec2 added in v0.0.6

func MulMat2Vec2(m1 *Mat2, v1 *Vec2) Vec2

MulMat2Vec2 v2 = m1 * v1

func NewVec2 added in v0.1.0

func NewVec2(x, y float32) Vec2

func NewVec2Arr added in v0.45.0

func NewVec2Arr(arr [2]float32) Vec2

func ReflectVec2 added in v0.0.8

func ReflectVec2(v, n *Vec2) Vec2

ReflectVec2 returns the reflected vector of the incoming vector 'v', and the surface normal 'n'.

Note: n must be normalized or you will get wrong results

func SubVec2

func SubVec2(v1, v2 *Vec2) Vec2

SubVec2 v3 = v1 - v2

func (*Vec2) Add

func (v *Vec2) Add(v2 *Vec2) *Vec2

Add v += v2

func (*Vec2) AddG added in v0.40.10

func (v *Vec2) AddG(g float32)

func (*Vec2) AddR added in v0.40.10

func (v *Vec2) AddR(r float32)

func (*Vec2) AddRG added in v0.40.10

func (v *Vec2) AddRG(r, g float32)

func (*Vec2) AddX added in v0.40.10

func (v *Vec2) AddX(x float32)

func (*Vec2) AddXY added in v0.40.10

func (v *Vec2) AddXY(x, y float32)

func (*Vec2) AddY added in v0.40.10

func (v *Vec2) AddY(y float32)

func (*Vec2) Clone added in v0.1.0

func (v *Vec2) Clone() *Vec2

func (*Vec2) Eq added in v0.0.3

func (v *Vec2) Eq(v2 *Vec2) bool

func (*Vec2) G

func (v *Vec2) G() float32

func (*Vec2) Mag

func (v *Vec2) Mag() float32

Mag returns the magnitude of the vector

func (*Vec2) Normalize added in v0.0.6

func (v *Vec2) Normalize()

func (*Vec2) R

func (v *Vec2) R() float32

func (*Vec2) Scale

func (v *Vec2) Scale(x float32) *Vec2

Scale v *= x (element wise multiplication)

func (*Vec2) ScaleArr added in v0.45.0

func (v *Vec2) ScaleArr(arr [2]float32) *Vec2

ScaleArr v *= arr (element wise multiplication)

func (*Vec2) ScaleVec added in v0.45.0

func (v *Vec2) ScaleVec(v2 *Vec2) *Vec2

ScaleVec v *= v2 (element wise multiplication)

func (*Vec2) Set added in v0.0.4

func (v *Vec2) Set(x, y float32)

func (*Vec2) SetG added in v0.0.4

func (v *Vec2) SetG(g float32)

func (*Vec2) SetR added in v0.0.4

func (v *Vec2) SetR(r float32)

func (*Vec2) SetRG added in v0.41.10

func (v *Vec2) SetRG(r, g float32)

func (*Vec2) SetX added in v0.0.4

func (v *Vec2) SetX(x float32)

func (*Vec2) SetXY added in v0.41.10

func (v *Vec2) SetXY(x, y float32)

func (*Vec2) SetY added in v0.0.4

func (v *Vec2) SetY(y float32)

func (*Vec2) SqrMag

func (v *Vec2) SqrMag() float32

Mag returns the squared magnitude of the vector

func (*Vec2) String

func (v *Vec2) String() string

func (*Vec2) Sub

func (v *Vec2) Sub(v2 *Vec2) *Vec2

SubVec2 v -= v2

func (*Vec2) X

func (v *Vec2) X() float32

func (*Vec2) Y

func (v *Vec2) Y() float32

type Vec3

type Vec3 struct {
	Data [3]float32
}

func AddVec3

func AddVec3(v1, v2 *Vec3) Vec3

AddVec3 v3 = v1 + v2

func Cross

func Cross(v1, v2 *Vec3) Vec3

func MulMat3Vec3 added in v0.0.6

func MulMat3Vec3(m1 *Mat3, v1 *Vec3) Vec3

MulMat3Vec3 v2 = m1 * v1

func NewVec3 added in v0.1.0

func NewVec3(x, y, z float32) Vec3

func NewVec3Arr added in v0.45.0

func NewVec3Arr(arr [3]float32) Vec3

func ReflectVec3 added in v0.0.8

func ReflectVec3(v, n *Vec3) Vec3

ReflectVec3 returns the reflected vector of the incoming vector 'v', and the surface normal 'n'.

Note: n must be normalized or you will get wrong results

func SubVec3

func SubVec3(v1, v2 *Vec3) Vec3

SubVec3 v3 = v1 - v2

func (*Vec3) Add

func (v *Vec3) Add(v2 *Vec3) *Vec3

func (*Vec3) AddB added in v0.40.10

func (v *Vec3) AddB(b float32)

func (*Vec3) AddG added in v0.40.10

func (v *Vec3) AddG(g float32)

func (*Vec3) AddR added in v0.40.10

func (v *Vec3) AddR(r float32)

func (*Vec3) AddRG added in v0.40.10

func (v *Vec3) AddRG(r, g float32)

func (*Vec3) AddRGB added in v0.40.10

func (v *Vec3) AddRGB(r, g, b float32)

func (*Vec3) AddX added in v0.40.10

func (v *Vec3) AddX(x float32)

func (*Vec3) AddXY added in v0.40.10

func (v *Vec3) AddXY(x, y float32)

func (*Vec3) AddXYZ added in v0.40.10

func (v *Vec3) AddXYZ(x, y, z float32)

func (*Vec3) AddY added in v0.40.10

func (v *Vec3) AddY(y float32)

func (*Vec3) AddZ added in v0.40.10

func (v *Vec3) AddZ(z float32)

func (*Vec3) AsRad added in v0.1.0

func (v *Vec3) AsRad() *Vec3

AsRad returns a new vector with all values converted to Radians (i.e. multiplied by gglm.Deg2Rad)

func (*Vec3) B

func (v *Vec3) B() float32

func (*Vec3) Clone added in v0.1.0

func (v *Vec3) Clone() *Vec3

func (*Vec3) Eq added in v0.0.3

func (v *Vec3) Eq(v2 *Vec3) bool

func (*Vec3) G

func (v *Vec3) G() float32

func (*Vec3) Mag

func (v *Vec3) Mag() float32

Mag returns the magnitude of the vector

func (*Vec3) Normalize added in v0.0.6

func (v *Vec3) Normalize() *Vec3

Normalize normalizes this vector and returns it (doesn't copy)

func (*Vec3) R

func (v *Vec3) R() float32

func (*Vec3) RotByQuat added in v0.43.0

func (v *Vec3) RotByQuat(q *Quat) *Vec3

RotByQuat rotates this vector by the given quaternion

func (*Vec3) Scale

func (v *Vec3) Scale(x float32) *Vec3

Scale v *= x (element wise multiplication)

func (*Vec3) ScaleArr added in v0.45.0

func (v *Vec3) ScaleArr(arr [3]float32) *Vec3

ScaleArr v *= arr (element wise multiplication)

func (*Vec3) ScaleVec added in v0.45.0

func (v *Vec3) ScaleVec(v2 *Vec3) *Vec3

ScaleVec v *= v2 (element wise multiplication)

func (*Vec3) Set added in v0.0.4

func (v *Vec3) Set(x, y, z float32)

func (*Vec3) SetB added in v0.0.4

func (v *Vec3) SetB(f float32)

func (*Vec3) SetG added in v0.0.4

func (v *Vec3) SetG(f float32)

func (*Vec3) SetR added in v0.0.4

func (v *Vec3) SetR(f float32)

func (*Vec3) SetRG added in v0.41.10

func (v *Vec3) SetRG(r, g float32)

func (*Vec3) SetRGB added in v0.41.10

func (v *Vec3) SetRGB(r, g, b float32)

func (*Vec3) SetX added in v0.0.4

func (v *Vec3) SetX(f float32)

func (*Vec3) SetXY added in v0.41.10

func (v *Vec3) SetXY(x, y float32)

func (*Vec3) SetXYZ added in v0.41.10

func (v *Vec3) SetXYZ(x, y, z float32)

func (*Vec3) SetY added in v0.0.4

func (v *Vec3) SetY(f float32)

func (*Vec3) SetZ added in v0.0.4

func (v *Vec3) SetZ(f float32)

func (*Vec3) SqrMag

func (v *Vec3) SqrMag() float32

Mag returns the squared magnitude of the vector

func (*Vec3) String

func (v *Vec3) String() string

func (*Vec3) Sub

func (v *Vec3) Sub(v2 *Vec3) *Vec3

SubVec3 v -= v2

func (*Vec3) X

func (v *Vec3) X() float32

func (*Vec3) Y

func (v *Vec3) Y() float32

func (*Vec3) Z

func (v *Vec3) Z() float32

type Vec4 added in v0.0.3

type Vec4 struct {
	Data [4]float32
}

func AddVec4 added in v0.0.3

func AddVec4(v1, v2 *Vec4) Vec4

AddVec4 v3 = v1 + v2

func MulMat4Vec4 added in v0.0.6

func MulMat4Vec4(m1 *Mat4, v1 *Vec4) Vec4

MulMat4Vec4 v2 = m1 * v1

func NewVec4 added in v0.1.0

func NewVec4(x, y, z, w float32) Vec4

func NewVec4Arr added in v0.45.0

func NewVec4Arr(arr [4]float32) Vec4

func SubVec4 added in v0.0.3

func SubVec4(v1, v2 *Vec4) Vec4

SubVec4 v3 = v1 - v2

func (*Vec4) A added in v0.0.3

func (v *Vec4) A() float32

func (*Vec4) Add added in v0.0.3

func (v *Vec4) Add(v2 *Vec4) *Vec4

func (*Vec4) AddA added in v0.40.10

func (v *Vec4) AddA(a float32)

func (*Vec4) AddB added in v0.40.10

func (v *Vec4) AddB(b float32)

func (*Vec4) AddG added in v0.40.10

func (v *Vec4) AddG(g float32)

func (*Vec4) AddR added in v0.40.10

func (v *Vec4) AddR(r float32)

func (*Vec4) AddRG added in v0.40.10

func (v *Vec4) AddRG(r, g float32)

func (*Vec4) AddRGB added in v0.40.10

func (v *Vec4) AddRGB(r, g, b float32)

func (*Vec4) AddRGBA added in v0.40.10

func (v *Vec4) AddRGBA(r, g, b, a float32)

func (*Vec4) AddW added in v0.40.10

func (v *Vec4) AddW(w float32)

func (*Vec4) AddX added in v0.40.10

func (v *Vec4) AddX(x float32)

func (*Vec4) AddXY added in v0.40.10

func (v *Vec4) AddXY(x, y float32)

func (*Vec4) AddXYZ added in v0.40.10

func (v *Vec4) AddXYZ(x, y, z float32)

func (*Vec4) AddXYZW added in v0.40.10

func (v *Vec4) AddXYZW(x, y, z, w float32)

func (*Vec4) AddY added in v0.40.10

func (v *Vec4) AddY(y float32)

func (*Vec4) AddZ added in v0.40.10

func (v *Vec4) AddZ(z float32)

func (*Vec4) B added in v0.0.3

func (v *Vec4) B() float32

func (*Vec4) Clone added in v0.1.0

func (v *Vec4) Clone() *Vec4

func (*Vec4) Eq added in v0.0.3

func (v *Vec4) Eq(v2 *Vec4) bool

func (*Vec4) G added in v0.0.3

func (v *Vec4) G() float32

func (*Vec4) Mag added in v0.0.3

func (v *Vec4) Mag() float32

Mag returns the magnitude of the vector

func (*Vec4) Normalize added in v0.0.6

func (v *Vec4) Normalize()

func (*Vec4) R added in v0.0.3

func (v *Vec4) R() float32

func (*Vec4) Scale added in v0.0.3

func (v *Vec4) Scale(x float32) *Vec4

Scale v *= x (element wise multiplication)

func (*Vec4) ScaleArr added in v0.45.0

func (v *Vec4) ScaleArr(arr [4]float32) *Vec4

ScaleArr v *= arr (element wise multiplication)

func (*Vec4) ScaleVec added in v0.45.0

func (v *Vec4) ScaleVec(v2 *Vec4) *Vec4

ScaleVec v *= v2 (element wise multiplication)

func (*Vec4) Set added in v0.0.4

func (v *Vec4) Set(x, y, z, w float32)

func (*Vec4) SetA added in v0.0.4

func (v *Vec4) SetA(f float32)

func (*Vec4) SetB added in v0.0.4

func (v *Vec4) SetB(f float32)

func (*Vec4) SetG added in v0.0.4

func (v *Vec4) SetG(f float32)

func (*Vec4) SetR added in v0.0.4

func (v *Vec4) SetR(f float32)

func (*Vec4) SetRG added in v0.41.10

func (v *Vec4) SetRG(r, g float32)

func (*Vec4) SetRGB added in v0.41.10

func (v *Vec4) SetRGB(r, g, b float32)

func (*Vec4) SetRGBA added in v0.41.10

func (v *Vec4) SetRGBA(r, g, b, a float32)

func (*Vec4) SetW added in v0.0.4

func (v *Vec4) SetW(f float32)

func (*Vec4) SetX added in v0.0.4

func (v *Vec4) SetX(f float32)

func (*Vec4) SetXY added in v0.41.10

func (v *Vec4) SetXY(x, y float32)

func (*Vec4) SetXYZ added in v0.41.10

func (v *Vec4) SetXYZ(x, y, z float32)

func (*Vec4) SetXYZW added in v0.41.10

func (v *Vec4) SetXYZW(x, y, z, w float32)

func (*Vec4) SetY added in v0.0.4

func (v *Vec4) SetY(f float32)

func (*Vec4) SetZ added in v0.0.4

func (v *Vec4) SetZ(f float32)

func (*Vec4) SqrMag added in v0.0.3

func (v *Vec4) SqrMag() float32

Mag returns the squared magnitude of the vector

func (*Vec4) String added in v0.0.3

func (v *Vec4) String() string

func (*Vec4) Sub added in v0.0.3

func (v *Vec4) Sub(v2 *Vec4) *Vec4

SubVec4 v -= v2

func (*Vec4) W added in v0.0.3

func (v *Vec4) W() float32

func (*Vec4) X added in v0.0.3

func (v *Vec4) X() float32

func (*Vec4) Y added in v0.0.3

func (v *Vec4) Y() float32

func (*Vec4) Z added in v0.0.3

func (v *Vec4) Z() float32

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL