xl-pano
Version:
一个基于 Typescript 的,同时支持立方体和球体场景的轻量开源库。
170 lines (169 loc) • 6.84 kB
TypeScript
/**
* 处理 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;
}