Options
All
  • Public
  • Public/Protected
  • All
Menu

Class Matrix3

Brief

Matrix3 represents 3x3 dense matrices as a set of numerical components. It implement Matrix interface and therefore Vector interface.

Main features

  • 1D-Array like component accessors m[2]
  • Handy component accessors xx, yz, ...
  • Interface with Vector3 x, y, z, ...
  • Algebra of matrices and vectors, add, prodv, pow, ...
  • Rotation matrices, rot, rotX, ...
  • Many generators diag, sym, scalar, ...

Not all the operations have been detailed here to learn more about provided operations see Matrix.

Getting Started

A matrix is 1D-array of number stored in a column-major form, each components of the column are ordered from up to down.

Components accessors

In order to access the components of the matrix use the syntax m.ij where :

  • i can be x, y or z and denotes the row index of the matrix in a descending order
  • j can be x, y or z and denotes the column index of the matrix in a left-to-right order

Note m.ij is equal to m[3 * j + i] if we consider x == 0, y == 1 and z == 2.

You can represent the matrix with theses conventions as :

Matrix3 shape

Example

m.xx = 2; // m[0] = 2
m.yz = 5; // m[7] = 5

Interface with Vector3

Matrix3 provides an interface with Vector3 by implementing Object3 interface. It allows to construct vectors from rows and columns of the matrix. Reciprocally you can affect rows and columns of the matrix with a Vector3.

Example

m.x = new Vector3(2, 0, 2);
u = m.y;
m.xyz = [u, v, w];

For more details see Object3.

Rotation matrix

Generate rotation matrix using static methods.

Example

// rotation matrix around x axis with angle +pi/4
m = Matrix3.rotX(Math.PI / 4);

// rotation matrix around u axis with angle +pi/4
n = Matrix3.rot(u, Math.PI / 4);

// elliptic rotation matrix around z axis with angle +pi/4
q = Matrix3.rotZ(Math.PI / 4, (x) => 5 * Math.cos(x), Math.sin);

If you want to get deep into rotation features see Object3.

You can also directly assign an existent matrix to a rotation matrix.

Example

m.rotX(Math.PI / 3);

2019 samiBendou © All Rights Reserved

Hierarchy

  • Float64Array
    • Matrix3

Implements

Indexable

[index: number]: number

Brief

Matrix3 represents 3x3 dense matrices as a set of numerical components. It implement Matrix interface and therefore Vector interface.

Main features

  • 1D-Array like component accessors m[2]
  • Handy component accessors xx, yz, ...
  • Interface with Vector3 x, y, z, ...
  • Algebra of matrices and vectors, add, prodv, pow, ...
  • Rotation matrices, rot, rotX, ...
  • Many generators diag, sym, scalar, ...

Not all the operations have been detailed here to learn more about provided operations see Matrix.

Getting Started

A matrix is 1D-array of number stored in a column-major form, each components of the column are ordered from up to down.

Components accessors

In order to access the components of the matrix use the syntax m.ij where :

  • i can be x, y or z and denotes the row index of the matrix in a descending order
  • j can be x, y or z and denotes the column index of the matrix in a left-to-right order

Note m.ij is equal to m[3 * j + i] if we consider x == 0, y == 1 and z == 2.

You can represent the matrix with theses conventions as :

Matrix3 shape

Example

m.xx = 2; // m[0] = 2
m.yz = 5; // m[7] = 5

Interface with Vector3

Matrix3 provides an interface with Vector3 by implementing Object3 interface. It allows to construct vectors from rows and columns of the matrix. Reciprocally you can affect rows and columns of the matrix with a Vector3.

Example

m.x = new Vector3(2, 0, 2);
u = m.y;
m.xyz = [u, v, w];

For more details see Object3.

Rotation matrix

Generate rotation matrix using static methods.

Example

// rotation matrix around x axis with angle +pi/4
m = Matrix3.rotX(Math.PI / 4);

// rotation matrix around u axis with angle +pi/4
n = Matrix3.rot(u, Math.PI / 4);

// elliptic rotation matrix around z axis with angle +pi/4
q = Matrix3.rotZ(Math.PI / 4, (x) => 5 * Math.cos(x), Math.sin);

