UNPKG

xl-pano

Version:

一个基于 Typescript 的,同时支持立方体和球体场景的轻量开源库。

170 lines (169 loc) 6.84 kB
/** * 处理 4 * 4 矩阵的工具类 * */ export default class Matrix4 { /** * @static 类型数组的长度,4 * 4 矩阵长度为 16 * */ static size: number; /** * @property {Float32Array} elements 最终传给着色器程序的类型数组 * */ elements: Float32Array; /** * @constructor 构造方法,默认实例化一个单位矩阵 * @param {Matrix4} [matrix4] 类似于复制一个 * */ constructor(matrix4?: Matrix4); /** * 重置为单位矩阵 * @return {Matrix4} 返回实例本身 * */ setIdentity(): this; /** * 拷贝矩阵 * @param {Matrix4} matrix4 被拷贝的矩阵 * @return {Matrix4} 返回实例本身 * */ set(matrix4: Matrix4): this; /** * 右乘矩阵 * @param {Matrix4} matrix4 用来乘的矩阵 * @return {Matrix4} 实例本身 * */ multiply(matrix4: Matrix4): this; /** * 将自己设置成自己的转置矩阵 * @return {Matrix4} 返回实例本身 * */ transpose(): this; /** * 将实例设置成某一个矩阵的逆矩阵 * @param {Matrix4} matrix4 需要被计算逆矩阵的矩阵 * @return {Matrix4} 返回实例本身 * */ setInverseOf(matrix4: Matrix4): this; /** * 将实例设置成自己的逆矩阵 * @return {Matrix4} 返回实例本身 * */ invert(): this; /** * 把自己设置成一个正射投影矩阵 * @param {number} left 左投影区域 * @param {number} right 右投影区域 * @param {number} bottom 下投影区域 * @param {number} top 上投影区域 * @param {number} near 近投影区域 * @param {number} far 远投影区域 * @return {Matrix4} 返回实例本身 * */ setOrtho(left: number, right: number, bottom: number, top: number, near: number, far: number): this; /** * 乘以某个正射投影矩阵,并把结果赋值给自己 * @param {number} left 左投影区域 * @param {number} right 右投影区域 * @param {number} bottom 下投影区域 * @param {number} top 上投影区域 * @param {number} near 近投影区域 * @param {number} far 远投影区域 * @return {Matrix4} 返回实例本身 * */ ortho(left: number, right: number, bottom: number, top: number, near: number, far: number): this; /** * 把自己设置成一个透视投影矩阵 * @param {number} fovy 上下可视范围-角度制 * @param {number} aspect 可视范围近处宽高比 * @param {number} near 投影区域近处距离 * @param {number} far 投影区域远处距离 * @return {Matrix4} 返回实例本身 * */ setPerspective(fovy: number, aspect: number, near: number, far: number): this; /** * 乘以某个透视投影矩阵,并把结果赋值给自己 * @param {number} fovy 上下可视范围-角度制 * @param {number} aspect 可视范围近处宽高比 * @param {number} near 投影区域近处距离 * @param {number} far 投影区域远处距离 * @return {Matrix4} 返回实例本身 * */ perspective(fovy: number, aspect: number, near: number, far: number): this; /** * 把自己设置成一个模型矩阵-scale * @param {number} x X-轴方向缩放比例 * @param {number} y Y-轴方向缩放比例 * @param {number} z Z-轴方向缩放比例 * @return {Matrix4} 返回实例本身 * */ setScale(x: number, y: number, z: number): this; /** * 乘以某个模型矩阵-scale,并把结果赋值给自己 * @param {number} x X-轴方向缩放比例 * @param {number} y Y-轴方向缩放比例 * @param {number} z Z-轴方向缩放比例 * @return {Matrix4} 返回实例本身 * */ scale(x: number, y: number, z: number): this; /** * 把自己设置成一个模型矩阵-translation * @param {number} x X-轴方向平移距离 * @param {number} y Y-轴方向平移距离 * @param {number} z Z-轴方向平移距离 * @return {Matrix4} 返回实例本身 * */ setTranslate(x: number, y: number, z: number): this; /** * 乘以某个模型矩阵-translation,并把结果赋值给自己 * @param {number} x X-轴方向平移距离 * @param {number} y Y-轴方向平移距离 * @param {number} z Z-轴方向平移距离 * @return {Matrix4} 返回实例本身 * */ translate(x: number, y: number, z: number): this; /** * 把自己设置成一个模型矩阵-rotate * @param {number} angle 旋转角度 * @param {number} x 旋转轴向量的 X 轴坐标 * @param {number} y 旋转轴向量的 Y 轴坐标 * @param {number} z 旋转轴向量的 Z 轴坐标 * @return {Matrix4} 返回实例本身 * */ setRotate(angle: number, x: number, y: number, z: number): this; /** * 乘以某个模型矩阵-rotate,并把结果赋值给自己 * @param {number} angle 旋转角度 * @param {number} x 旋转轴向量的 X 轴坐标 * @param {number} y 旋转轴向量的 Y 轴坐标 * @param {number} z 旋转轴向量的 Z 轴坐标 * @return {Matrix4} 返回实例本身 * */ rotate(angle: number, x: number, y: number, z: number): this; /** * 把自己设置成一个视图矩阵 * @param {number} eyeX 视点的 X 坐标 * @param {number} eyeY 视点的 Y 坐标 * @param {number} eyeZ 视点的 Z 坐标 * @param {number} centerX 视线目标的 X 坐标 * @param {number} centerY 视线目标的 Y 坐标 * @param {number} centerZ 视线目标的 Z 坐标 * @param {number} upX 上方向向量的 X 轴分量 * @param {number} upY 上方向向量的 Y 轴分量 * @param {number} upZ 上方向向量的 Z 轴分量 * @return {Matrix4} 返回实例本身 * */ setLookAt(eyeX: number, eyeY: number, eyeZ: number, centerX: number, centerY: number, centerZ: number, upX: number, upY: number, upZ: number): this; /** * 乘以某个视图矩阵,并把结果赋值给自己 * @param {number} eyeX 视点的 X 坐标 * @param {number} eyeY 视点的 Y 坐标 * @param {number} eyeZ 视点的 Z 坐标 * @param {number} centerX 视线目标的 X 坐标 * @param {number} centerY 视线目标的 Y 坐标 * @param {number} centerZ 视线目标的 Z 坐标 * @param {number} upX 上方向向量的 X 轴分量 * @param {number} upY 上方向向量的 Y 轴分量 * @param {number} upZ 上方向向量的 Z 轴分量 * @return {Matrix4} 返回实例本身 * */ lookAt(eyeX: number, eyeY: number, eyeZ: number, centerX: number, centerY: number, centerZ: number, upX: number, upY: number, upZ: number): this; }