tsmathlib
Version:
Typescript Version Math/Physics/CG Library
53 lines (44 loc) • 1.38 kB
text/typescript
/*
* @Author: Xu.Wang
* @Date: 2020-04-05 21:12:38
* @Last Modified by: Xu.Wang
* @Last Modified time: 2020-04-06 01:09:19
*/
import { Matrix } from './matrix'
import { Vector3 } from '.'
export class Matrix4x4 extends Matrix {
constructor(params?: Array<number>) {
if (params === undefined) {
// set to identity matrix
params = new Array<number>(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1)
} else {
// check size
if (16 !== params.length) {
console.log('Matrix4x4 init error: size is not equal to 16')
return
}
}
super(4, 4, params)
}
setDiagonal(s: number) {
let _elements = this.data()
_elements[0] = _elements[5] = _elements[10] = _elements[15] = s
}
setOffDiagonal(s: number) {
let _elements = this.data()
_elements[1] = _elements[2] = _elements[3] = _elements[4] = _elements[6] = _elements[7] = _elements[8] = _elements[9] = _elements[11] = _elements[12] = _elements[13] = _elements[14] = s
}
identity(): Matrix4x4 {
return new Matrix4x4(
new Array<number>(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1)
)
}
mulMat(m4: Matrix4x4): Matrix4x4 {
let _m = super.mulMat(m4)
return new Matrix4x4(_m.data())
}
mulV3(v3: Vector3): Vector3 {
let _v3 = super.mulVec(v3)
return new Vector3(_v3.data()[0], _v3.data()[1], _v3.data()[2])
}
}