If you want to get deep into rotation features see Object3.

You can also directly assign an existent matrix to a rotation matrix.

Example

m.rotX(Math.PI / 3);

2019 samiBendou © All Rights Reserved

Index

Constructors

constructor

  • new Matrix3(xx?: number, xy?: number, xz?: number, yx?: number, yy?: number, yz?: number, zx?: number, zy?: number, zz?: number): Matrix3
  • brief

    constructs a matrix by explicitly giving components ordered by rows from left to right

    details

    If you don't specify components then the underlying array is initialized with the default values for Float64Array.

    Parameters

    • Optional xx: number
    • Optional xy: number
    • Optional xz: number
    • Optional yx: number
    • Optional yy: number
    • Optional yz: number
    • Optional zx: number
    • Optional zy: number
    • Optional zz: number

    Returns Matrix3

Properties

BYTES_PER_ELEMENT

BYTES_PER_ELEMENT: number

The size in bytes of each element in the array.

__@toStringTag

__@toStringTag: "Float64Array"

buffer

buffer: ArrayBufferLike

The ArrayBuffer instance referenced by the array.

byteLength

byteLength: number

The length in bytes of the array.

byteOffset

byteOffset: number

The offset in bytes of the array.

dim

dim: Readonly<number> = 9

length

length: number

The length of the array.

Static Float64Array

Float64Array: Float64ArrayConstructor

Accessors

cols

  • get cols(): number[][]
  • set cols(cols: number[][]): void

det

  • get det(): number

mag

  • get mag(): number

mag2

  • get mag2(): number

rows

  • get rows(): number[][]
  • set rows(rows: number[][]): void

trace

  • get trace(): number

x

xx

  • get xx(): number
  • set xx(newXx: number): void
  • value at row 0, column 0

    Returns number

  • value at row 0, column 0

    Parameters

    • newXx: number

    Returns void

xy

  • get xy(): number
  • set xy(newXy: number): void
  • value at row 0, column 1

    Returns number

  • value at row 0, column 1

    Parameters

    • newXy: number

    Returns void

xyz

xyzt

xz

  • get xz(): number
  • set xz(newXz: number): void
  • value at row 0, column 2

    Returns number

  • value at row 0, column 2

    Parameters

    • newXz: number

    Returns void

y

yx

  • get yx(): number
  • set yx(newYx: number): void
  • value at row 1, column 0

    Returns number

  • value at row 1, column 0

    Parameters

    • newYx: number

    Returns void

yy

  • get yy(): number
  • set yy(newYy: number): void
  • value at row 1, column 1

    Returns number

  • value at row 1, column 1

    Parameters

    • newYy: number

    Returns void

yz

  • get yz(): number
  • set yz(newYz: number): void
  • value at row 1, column 2

    Returns number

  • value at row 1, column 2

    Parameters

    • newYz: number

    Returns void

z

zx

  • get zx(): number
  • set zx(newZx: number): void
  • value at row 2, column 0

    Returns number

  • value at row 2, column 0

    Parameters

    • newZx: number

    Returns void

zy

  • get zy(): number
  • set zy(newZy: number): void
  • value at row 2, column 1

    Returns number

  • value at row 2, column 1

    Parameters

    • newZy: number

    Returns void

zz

  • get zz(): number
  • set zz(newZz: number): void
  • value at row 2, column 2

    Returns number

  • value at row 2, column 2

    Parameters

    • newZz: number

    Returns void

Static dim

  • get dim(): number

Static eye

Static ones

Static zeros

Methods

__@iterator

  • __@iterator(): IterableIterator<number>
  • Returns IterableIterator<number>

abs

  • abs(): this

absc

add

addc

adj

  • adj(): this

adjc

array

  • array(): number[]

assign

  • assign(xx: number, xy: number, xz: number, yx: number, yy: number, yz: number, zx: number, zy: number, zz: number): this
  • explicitly sets all the component of the matrix ordered as rows

    Parameters

    • xx: number
    • xy: number
    • xz: number
    • yx: number
    • yy: number
    • yz: number
    • zx: number
    • zy: number
    • zz: number

    Returns this

berp

berpc

ceil

  • ceil(): this

ceilc

clone

col

  • col(j: number): number[]

