@lucania/vectorics
Version:
A linear algebra library.
47 lines (46 loc) • 2.1 kB
TypeScript
import { Tuple2, Tuple3, Tuple4 } from "./Vector";
export type Tuple2x2 = [...Tuple2, ...Tuple2];
export type Tuple3x3 = [...Tuple3, ...Tuple3, ...Tuple3];
export type Tuple4x4 = [...Tuple4, ...Tuple4, ...Tuple4, ...Tuple4];
export type TupleNxN = Tuple2x2 | Tuple3x3 | Tuple4x4 | number[];
export type MatrixSource<Tuple extends TupleNxN> = number | Tuple | Matrix<Tuple>;
export declare class Matrix<Tuple extends TupleNxN> {
data: Tuple;
readonly size: number;
constructor(...data: Tuple);
add(scalar: number): this;
add(matrix: Matrix<Tuple>): this;
add(tuple: Tuple): this;
subtract(scalar: number): this;
subtract(matrix: Matrix<Tuple>): this;
subtract(tuple: Tuple): this;
multiply(scalar: number): this;
multiply(matrix: Matrix<Tuple>): this;
multiply(tuple: Tuple): this;
divide(scalar: number): this;
divide(matrix: Matrix<Tuple>): this;
divide(tuple: Tuple): this;
transpose(): void;
clone(): Matrix<Tuple>;
private _tuple;
}
export declare class Matrix2 extends Matrix<Tuple2x2> {
}
export declare class Matrix3 extends Matrix<Tuple3x3> {
}
export declare class Matrix4 extends Matrix<Tuple4x4> {
}
export declare namespace MatrixToolbox {
function tuple<Tuple extends TupleNxN>(size: Tuple["length"], source: MatrixSource<Tuple>): Tuple;
function fromSource<Tuple extends Tuple2x2>(size: 4, source: MatrixSource<Tuple>): Matrix2;
function fromSource<Tuple extends Tuple3x3>(size: 9, source: MatrixSource<Tuple>): Matrix3;
function fromSource<Tuple extends Tuple4x4>(size: 16, source: MatrixSource<Tuple>): Matrix4;
namespace Projection {
function orthographic(left: number, right: number, bottom: number, top: number, near: number, far: number): Matrix4;
}
namespace Transformation {
function translate(translationX: number, translationY: number, translationZ: number): Matrix4;
function rotate(angleInDegrees: number, axisX: number, axisY: number, axisZ: number): Matrix4;
function scale(scaleX: number, scaleY: number, scaleZ: number): Matrix4;
}
}