UNPKG

@tolokoban/tgd

Version:

ToloGameDev library for WebGL2

101 lines 2.95 kB
import { TgdMat3 } from "./mat3"; import { TgdQuat } from "./quat"; import { TgdVec3 } from "./vec3"; import { TgdVec4 } from "./vec4"; import { ArrayNumber16, ArrayNumber3, ArrayNumber4 } from ".."; /** * Column-first 4x4 matrix. * * - `m12` means row 2 and column 3 (__A__). * - `m20` means row 3 and column 1 (__B__). * * ``` * +-+-+-+-+ * | | | | | * +-+-+-+-+ * | | |A| | * +-+-+-+-+ * |B| | | | * +-+-+-+-+ * | | | | | * +-+-+-+-+ * ``` * * This is how mathematicians use matrices. * * But, internally, for WebGL compliance, we store the data like this: * * ``` * +--+--+--+--+ * | 0| 4| 8|12| * +--+--+--+--+ * | 1| 5| 9|13| * +--+--+--+--+ * | 2| 6|10|14| * +--+--+--+--+ * | 3| 7|11|15| * +--+--+--+--+ * ``` * * That's why is better to access members through the accessor `m00`, `m01`, etc. */ export declare class TgdMat4 extends Float32Array { constructor(); constructor(mat: TgdMat4); constructor(m00: number, m10: number, m20: number, m30: number, m01: number, m11: number, m21: number, m31: number, m02: number, m12: number, m22: number, m32: number, m03: number, m13: number, m23: number, m33: number); reset(row0?: ArrayNumber4 | TgdVec4, row1?: ArrayNumber4 | TgdVec4, row2?: ArrayNumber4 | TgdVec4, row3?: ArrayNumber4 | TgdVec4): this; multiply(mat: TgdMat4): this; /** * @param from This matrix will become the inversion of `from`. * If not defined, the matrix will invert itself. */ invert(from?: TgdMat4): this; get translation(): TgdVec3; set translation(vec: TgdVec3 | TgdVec4 | ArrayNumber3 | ArrayNumber4); toTanslation(target: TgdVec3 | TgdVec4): this; /** * Add `delta` to the current translation. */ translate(delta: TgdVec3 | TgdVec4 | ArrayNumber3 | ArrayNumber4): this; from(mat: TgdMat4 | ArrayNumber16): this; fromMat3(mat: TgdMat3 | TgdMat4): this; toAxes(axisX: TgdVec3, axisY: TgdVec3, axisZ: TgdVec3): this; toAxisX(axisX: TgdVec3): this; toAxisY(axisY: TgdVec3): this; toAxisZ(axisZ: TgdVec3): this; fromQuat({ x, y, z, w }: Readonly<TgdQuat>): this; get m00(): number; set m00(v: number); get m10(): number; set m10(v: number); get m20(): number; set m20(v: number); get m30(): number; set m30(v: number); get m01(): number; set m01(v: number); get m11(): number; set m11(v: number); get m21(): number; set m21(v: number); get m31(): number; set m31(v: number); get m02(): number; set m02(v: number); get m12(): number; set m12(v: number); get m22(): number; set m22(v: number); get m32(): number; set m32(v: number); get m03(): number; set m03(v: number); get m13(): number; set m13(v: number); get m23(): number; set m23(v: number); get m33(): number; set m33(v: number); debug(caption?: string): void; } //# sourceMappingURL=mat4.d.ts.map