comb

  • comb(s: number, m: Vector): this

combc

copy

copyWithin

  • copyWithin(target: number, start: number, end?: number): this
  • Returns the this object after copying a section of the array identified by start and end to the same array starting at position target

    Parameters

    • target: number

      If target is negative, it is treated as length+target where length is the length of the array.

    • start: number

      If start is negative, it is treated as length+start. If end is negative, it is treated as length+end.

    • Optional end: number

      If not specified, length of the this object is used as its default value.

    Returns this

der

  • der(ds: number, m: Vector): this

derc

dist

dist1

dist2

div

  • div(s: number): this

divc

dot

entries

  • entries(): IterableIterator<[number, number]>
  • Returns an array of key, value pairs for every entry in the array

    Returns IterableIterator<[number, number]>

equal1

equal2

every

  • every(callbackfn: function, thisArg?: any): boolean
  • Determines whether all the members of an array satisfy the specified test.

    Parameters

    • callbackfn: function

      A function that accepts up to three arguments. The every method calls the callbackfn function for each element in array1 until the callbackfn returns false, or until the end of the array.

        • (value: number, index: number, array: Float64Array): boolean
        • Parameters

          • value: number
          • index: number
          • array: Float64Array

          Returns boolean

    • Optional thisArg: any

      An object to which the this keyword can refer in the callbackfn function. If thisArg is omitted, undefined is used as the this value.

    Returns boolean

exact

fill

  • fill(s: number): this

fillc

filter

  • filter(callbackfn: function, thisArg?: any): Float64Array
  • Returns the elements of an array that meet the condition specified in a callback function.

    Parameters

    • callbackfn: function

      A function that accepts up to three arguments. The filter method calls the callbackfn function one time for each element in the array.

        • (value: number, index: number, array: Float64Array): any
        • Parameters

          • value: number
          • index: number
          • array: Float64Array

          Returns any

    • Optional thisArg: any

      An object to which the this keyword can refer in the callbackfn function. If thisArg is omitted, undefined is used as the this value.

    Returns Float64Array

find

  • find(predicate: function, thisArg?: any): number | undefined
  • Returns the value of the first element in the array where predicate is true, and undefined otherwise.

    Parameters

    • predicate: function

      find calls predicate once for each element of the array, in ascending order, until it finds one where predicate returns true. If such an element is found, find immediately returns that element value. Otherwise, find returns undefined.

        • (value: number, index: number, obj: Float64Array): boolean
        • Parameters

          • value: number
          • index: number
          • obj: Float64Array

          Returns boolean

    • Optional thisArg: any

      If provided, it will be used as the this value for each invocation of predicate. If it is not provided, undefined is used instead.

    Returns number | undefined

findIndex

  • findIndex(predicate: function, thisArg?: any): number
  • Returns the index of the first element in the array where predicate is true, and -1 otherwise.

    Parameters

    • predicate: function

      find calls predicate once for each element of the array, in ascending order, until it finds one where predicate returns true. If such an element is found, findIndex immediately returns that element index. Otherwise, findIndex returns -1.

        • (value: number, index: number, obj: Float64Array): boolean
        • Parameters

          • value: number
          • index: number
          • obj: Float64Array

          Returns boolean

    • Optional thisArg: any

      If provided, it will be used as the this value for each invocation of predicate. If it is not provided, undefined is used instead.

    Returns number

floor

  • floor(): this

floorc

forEach

  • forEach(callbackfn: function, thisArg?: any): void
  • Performs the specified action for each element in an array.

    Parameters

    • callbackfn: function

      A function that accepts up to three arguments. forEach calls the callbackfn function one time for each element in the array.

        • (value: number, index: number, array: Float64Array): void
        • Parameters

          • value: number
          • index: number
          • array: Float64Array

          Returns void

    • Optional thisArg: any

      An object to which the this keyword can refer in the callbackfn function. If thisArg is omitted, undefined is used as the this value.

    Returns void

frob

  • frob(): number

herp

herpc

includes

  • includes(searchElement: number, fromIndex?: number): boolean
  • Determines whether an array includes a certain element, returning true or false as appropriate.

    Parameters

    • searchElement: number

      The element to search for.

    • Optional fromIndex: number

      The position in this array at which to begin searching for searchElement.

    Returns boolean

