mercator-proj
Version:
[](https://travis-ci.com/sakitam-gis/mercator-proj) [ • 4.01 kB
TypeScript
import WebMercatorViewport, { COORDINATE_SYSTEM } from './viewport/viewport';
export declare type vec4 = [number, number, number, number] | Float32Array | number[];
export declare type mat4 = number[] | [
number,
number,
number,
number,
number,
number,
number,
number,
number,
number,
number,
number,
number,
number,
number,
number
] | Float32Array;
export interface IOptions {
viewport: WebMercatorViewport;
devicePixelRatio: number;
modelMatrix: number[] | null;
coordinateSystem: COORDINATE_SYSTEM;
coordinateOrigin?: number[];
autoWrapLongitude?: boolean;
}
export declare function isEqual(a: any, b: any): boolean;
/**
* Speed up consecutive function calls by caching the result of calls with identical input
* https://en.wikipedia.org/wiki/Memoization
* @param {function} compute - the function to be memoized
*/
export declare function memoize(compute: (args: any) => any): (args: any) => {
[key: string]: any;
};
/**
* Multiplies two mat4s
* @param {mat4} out the receiving matrix
* @param {ReadonlyMat4} a the first operand
* @param {ReadonlyMat4} b the second operand
* @returns {mat4} out
*/
export declare function multiply(out: mat4, a: mat4 | number[], b: mat4 | number[]): mat4;
/**
* Transforms the vec4 with a mat4.
* @param {vec4} out the receiving vector
* @param {ReadonlyVec4} a the vector to transform
* @param {ReadonlyMat4} m matrix to transform with
* @returns {vec4} out
*/
export declare function transformMat4(out: vec4, a: vec4, m: mat4 | number[]): vec4;
/**
* Inverts a mat4
* @param out
* @param a
*/
export declare function invert(out: vec4, a: vec4): Float32Array | number[] | null;
export declare function getOffsetOrigin(viewport: WebMercatorViewport, coordinateSystem: COORDINATE_SYSTEM, coordinateOrigin?: number[]): {
geospatialOrigin: number[] | null;
shaderCoordinateOrigin: number[];
offsetMode: boolean;
};
/**
* Returns uniforms for shaders based on current projection
* includes: projection matrix suitable for shaders
* @param viewport
* @param devicePixelRatio
* @param modelMatrix
* @param coordinateSystem
* @param coordinateOrigin
* @param autoWrapLongitude
* @return {Float32Array} - 4x4 projection matrix that can be used in shaders
*/
export declare function getUniformsFromViewport({ viewport, devicePixelRatio, modelMatrix, coordinateSystem, coordinateOrigin, autoWrapLongitude, }: IOptions): {
[key: string]: any;
};
export declare type MercatorUniformKeys = [
'project_uCoordinateSystem',
'project_uProjectionMode',
'project_uCoordinateOrigin',
'project_uCenter',
'project_uAntimeridian',
'project_uViewportSize',
'project_uDevicePixelRatio',
'project_uFocalDistance',
'project_uCommonUnitsPerMeter',
'project_uCommonUnitsPerWorldUnit',
'project_uCommonUnitsPerWorldUnit2',
'project_uScale',
'project_uViewProjectionMatrix',
'project_metersPerPixel',
'project_uModelMatrix',
'project_uWrapLongitude',
'project_uCameraPosition'
];
export declare function getUniformKeys(): MercatorUniformKeys;
export declare function getUniforms(opts: IOptions): {
[key: string]: any;
};
export declare function highPrecisionLngLat(lngLat: number[], offset?: number, stride?: number): Float32Array;
export declare function injectMercatorGLSL(gl: WebGLRenderingContext | WebGL2RenderingContext, source: string, defines?: {
PROJECT_OFFSET_THRESHOLD: string;
}): string;
export declare const fp32: {
name: string;
vs: string;
fs: null;
};
export declare const project: {
name: string;
vs: string;
fs: null;
inject: {};
dependencies: {
name: string;
vs: string;
fs: null;
}[];
deprecations: never[];
getUniforms: typeof getUniforms;
};
export { WebMercatorViewport };