/**
 * 处理 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;
}