indexOf

  • indexOf(searchElement: number, fromIndex?: number): number
  • Returns the index of the first occurrence of a value in an array.

    Parameters

    • searchElement: number

      The value to locate in the array.

    • Optional fromIndex: number

      The array index at which to begin the search. If fromIndex is omitted, the search starts at index 0.

    Returns number

inv

  • inv(): this

invc

join

  • join(separator?: string): string
  • Adds all the elements of an array separated by the specified separator string.

    Parameters

    • Optional separator: string

      A string used to separate one element of an array from the next in the resulting String. If omitted, the array elements are separated with a comma.

    Returns string

keys

  • keys(): IterableIterator<number>
  • Returns an list of keys in the array

    Returns IterableIterator<number>

lastIndexOf

  • lastIndexOf(searchElement: number, fromIndex?: number): number
  • Returns the index of the last occurrence of a value in an array.

    Parameters

    • searchElement: number

      The value to locate in the array.

    • Optional fromIndex: number

      The array index at which to begin the search. If fromIndex is omitted, the search starts at index 0.

    Returns number

lerp

  • lerp(m: Vector, t: number): this

lerpc

map

  • map(callbackfn: function, thisArg?: any): Float64Array
  • Calls a defined callback function on each element of an array, and returns an array that contains the results.

    Parameters

    • callbackfn: function

      A function that accepts up to three arguments. The map method calls the callbackfn function one time for each element in the array.

        • (value: number, index: number, array: Float64Array): number
        • Parameters

          • value: number
          • index: number
          • array: Float64Array

          Returns number

    • Optional thisArg: any

      An object to which the this keyword can refer in the callbackfn function. If thisArg is omitted, undefined is used as the this value.

    Returns Float64Array

max

maxc

min

minc

mul

  • mul(s: number): this

mulc

neg

  • neg(): this

negc

nil

  • nil(): boolean

norm

  • norm(): this

normc

pow

  • pow(exp: number): this

powc

prod

prodc

prodv

prodvc

random

  • random(): this

reduce

  • reduce(callbackfn: function): number
  • reduce(callbackfn: function, initialValue: number): number
  • reduce<U>(callbackfn: function, initialValue: U): U
  • Calls the specified callback function for all the elements in an array. The return value of the callback function is the accumulated result, and is provided as an argument in the next call to the callback function.

    Parameters

    • callbackfn: function

      A function that accepts up to four arguments. The reduce method calls the callbackfn function one time for each element in the array.

        • (previousValue: number, currentValue: number, currentIndex: number, array: Float64Array): number
        • Parameters

          • previousValue: number
          • currentValue: number
          • currentIndex: number
          • array: Float64Array

          Returns number

    Returns number

  • Parameters

    • callbackfn: function
        • (previousValue: number, currentValue: number, currentIndex: number, array: Float64Array): number
        • Parameters

          • previousValue: number
          • currentValue: number
          • currentIndex: number
          • array: Float64Array

          Returns number

    • initialValue: number

    Returns number

  • Calls the specified callback function for all the elements in an array. The return value of the callback function is the accumulated result, and is provided as an argument in the next call to the callback function.

    Type parameters

    • U

    Parameters

    • callbackfn: function

      A function that accepts up to four arguments. The reduce method calls the callbackfn function one time for each element in the array.

        • (previousValue: U, currentValue: number, currentIndex: number, array: Float64Array): U
        • Parameters

          • previousValue: U
          • currentValue: number
          • currentIndex: number
          • array: Float64Array

          Returns U

    • initialValue: U

      If initialValue is specified, it is used as the initial value to start the accumulation. The first call to the callbackfn function provides this value as an argument instead of an array value.

    Returns U

