_Matrix3D

3D矩阵类,功能包括矩阵的创建、设置、位移、旋转、缩放等相关操作。 全部展开

属性展开

  • + ignoreParent : bool

    忽略父矩阵。

    • 示例

       mat.ignoreParent = true
  • + ignoreRotation : bool

    忽略本级旋转。

    • 示例

       mat.ignoreRotation = true
  • + ignoreScaling : bool

    忽略本级缩放。

    • 示例

       mat.ignoreScaling = true
  • + ignoreTranslation : bool

    忽略本级位移。

    • 示例

       mat.ignoreTranslation = true
  • + ignoreWorld : bool

    忽略世界矩阵。

    • 示例

       mat.ignoreWorld = true
  • + name : string

    矩阵名。

    • 示例

       mat.name = 'mat1'
  • + parent : _Matrix3D

    父矩阵,默认为nil。

  • + root : _Matrix3D

    根矩阵,默认为nil。

构造方法展开

  • + function _Matrix3D() : _Matrix3D

公共方法展开

  • + function apply(vec : _Vector3[, out : _Vector3]) : _Vector3

    矩阵左乘向量。若有out参数则不构造新_Vector3

    • 返回
    • 左乘的结果。
    • 示例

       v = _Vector3.new(1, 1, 1)
      mat = _Matrix3D.new()
      mat:apply(v)
  • + function apply(x : number, y : number, z : number[, out : _Vector3]) : _Vector3

    矩阵左乘向量。若有out参数则不构造新_Vector3

    • 返回
    • 左乘的结果。
    • 示例

       mat = _Matrix3D.new()
      mat:apply(1, 1, 1)
  • + function child() : _Matrix3D

    创建一个新的矩阵,并把原矩阵设置为父。例如 c = p:child() 相当于 c = _Matrix3D.new() c.parent = p。

    • 示例

       matp = _Matrix3D.new()
      matc = matp:child()
  • + function clone() : _Matrix3D

    复制自己及父的值并构造一个新_Matrix3D返回。

    • 示例

       mat = _Matrix3D.new()
      mat:mulScalingRight(1, 1, 1)
      mat:clone()
  • + function getRotation([out : _Vector4]) : {x, y, z, r} (_Vector4)

    返回当前矩阵的旋转。此旋转是当前矩阵按照缩放,旋转,位移的顺序组合,分解得到的其中旋转分量。若有out参数则不构造新_Vector4。

    • 返回
    • 旋转分量,类型是object,有四个属性x, y, z, r。其中(x, y, z)表示旋转轴,r表示转动的弧度。
    • 示例

       mat = _Matrix3D.new()
      mat:mulRotationRight(0, 0, 10, 0.01)
      object = mat:getRotation()
  • + function getRotationX() : number

    获取矩阵绕x轴旋转的弧度值。

    • 返回
    • r : 旋转的弧度值。
    • 示例

       mat = _Matrix3D.new()
      r = mat:getRotationX()
  • + function getRotationY() : number

    获取矩阵绕y轴旋转的弧度值。

    • 返回
    • r : 旋转的弧度值。
    • 示例

       mat = _Matrix3D.new()
      r = mat:getRotationY()
  • + function getRotationZ() : number

    获取矩阵绕z轴旋转的弧度值。

    • 返回
    • r : 旋转的弧度值。
    • 示例

       mat = _Matrix3D.new()
      r = mat:getRotationZ()
  • + function getScaling([out : _Vector3]) : _Vector3

    返回当前矩阵的缩放。此位移是当前矩阵按照缩放,旋转,位移的顺序组合,分解得到的其中缩放分量。若有out参数则不构造新_Vector3

    • 返回
    • 缩放分量。属性的x, y, z分别表现相对于x轴,y轴,z轴的缩放。
    • 示例

       mat = _Matrix3D.new()
      vec = _Vector3.new()
      mat:mulScalingRight(1, 1, 1)
      vec = mat:getScaling()
  • + function getTranslation([out : _Vector3]) : _Vector3

    返回当前矩阵的位移。此位移是当前矩阵按照缩放,旋转,位移的顺序组合,分解得到的其中位移分量。若有out参数则不构造新_Vector3

    • 返回
    • 位移向量。
    • 示例

       mat = _Matrix3D.new()
      vec = _Vector3.new()
      mat:mulTranslationRight(1, 1, 1)
      vec = mat:getTranslation()
  • + function identity()

    矩阵归一化。

    • 示例

       mat = _Matrix3D.new()
      mat:mulScalingRight(1, 1, 1)
      mat:identity()
  • + function inverse()

    矩阵求逆。

    • 示例

       mat = _Matrix3D.new()
      mat:mulScalingRight(1, 1, 1)
      mat:inverse()
  • + function mulCoordinateLeft(x : _Vector3, y : _Vector3, z : _Vector3, o : _Vector3)

    使用传入的4个向量组成一个指定目标坐标系的旋转矩阵, 用它左乘当前矩阵。

    • 参数
    • x : 目标坐标系的X轴
    • y : 目标坐标系的Y轴
    • z : 目标坐标系的Z轴
    • o : 目标坐标系的原点

    • 示例

  • + function mulCoordinateRight(x : _Vector3, y : _Vector3, z : _Vector3, o : _Vector3)

    使用传入的4个向量组成一个指定目标坐标系的旋转矩阵, 用它右乘当前矩阵。

    • 参数
    • x : 目标坐标系的X轴
    • y : 目标坐标系的Y轴
    • z : 目标坐标系的Z轴
    • o : 目标坐标系的原点

    • 示例

  • + function mulFaceToLeft(x1 : number, y1 : number, z1 : number, x2 : number, y2 : number, z2 : number[, a : uint])
    function mulFaceToLeft(v1 : _Vector3, v2 : _Vector3[, a : uint])

    矩阵左乘旋转。该旋转定义为将向量v1(x1, y1, z1)旋转到向量v2(x2, y2, z2)。

    • 参数
    • a : 可选参数,持续时间,默认值为0。
    • 示例

       mat = _Matrix3D.new()
      v1 = _Vector3.new(0, 0, 0)
      v2 = _Vector3.new(1, 1, 1)
      mat : mulFaceToLeft(0, 0, 0, 1, 1, 1)
      mat : mulFaceToLeft(v1, v2)
  • + function mulFaceToRight(x1 : number, y1 : number, z1 : number, x2 : number, y2 : number, z2 : number[, a : uint])
    function mulFaceToRight(v1 : _Vector3, v2 : _Vector3[, a : uint])

    矩阵右乘旋转。该旋转定义为将向量v1(x1, y1, z1)旋转到向量v2(x2, y2, z2)。

    • 参数
    • a : 可选参数,持续时间,默认值为0。
    • 示例

       mat = _Matrix3D.new()
      v1 = _Vector3.new(0, 0, 0)
      v2 = _Vector3.new(1, 1, 1)
      mat : mulFaceToRight(0, 0, 0, 1, 1, 1)
      mat : mulFaceToRight(v1, v2)
  • + function mulLeft(mat : _Matrix3D)

    矩阵左乘mat矩阵。

    • 示例

       mat1 = _Matrix3D.new()
      mat2 = _Matrix3D.new()
      mat1:mulScalingRight(1, 1, 1)
      mat2 = mat2:mulLeft(mat1)
  • + function mulMirrorX()

    左乘一个镜像矩阵,达到绕X轴翻转的效果。

    • 示例

       mat = _Matrix3D.new()
      mat:mulMirrorX()
  • + function mulMirrorY()

    左乘一个镜像矩阵,达到绕Y轴翻转的效果。

    • 示例

       mat = _Matrix3D.new()
      mat:mulMirrorY()
  • + function mulMirrorZ()

    左乘一个镜像矩阵,达到绕Z轴翻转的效果。

    • 示例

       mat = _Matrix3D.new()
      mat:mulMirrorZ()
  • + function mulRight(mat : _Matrix3D )

    矩阵右乘mat矩阵。

    • 示例

       mat1 = _Matrix3D.new()
      mat2 = _Matrix3D.new()
      mat1:mulScalingRight(1, 1, 1)
      mat2 = mat2:mulRight(mat1)
  • + function mulRotationLeft(x : number, y : number, z : number, r : number[, a : uint])
    function mulRotationLeft(v : _Vector3, r : number[, a : uint])

    矩阵左乘旋转。

    • 参数
    • v(x, y, z) : 旋转所绕的轴。
    • r : 旋转的弧度值。
    • a :可选参数,持续时间,默认值为0。
    • 示例

       mat = _Matrix3D.new()
      v = _Vector3.new(1, 1, 1)
      mat:mulRotationLeft(0, 0, 10, 0.01)
      mat:mulRotationLeft(v, 0.1)
  • + function mulRotationRight(x : number, y : number, z : number, r : number[, a : uint])
    function mulRotationRight(v : _Vector3, r : number[, a : uint])

    矩阵右乘旋转。

    • 参数
    • v(x, y, z) : 旋转所绕的轴。
    • r : 旋转的弧度值。
    • a : 可选参数,持续时间,默认值为0。
    • 示例

       mat = _Matrix3D.new()
      v = _Vector3.new(1, 1, 1)
      mat:mulRotationRight(0, 0, 10, 0.01)
      mat:mulRotationRight(v, 0.1)
  • + function mulRotationXLeft(r : number[, a : uint])

    矩阵左乘绕x轴的旋转。

    • 参数
    • r : 旋转的弧度值。
    • a : 可选参数,持续时间,默认值为0。
    • 示例

       mat = _Matrix3D.new()
      mat:mulRotationXLeft(0.01)
  • + function mulRotationXRight(r : number[, a : uint])

    矩阵右乘绕x轴的旋转。

    • 参数
    • r : 旋转的弧度值。
    • a : 可选参数,持续时间,默认值为0。
    • 示例

       mat = _Matrix3D.new()
      mat:mulRotationXRight(0.01)
  • + function mulRotationYLeft(r : number[, a : uint])

    矩阵左乘绕y轴的旋转。

    • 参数
    • r : 旋转的弧度值。
    • a : 可选参数,持续时间,默认值为0。
    • 示例

       mat = _Matrix3D.new()
      mat:mulRotationYLeft(0.01)
  • + function mulRotationYRight(r : number[, a : uint])

    矩阵右乘绕y轴的旋转。

    • 参数
    • r : 旋转的弧度值。
    • a : 可选参数,持续时间,默认值为0。
    • 示例

       mat = _Matrix3D.new()
      mat:mulRotationYRight(0.01)
  • + function mulRotationZLeft(r : number[, a : uint])

    矩阵左乘绕z轴的旋转。

    • 参数
    • r : 旋转的弧度值。
    • a : 可选参数,持续时间,默认值为0。
    • 示例

       mat = _Matrix3D.new()
      mat:mulRotationZLeft(0.01)
  • + function mulRotationZRight(r : number[, a : uint])

    矩阵右乘绕z轴的旋转。

    • 参数
    • r : 旋转的弧度值。
    • a : 可选参数,持续时间,默认值为0。
    • 示例

       mat = _Matrix3D.new()
      mat:mulRotationZRight(0.01)
  • + function mulScalingLeft( x : number, y : number, z : number[, a : uint] )
    function mulScalingLeft( v : _Vector3[, a : uint] )

    矩阵左乘缩放。

    • 参数
    • v(x, y, z) : 分别为沿x轴,y轴,z轴的缩放值。
    • a : 可选参数,持续时间,默认值为0。
    • 示例

       mat = _Matrix3D.new()
      vec = _Vector3.new(2, 2, 2)
      mat:mulScalingLeft(1, 1, 1)
      mat:mulScalingLeft(vec)
  • + function mulScalingRight(x : number, y : number, z : number[, a : uint])
    function mulScalingRight(v : _Vector3[, a : uint] )

    矩阵右乘缩放。

    • 参数
    • v(x, y, z) : 分别为沿x轴,y轴,z轴的缩放值。
    • a : 可选参数,持续时间,默认值为0。
    • 示例

       mat = _Matrix3D.new()
      vec = _Vector3.new(2, 2, 2)
      mat:mulScalingRight(1, 1, 1)
      mat:mulScalingRight(vec)
  • + function mulTranslationLeft(x : number, y : number, z : number[, a : uint])
    function mulTranslationLeft(v : _Vector3[, a : uint])

    矩阵左乘位移。

    • 参数
    • v(x, y, z) : 位移。
    • a : 可选参数,持续时间,默认值为0。
    • 示例

       mat = _Matrix3D.new()
      v = _Vector3.new(1, 1, 1)
      mat:mulTranslationLeft(0, 0, 10)
      mat:mulTranslationLeft(v)
  • + function mulTranslationRight(x : number, y : number, z : number[, a : uint])
    function mulTranslationRight(v : _Vector3[, a : uint])

    矩阵右乘位移。

    • 参数
    • v(x, y, z) : 位移。
    • a : 可选参数,持续时间,默认值为0。
    • 示例

       mat = _Matrix3D.new()
      v = _Vector3.new(1, 1, 1)
      mat:mulTranslationRight(0, 0, 10)
      mat:mulTranslationRight(v)
  • + function set(mat : _Matrix3D)

    赋值。

    • 示例

       mat1 = _Matrix3D.new()
      mat2 = _Matrix3D.new()
      mat1:mulScalingRight(1, 1, 1)
      mat2:set(mat1)
  • + function setCoordinate(x : _Vector3, y : _Vector3, z : _Vector3, o : _Vector3)

    使用传入的4个向量组成一个指定目标坐标系的旋转矩阵。

    • 参数
    • x : 目标坐标系的X轴
    • y : 目标坐标系的Y轴
    • z : 目标坐标系的Z轴
    • o : 目标坐标系的原点

    • 示例

  • + function setFaceTo(v1 : _Vector3, v2 : _Vector3[, a : uint] )

    设置矩阵的旋转。该旋转定义为将向量v1(x1, y1, z1)旋转到向量v2(x2, y2, z2)。

    • 参数
    • a : 可选参数,持续时间,默认值为0。
    • 示例

       mat = _Matrix3D.new()
      v1 = _Vector3.new(0, 0, 0)
      v2 = _Vector3.new(1, 1, 1)
      mat : setFaceTo(v1, v2)
  • + function setFaceTo(x1 : number, y1 : number, z1 : number, x2 : number, y2 : number, z2 : number)

    设置矩阵的旋转。该旋转定义为将向量v1(x1, y1, z1)旋转到向量v2(x2, y2, z2)。

    • 参数
    • a : 可选参数,持续时间,默认值为0。
    • 示例

       mat = _Matrix3D.new()
      mat:setFaceTo(0, 0, 0, 1, 1, 1)
  • + function setRotation(v : _Vector3, r : number[, a : uint])

    设置矩阵旋转。

    • 参数
    • v(x, y, z) : 旋转所绕的轴。
    • r : 旋转的弧度值。
    • a : 可选参数,持续时间,默认值为0。
    • 示例

       mat = _Matrix3D.new()
      v = _Vector3.new(0, 0, 1)
      mat:setRotation(v, 0.1)
  • + function setRotation(x : number, y : number, z : number, r : number[, a : uint])

    设置矩阵旋转。

    • 参数
    • (x, y, z) :旋转轴。
    • r : 转动的弧度。
    • a : 可选参数,持续时间,默认值为0。
    • 示例

       mat = _Matrix3D.new()
      mat : setRotation(0, 0, 1, 0.01)
  • + function setRotationX(r : number[, a : uint])

    设置矩阵为绕x轴旋转。

    • 参数
    • r : 旋转的弧度值。
    • a : 可选参数,持续时间,默认值为0。
    • 示例

       mat = _Matrix3D.new()
      mat:setRotationX(0.01)
  • + function setRotationY(r : number[, a : uint])

    设置矩阵为绕y轴旋转。

    • 参数
    • r : 旋转的弧度值。
    • a : 可选参数,持续时间,默认值为0。
    • 示例

       mat = _Matrix3D.new()
      mat:setRotationY(0.01)
  • + function setRotationZ(r : number[, a : uint])

    设置矩阵为绕z轴旋转。

    • 参数
    • r : 旋转的弧度值。
    • a : 可选参数,持续时间,默认值为0。
    • 示例

       mat = _Matrix3D.new()
      mat:setRotationZ(0.01)
  • + function setScaling(x : number, y : number, z : number[, a : uint] )
    function setScaling(v : _Vector3[, a : uint])

    设置矩阵的缩放。

    • 参数
    • v(x, y, z) : 分别为沿x轴,y轴,z轴的缩放值。
    • a : 可选参数,持续时间,默认值为0。
    • 示例

       mat = _Matrix3D.new()
      vec = _Vector3.new(2, 2, 2)
      mat:setScaling(1, 1, 1)
      mat:setScaling(vec)
  • + function setTranslation(v : _Vector3[, a : uint])

    设置矩阵的位移。

    • 参数
    • v(x, y, z) : 位移。
    • a : 可选参数,持续时间,默认值为0。
    • 示例

       mat = _Matrix3D.new()
      v = _Vector3.new(1, 1, 1)
      mat:setTranslation(v)
  • + function setTranslation(x : number, y : number, z : number[, a : uint])

    设置矩阵的位移。

    • 参数
    • x : 沿x轴方向的位移。
    • y : 沿y轴方向的位移。
    • z : 沿z轴方向的位移。
    • a : 可选参数,持续时间,默认值为0。
    • 示例

       mat = _Matrix3D.new()
      mat:setTranslation(1, 1, 1)
  • + function transpose()

    矩阵转置。

    • 示例

       mat = _Matrix3D.new()
      mat:mulScalingRight(1, 1, 1)
      mat:transpose()

静态方法展开

  • + function lerp(object1 : _Matrix3D, object2 : _Matrix3D, a : number, out : _Matrix3D) : _Matrix3D

    求两个矩阵的插值。 若有out参数则不构造新_Matrix3D

    • 参数
    • object1 : 第一个矩阵。
    • object2 : 第二个矩阵。
    • a : 插值系数。
    • out : 插值结果矩阵。

    • 返回

    • 插值的结果。
    • 示例

      mat1 = _Matrix3D.new()
      mat1:setRotationZ(2)
      mat1:mulScalingRight(2, 2, 2)
      mat1:mulTranslationRight(5,0,0)

      mat2 = _Matrix3D.new()
      mat2:setRotationZ(3)
      mat2:mulTranslationRight(0,5,0)

      mat0 = _Matrix3D.lerp(mat1, mat2, factor, mat0)
问题反馈(登录才可以发表哦!)