vislite
Version:
灵活、快速、简单的数据可视化交互式跨端前端库
80 lines (72 loc) • 2.97 kB
TypeScript
/**
* 4x4矩阵类型定义
* 用于实现3D变换矩阵的各种操作,包括平移、旋转、缩放等
*/
export default interface Matrix4Type {
/**
* 获取当前矩阵的内部数值表示
* @returns 返回4x4矩阵的16个元素,按列优先顺序排列
*/
value(): number[]
/**
* 矩阵乘法运算
* @param newMatrix4 要相乘的矩阵
* @param flag 可选参数,表示相乘位置。默认为false,表示左乘(newMatrix4 * this);为true时表示右乘(this * newMatrix4)
* @returns 返回当前实例,支持链式调用
*/
multiply(newMatrix4: number[], flag?: boolean): this
/**
* 将变换矩阵应用于指定坐标点
* @param x x坐标
* @param y y坐标
* @param z z坐标,可选,默认为0
* @param w w坐标,可选,默认为1
* @returns 变换后的四维坐标 [x', y', z', w']
*/
use(x: number, y: number, z?: number, w?: number): [number, number, number, number]
/**
* 设置矩阵的初始值
* @param initMatrix4 可选的初始矩阵值,如果不提供则使用单位矩阵
* @returns 返回当前实例,支持链式调用
*/
setValue(initMatrix4?: number[]): this
/**
* 沿指定向量方向平移
* @param dis 平移距离
* @param a 向量x分量
* @param b 向量y分量
* @param c 向量z分量,可选,默认为0
* @returns 返回当前实例,支持链式调用
*/
move(dis: number, a: number, b: number, c?: number): this
/**
* 以指定点为中心进行缩放
* @param xTimes x方向缩放倍数
* @param yTimes y方向缩放倍数
* @param zTimes z方向缩放倍数
* @param cx 中心点x坐标,可选,默认为0
* @param cy 中心点y坐标,可选,默认为0
* @param cz 中心点z坐标,可选,默认为0
* @returns 返回当前实例,支持链式调用
*/
scale(xTimes: number, yTimes: number, zTimes: number, cx?: number, cy?: number, cz?: number): this
/**
* 围绕指定射线旋转
* @param deg 旋转角度(度)
* @param a1 射线起点x坐标
* @param b1 射线起点y坐标
* @param c1 射线起点z坐标,可选
* @param a2 射线终点x坐标,可选
* @param b2 射线终点y坐标,可选
* @param c2 射线终点z坐标,可选
*
* 参数说明:
* 1)只设置a1和b1:表示在xoy平面围绕点(a1, b1)旋转
* 2)设置三个点(不足六个点):表示围绕从原点出发的射线旋转
* 3)设置六个点:表示围绕指定射线旋转
*
* 旋转方向由右手法则确定
* @returns 返回当前实例,支持链式调用
*/
rotate(deg: number, a1: number, b1: number, c1?: number, a2?: number, b2?: number, c2?: number): this
}