reduceRight

  • reduceRight(callbackfn: function): number
  • reduceRight(callbackfn: function, initialValue: number): number
  • reduceRight<U>(callbackfn: function, initialValue: U): U
  • Calls the specified callback function for all the elements in an array, in descending order. The return value of the callback function is the accumulated result, and is provided as an argument in the next call to the callback function.

    Parameters

    • callbackfn: function

      A function that accepts up to four arguments. The reduceRight method calls the callbackfn function one time for each element in the array.

        • (previousValue: number, currentValue: number, currentIndex: number, array: Float64Array): number
        • Parameters

          • previousValue: number
          • currentValue: number
          • currentIndex: number
          • array: Float64Array

          Returns number

    Returns number

  • Parameters

    • callbackfn: function
        • (previousValue: number, currentValue: number, currentIndex: number, array: Float64Array): number
        • Parameters

          • previousValue: number
          • currentValue: number
          • currentIndex: number
          • array: Float64Array

          Returns number

    • initialValue: number

    Returns number

  • Calls the specified callback function for all the elements in an array, in descending order. The return value of the callback function is the accumulated result, and is provided as an argument in the next call to the callback function.

    Type parameters

    • U

    Parameters

    • callbackfn: function

      A function that accepts up to four arguments. The reduceRight method calls the callbackfn function one time for each element in the array.

        • (previousValue: U, currentValue: number, currentIndex: number, array: Float64Array): U
        • Parameters

          • previousValue: U
          • currentValue: number
          • currentIndex: number
          • array: Float64Array

          Returns U

    • initialValue: U

      If initialValue is specified, it is used as the initial value to start the accumulation. The first call to the callbackfn function provides this value as an argument instead of an array value.

    Returns U

reset0

  • reset0(): this

reset1

  • reset1(): this

reverse

  • reverse(): Float64Array
  • Reverses the elements in an Array.

    Returns Float64Array

rot

  • rot(u: Vector, theta: number, cos?: cos, sin?: sin): this
  • See Object3 for more details

    Parameters

    • u: Vector
    • theta: number
    • Default value cos: cos = Math.cos
    • Default value sin: sin = Math.sin

    Returns this

rotX

  • rotX(theta: number, cos?: cos, sin?: sin): this
  • See Object3 for more details

    Parameters

    • theta: number
    • Default value cos: cos = Math.cos
    • Default value sin: sin = Math.sin

    Returns this

rotY

  • rotY(theta: number, cos?: cos, sin?: sin): this
  • See Object3 for more details

    Parameters

    • theta: number
    • Default value cos: cos = Math.cos
    • Default value sin: sin = Math.sin

    Returns this

rotZ

  • rotZ(theta: number, cos?: cos, sin?: sin): this
  • See Object3 for more details

    Parameters

    • theta: number
    • Default value cos: cos = Math.cos
    • Default value sin: sin = Math.sin

    Returns this

round

  • round(): this

roundc

row

  • row(i: number): number[]

set

  • set(array: ArrayLike<number>, offset?: number): void
  • Sets a value or an array of values.

    Parameters

    • array: ArrayLike<number>

      A typed or untyped array of values to set.

    • Optional offset: number

      The index in the current array at which the values are to be written.

    Returns void

slice

  • slice(start?: number, end?: number): Float64Array
  • Returns a section of an array.

    Parameters

    • Optional start: number

      The beginning of the specified portion of the array.

    • Optional end: number

      The end of the specified portion of the array.

    Returns Float64Array

some

  • some(callbackfn: function, thisArg?: any): boolean
  • Determines whether the specified callback function returns true for any element of an array.

    Parameters

    • callbackfn: function

      A function that accepts up to three arguments. The some method calls the callbackfn function for each element in array1 until the callbackfn returns true, or until the end of the array.

        • (value: number, index: number, array: Float64Array): boolean
        • Parameters

          • value: number
          • index: number
          • array: Float64Array

          Returns boolean

    • Optional thisArg: any

      An object to which the this keyword can refer in the callbackfn function. If thisArg is omitted, undefined is used as the this value.

    Returns boolean

sort

  • sort(compareFn?: function): this
  • Sorts an array.

    Parameters

    • Optional compareFn: function

      The name of the function used to determine the order of the elements. If omitted, the elements are sorted in ascending, ASCII character order.

        • (a: number, b: number): number
        • Parameters

          • a: number
          • b: number

          Returns number

    Returns this

string

  • string(): string

sub

subarray

  • subarray(begin: number, end?: number): Float64Array
  • Gets a new Float64Array view of the ArrayBuffer store for this array, referencing the elements at begin, inclusive, up to end, exclusive.

    Parameters

    • begin: number

      The index of the beginning of the array.

    • Optional end: number

      The index of the end of the array.

    Returns Float64Array

