mat3

package
v0.0.0-...-1137f6a Latest Latest
Warning

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

Go to latest
Published: May 2, 2024 License: MIT Imports: 9 Imported by: 8

Documentation

Overview

Package mat3 contains a 3x3 float64 matrix type T and functions.

Index

Constants

This section is empty.

Variables

View Source
var (
	// Zero holds a zero matrix.
	Zero = T{
		vec3.T{0, 0, 0},
		vec3.T{0, 0, 0},
		vec3.T{0, 0, 0},
	}

	// Ident holds an ident matrix.
	Ident = T{
		vec3.T{1, 0, 0},
		vec3.T{0, 1, 0},
		vec3.T{0, 0, 1},
	}
)

Functions

This section is empty.

Types

type T

type T [3]vec3.T

T represents a 3x3 matrix.

func From

func From(other generic.T) T

From copies a T from a generic.T implementation.

func Parse

func Parse(s string) (r T, err error)

Parse parses T from a string. See also String()

func (*T) Adjugate

func (matrix *T) Adjugate() *T

Adjugate computes the adjugate of this matrix and returns mat

func (*T) Adjugated

func (mat *T) Adjugated() T

Adjugated returns an adjugated copy of the matrix.

func (*T) Array

func (mat *T) Array() *[9]float64

Array returns the elements of the matrix as array pointer. The data may be a copy depending on the platform implementation.

func (*T) AssignCoordinateSystem

func (mat *T) AssignCoordinateSystem(x, y, z *vec3.T) *T

AssignCoordinateSystem assigns the rotation of a orthogonal coordinates system to the rotation part of the matrix and sets the remaining elements to their ident value.

func (*T) AssignEulerRotation

func (mat *T) AssignEulerRotation(yHead, xPitch, zRoll float64) *T

AssignEulerRotation assigns Euler angle rotations to the rotation part of the matrix and sets the remaining elements to their ident value.

func (*T) AssignMat2x2

func (mat *T) AssignMat2x2(m *mat2.T) *T

AssignMat2x2 assigns a 2x2 sub-matrix and sets the rest of the matrix to the ident value.

func (*T) AssignMul

func (mat *T) AssignMul(a, b *T) *T

AssignMul multiplies a and b and assigns the result to mat.

func (*T) AssignQuaternion

func (mat *T) AssignQuaternion(q *quaternion.T) *T

AssignQuaternion assigns a quaternion to the rotations part of the matrix and sets the other elements to their ident value.

func (*T) AssignXRotation

func (mat *T) AssignXRotation(angle float64) *T

AssignXRotation assigns a rotation around the x axis to the rotation part of the matrix and sets the remaining elements to their ident value.

func (*T) AssignYRotation

func (mat *T) AssignYRotation(angle float64) *T

AssignYRotation assigns a rotation around the y axis to the rotation part of the matrix and sets the remaining elements to their ident value.

func (*T) AssignZRotation

func (mat *T) AssignZRotation(angle float64) *T

AssignZRotation assigns a rotation around the z axis to the rotation part of the matrix and sets the remaining elements to their ident value.

func (*T) Cols

func (mat *T) Cols() int

Cols returns the number of columns of the matrix.

func (*T) Determinant

func (mat *T) Determinant() float64

Determinant returns the determinant of the matrix.

func (*T) ExtractEulerAngles

func (mat *T) ExtractEulerAngles() (yHead, xPitch, zRoll float64)

ExtractEulerAngles extracts the rotation part of the matrix as Euler angle rotation values.

func (*T) Get

func (mat *T) Get(col, row int) float64

Get returns one element of the matrix. Matrices are defined by (three) column vectors.

Note that this function use the opposite reference order of rows and columns to the mathematical matrix indexing.

A value in this matrix is referenced by <col><row> where both row and column is in the range [0..2]. This notation and range reflects the underlying representation.

A value in a matrix A is mathematically referenced by A<row><col> where both row and column is in the range [1..3]. (It is really the lower case 'a' followed by <row><col> but this documentation syntax is somewhat limited.)

matrixA.Get(1, 2) == matrixA[1][2] ( == A32 in mathematical indexing)

func (*T) Invert

func (mat *T) Invert() (*T, error)

Invert inverts the given matrix. Destructive operation. Does not check if matrix is singular and may lead to strange results!

func (*T) Inverted

func (mat *T) Inverted() (T, error)

Inverted inverts a copy of the given matrix. Does not check if matrix is singular and may lead to strange results!

func (*T) IsReflective

func (mat *T) IsReflective() bool

IsReflective returns true if the matrix can be reflected by a plane.

func (*T) IsZero

func (mat *T) IsZero() bool

IsZero checks if all elements of the matrix are zero.

func (*T) Mul

func (mat *T) Mul(f float64) *T

Mul multiplies every element by f and returns mat.

func (*T) MulVec3

func (mat *T) MulVec3(v *vec3.T) vec3.T

MulVec3 multiplies v with mat and returns a new vector v' = M * v.

func (*T) Muled

func (mat *T) Muled(f float64) T

Muled returns a copy of the matrix with every element multiplied by f.

func (*T) PracticallyEquals

func (mat *T) PracticallyEquals(matrix *T, allowedDelta float64) bool

PracticallyEquals compares two matrices if they are equal with each other within a delta tolerance.

func (*T) Quaternion

func (mat *T) Quaternion() quaternion.T

Quaternion extracts a quaternion from the rotation part of the matrix.

func (*T) Rows

func (mat *T) Rows() int

Rows returns the number of rows of the matrix.

func (*T) Scale

func (mat *T) Scale(f float64) *T

Scale multiplies the diagonal scale elements by f returns mat.

func (*T) ScaleVec2

func (mat *T) ScaleVec2(s *vec2.T) *T

ScaleVec2 multiplies the 2D scaling diagonal of the matrix by s.

func (*T) Scaled

func (mat *T) Scaled(f float64) T

Scaled returns a copy of the matrix with the diagonal scale elements multiplied by f.

func (*T) Scaling

func (mat *T) Scaling() vec3.T

Scaling returns the scaling diagonal of the matrix.

func (*T) SetScaling

func (mat *T) SetScaling(s *vec3.T) *T

SetScaling sets the scaling diagonal of the matrix.

func (*T) SetTranslation

func (mat *T) SetTranslation(v *vec2.T) *T

SetTranslation sets the 2D translation elements of the matrix.

func (*T) Size

func (mat *T) Size() int

Size returns the number elements of the matrix.

func (*T) Slice

func (mat *T) Slice() []float64

Slice returns the elements of the matrix as slice.

func (*T) String

func (mat *T) String() string

String formats T as string. See also Parse().

func (*T) Trace

func (mat *T) Trace() float64

Trace returns the trace value for the matrix.

func (*T) TransformVec3

func (mat *T) TransformVec3(v *vec3.T)

TransformVec3 multiplies v with mat and saves the result in v.

func (*T) Translate

func (mat *T) Translate(v *vec2.T) *T

Translate adds v to the 2D translation part of the matrix.

func (*T) TranslateX

func (mat *T) TranslateX(dx float64) *T

TranslateX adds dx to the 2D X-translation element of the matrix.

func (*T) TranslateY

func (mat *T) TranslateY(dy float64) *T

TranslateY adds dy to the 2D Y-translation element of the matrix.

func (*T) Transpose

func (mat *T) Transpose() *T

Transpose transposes the matrix.

func (*T) Transposed

func (mat *T) Transposed() T

Transposed returns a transposed copy the matrix.

Jump to

Keyboard shortcuts

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