s2maps-gpu
Version:
S2 Maps GPU - An open source, high-performance, and GPU-accelerated map engine for rendering large-scale, interactive maps.
122 lines (121 loc) • 3.8 kB
TypeScript
import type { Point3D, VectorPoint } from 'gis-tools/index.js';
/** @returns a 4x4 identity matrix */
export declare function create(): Float32Array;
/**
* Clone a matrix
* @param m - input matrix to clone
* @returns cloned matrix
*/
export declare function clone(m: Float32Array): Float32Array;
/**
* Prepare an Blend matrix
* @param m - input matrix
* @param width - viewport width
* @param height - viewport height
* @param near - near plane
* @param far - far plane
* @returns the blended matrix
*/
export declare function blend(m: Float32Array, width: number, height: number, near: number, far: number): Float32Array;
/**
* Prepare an Orthographic projection matrix
* @param m - input matrix
* @param width - viewport width
* @param height - viewport height
* @param far - far plane
* @returns the orthographic matrix
*/
export declare function ortho(m: Float32Array, width: number, height: number, far: number): Float32Array;
/**
* Prepare a perspective projection matrix
* @param m - input matrix
* @param fovy - field of view
* @param aspect - viewport aspect
* @param near - near plane
* @param far - far plane
* @returns the perspective matrix
*/
export declare function perspective(m: Float32Array, fovy: number, aspect: number, near: number, far: number): Float32Array;
/**
* Prepare a lookAt matrix
* @param eye - camera position
* @param up - camera up vector
* @returns the lookAt matrix
*/
export declare function lookAt(eye: VectorPoint, up: VectorPoint): Float32Array;
/**
* Add a center to the matrix
* @param m - input matrix
* @param v - center vector
* @returns the matrix
*/
export declare function addCenter(m: Float32Array, v: Float32Array): Float32Array;
/**
* Translate the matrix given a vector
* @param m - input matrix
* @param v - vector
* @returns the matrix
*/
export declare function translate(m: Float32Array, v: Float32Array | Point3D): Float32Array;
/**
* Scale the matrix via a vector
* @param m - input matrix
* @param v - vector
* @returns the matrix
*/
export declare function scale(m: Float32Array, v: Float32Array | Point3D): Float32Array;
/**
* Rotate the matrix
* @param m - input matrix
* @param rad - rotation in radians
* @returns the matrix
*/
export declare function rotate(m: Float32Array, rad: Point3D): Float32Array;
/**
* Rotate the matrix around the X axis
* @param m - input matrix
* @param rad - rotation in radians
* @returns the matrix
*/
export declare function rotateX(m: Float32Array, rad: number): Float32Array;
/**
* Rotate the matrix around the Y axis
* @param m - input matrix
* @param rad - rotation in radians
* @returns the matrix
*/
export declare function rotateY(m: Float32Array, rad: number): Float32Array;
/**
* Rotate the matrix around the Z axis
* @param m - input matrix
* @param rad - rotation in radians
* @returns the matrix
*/
export declare function rotateZ(m: Float32Array, rad: number): Float32Array;
/**
* Multiply a matrix by a vector
* @param m - input matrix
* @param v - vector
* @returns the vector
*/
export declare function multiplyVector(m: Float32Array, v: VectorPoint): [x: number, y: number, z: number, t: number];
/**
* Multiply two matrices
* @param a - input matrix
* @param b - input matrix
* @returns the matrix
*/
export declare function multiply(a: Float32Array, b: Float32Array | number[]): Float32Array;
/**
* Invert a matrix
* @param matrix - input matrix
* @returns the inverted matrix
*/
export declare function invert(matrix: Float32Array): null | Float32Array;
/**
* Project a 3D vector given an input matrix
* @param matrix - input matrix
* @param vector - vector to project
* @returns the projected vector
*/
export declare function project(matrix: Float32Array, vector: VectorPoint): VectorPoint;