subc

toLocaleString

  • toLocaleString(): string
  • Converts a number to a string by using the current locale.

    Returns string

toString

  • toString(): string
  • Returns a string representation of an array.

    Returns string

trans

  • trans(): this

transc

trunc

  • trunc(decimals: number): this

truncc

  • truncc(decimals: number): Matrix3

values

  • values(): IterableIterator<number>
  • Returns an list of values in the array

    Returns IterableIterator<number>

zero1

  • zero1(): boolean

zero2

  • zero2(): boolean

Static affine

  • brief

    affine transformation of the vector m * v + u

    details

    The result of the operation is stored on v.

    Parameters

    • m: Vector

      matrix of the transformation

    • u: Vector3

      translation of the transformation

    • v: Vector3

      vector parameter of the transformation

    Returns Vector3

    reference to v

Static array

  • matrix from given 1D array containing the components of the matrix ordered as rows

    Parameters

    • arr: number[]

    Returns Matrix3

Static asym

  • asym(xx: number, yy: number, zz: number, xy: number, yz: number, xz?: number): Matrix3
  • brief

    antisymmetric matrix with non zero diagonal

    details

    Fill the matrix by giving values on diagonal and sub diagonals.

    Parameters

    • xx: number
    • yy: number
    • zz: number
    • xy: number
    • yz: number
    • Default value xz: number = 0

    Returns Matrix3

Static cols

  • matrix from 2D array of number ordered such that arr[j] is the j-th column of the matrix

    Parameters

    • arr: number[][]

    Returns Matrix3

Static diag

  • diag(xx: number, yy: number, zz: number): Matrix3
  • brief

    diagonal matrix

    details

    Diagonal matrix filled with values.

    Parameters

    • xx: number
    • yy: number
    • zz: number

    Returns Matrix3

Static e

  • brief

    standard basis matrix

    details

    Matrix with 0 everywhere except in i, j position where there is a 1.

    Parameters

    • i: number
    • j: number

    Returns Matrix3

Static rot

  • rotation matrix of axis u. See Object3 for mor details.

    Parameters

    • u: Vector3
    • theta: number
    • Default value cos: cos = Math.cos
    • Default value sin: sin = Math.sin

    Returns Matrix3

Static rotX

  • rotX(theta: number, cos?: cos, sin?: sin): Matrix3
  • rotation matrix of axis x. See Object3 for mor details.

    Parameters

    • theta: number
    • Default value cos: cos = Math.cos
    • Default value sin: sin = Math.sin

    Returns Matrix3

Static rotY

  • rotY(theta: number, cos?: cos, sin?: sin): Matrix3
  • rotation matrix of axis y. See Object3 for mor details.

    Parameters

    • theta: number
    • Default value cos: cos = Math.cos
    • Default value sin: sin = Math.sin

    Returns Matrix3

Static rotZ

  • rotZ(theta: number, cos?: cos, sin?: sin): Matrix3
  • rotation matrix of axis z. See Object3 for mor details.

    Parameters

    • theta: number
    • Default value cos: cos = Math.cos
    • Default value sin: sin = Math.sin

    Returns Matrix3

Static rows

  • matrix from 2D array of number ordered such that arr[i] is the i-th row of the matrix

    Parameters

    • arr: number[][]

    Returns Matrix3

Static scalar

  • brief

    scalar matrix

    details

    Diagonal matrix filled with a single value.

    Parameters

    • s: number

      scalar value

    Returns Matrix3

Static sym

  • sym(xx: number, yy: number, zz: number, xy: number, yz: number, xz?: number): Matrix3
  • brief

    symmetric matrix

    details

    Fill the matrix by giving values on diagonal and sub diagonals.

    Parameters

    • xx: number
    • yy: number
    • zz: number
    • xy: number
    • yz: number
    • Default value xz: number = 0

    Returns Matrix3

Static tensor

  • brief

    tensor product of two vectors u * vt

    details

    matrix such that m.ij = u.i * u.j

    Parameters

    Returns Matrix3

Static xyz

Generated using TypeDoc