File: /home/creaqbdc/public_html/wp-content/uploads/ac_assets/morph_slider/vendor/ogl/src/math/Mat4.js
import * as Mat4Func from './functions/Mat4Func.js';
export class Mat4 extends Array {
constructor(
m00 = 1,
m01 = 0,
m02 = 0,
m03 = 0,
m10 = 0,
m11 = 1,
m12 = 0,
m13 = 0,
m20 = 0,
m21 = 0,
m22 = 1,
m23 = 0,
m30 = 0,
m31 = 0,
m32 = 0,
m33 = 1
) {
super(m00, m01, m02, m03, m10, m11, m12, m13, m20, m21, m22, m23, m30, m31, m32, m33);
return this;
}
get x() {
return this[12];
}
get y() {
return this[13];
}
get z() {
return this[14];
}
get w() {
return this[15];
}
set x(v) {
this[12] = v;
}
set y(v) {
this[13] = v;
}
set z(v) {
this[14] = v;
}
set w(v) {
this[15] = v;
}
set(m00, m01, m02, m03, m10, m11, m12, m13, m20, m21, m22, m23, m30, m31, m32, m33) {
if (m00.length) return this.copy(m00);
Mat4Func.set(this, m00, m01, m02, m03, m10, m11, m12, m13, m20, m21, m22, m23, m30, m31, m32, m33);
return this;
}
translate(v, m = this) {
Mat4Func.translate(this, m, v);
return this;
}
rotate(v, axis, m = this) {
Mat4Func.rotate(this, m, v, axis);
return this;
}
scale(v, m = this) {
Mat4Func.scale(this, m, typeof v === 'number' ? [v, v, v] : v);
return this;
}
multiply(ma, mb) {
if (mb) {
Mat4Func.multiply(this, ma, mb);
} else {
Mat4Func.multiply(this, this, ma);
}
return this;
}
identity() {
Mat4Func.identity(this);
return this;
}
copy(m) {
Mat4Func.copy(this, m);
return this;
}
fromPerspective({ fov, aspect, near, far } = {}) {
Mat4Func.perspective(this, fov, aspect, near, far);
return this;
}
fromOrthogonal({ left, right, bottom, top, near, far }) {
Mat4Func.ortho(this, left, right, bottom, top, near, far);
return this;
}
fromQuaternion(q) {
Mat4Func.fromQuat(this, q);
return this;
}
setPosition(v) {
this.x = v[0];
this.y = v[1];
this.z = v[2];
return this;
}
inverse(m = this) {
Mat4Func.invert(this, m);
return this;
}
compose(q, pos, scale) {
Mat4Func.fromRotationTranslationScale(this, q, pos, scale);
return this;
}
getRotation(q) {
Mat4Func.getRotation(q, this);
return this;
}
getTranslation(pos) {
Mat4Func.getTranslation(pos, this);
return this;
}
getScaling(scale) {
Mat4Func.getScaling(scale, this);
return this;
}
getMaxScaleOnAxis() {
return Mat4Func.getMaxScaleOnAxis(this);
}
lookAt(eye, target, up) {
Mat4Func.targetTo(this, eye, target, up);
return this;
}
determinant() {
return Mat4Func.determinant(this);
}
fromArray(a, o = 0) {
this[0] = a[o];
this[1] = a[o + 1];
this[2] = a[o + 2];
this[3] = a[o + 3];
this[4] = a[o + 4];
this[5] = a[o + 5];
this[6] = a[o + 6];
this[7] = a[o + 7];
this[8] = a[o + 8];
this[9] = a[o + 9];
this[10] = a[o + 10];
this[11] = a[o + 11];
this[12] = a[o + 12];
this[13] = a[o + 13];
this[14] = a[o + 14];
this[15] = a[o + 15];
return this;
}
toArray(a = [], o = 0) {
a[o] = this[0];
a[o + 1] = this[1];
a[o + 2] = this[2];
a[o + 3] = this[3];
a[o + 4] = this[4];
a[o + 5] = this[5];
a[o + 6] = this[6];
a[o + 7] = this[7];
a[o + 8] = this[8];
a[o + 9] = this[9];
a[o + 10] = this[10];
a[o + 11] = this[11];
a[o + 12] = this[12];
a[o + 13] = this[13];
a[o + 14] = this[14];
a[o + 15] = this[15];
return a;
}
}