@orca-fe/pocket
Version:
UI components by orca-team
46 lines (45 loc) • 1.52 kB
TypeScript
import { mat4 } from 'gl-matrix';
export type Viewport3dType = {
left: number;
top: number;
zoom: number;
rotate: number;
pitch: number;
};
export declare function matrix2Viewport3d(matrix: mat4): Viewport3dType;
export default class Viewport3d {
left: number;
top: number;
zoom: number;
rotate: number;
pitch: number;
constructor(props?: Partial<Viewport3d>);
setViewport(viewport: Partial<Viewport3dType>): this;
getViewport(): Viewport3dType;
toMatrix(): mat4;
fromMatrix(matrix: mat4): this;
toInverseMatrix(): mat4;
/**
* world -> screen
*/
project(point: [number, number]): [number, number];
/**
* screen -> world
*/
unproject(point: [number, number]): [number, number];
/**
* 将世界坐标点对齐至屏幕坐标点(平移)并返回新的 Viewport
* @param originWorldPoint 原始世界坐标点
* @param screenPoint 屏幕坐标点
*/
getViewportByScreenPoint(originWorldPoint: [number, number], screenPoint: [number, number]): Viewport3dType;
/**
* 根据屏幕点和缩放级别计算 Viewport
* @param screenPoint
* @param zoom
*/
getViewportByZoom(screenPoint: [number, number], zoom: number): Viewport3dType;
getViewportByRotate(screenPoint: [number, number], deg: number): Viewport3dType;
pan(originWorldPoint: [number, number], screenPoint: [number, number]): this;
zoomBy(screenPoint: [number, number], zoom: number): this;
}