阅读(3032) (9)

鸿蒙OS Matrix44

2022-10-28 10:36:13 更新

Matrix44

java.lang.Object

|---ohos.agp.utils.Matrix44

public class Matrix44
extends Object

表示一个 4x4 矩阵。

这个类包含一个包含 16 个浮点数的数组来描述 4x4 矩阵。

Since:

4

构造函数摘要

构造函数 描述
Matrix44() 用于创建 Matrix44 实例的默认构造函数。
Matrix44(Matrix44 srcMatrix) 用于使用现有矩阵创建 Matrix44 实例的构造函数。
Matrix44(Matrix44 matrixA, Matrix44 matrixB) 用于使用两个指定矩阵创建 Matrix44 实例的构造函数。

方法总结

修饰符和类型 方法 描述
double determinant() 计算此 Matrix44 的行列式。
float get(int row, int col) 获取此 Matrix44 中指定位置的值,并返回一个浮点数。
double getDouble(int row, int col) 获取此 Matrix44 中指定位置的双精度值。
float getFloat(int row, int col) 获取此 Matrix44 中指定位置的浮点值。
boolean hasPerspective() 检查此 Matrix44 是否包含透视元素。
boolean invert(Matrix44 inverse) 反转此 Matrix44。
boolean isIdentity() 检查此 Matrix44 是否为单位矩阵。
boolean isScale() 检查此 Matrix44 是否包含缩放或是否为单位矩阵。
boolean isScaleTranslate() 检查此 Matrix44 是否仅包含平移和缩放,或者它是否为单位矩阵。
boolean isTranslate() 检查此 Matrix44 是否包含平移或是否为单位矩阵。
void postConcat(Matrix44 matrixM) 将此 Matrix44 与指定矩阵进行后乘,并将乘法结果保存在此 Matrix44 中。
void postScale(float scale) 将此 Matrix44 后乘以指定的比例。
void postScale(float sx, float sy, float sz) 将此 Matrix44 后乘以指定的比例。
void postTranslate(float dx, float dy, float dz) 将此 Matrix44 与指定的平移进行后乘。
void preConcat(Matrix44 matrixM) 将此 Matrix44 与指定矩阵预乘,并将乘法结果保存在此 Matrix44 中。
void preScale(float scale) 将此 Matrix44 预乘以指定的比例。
void preScale(float sx, float sy, float sz) 将此 Matrix44 预乘以指定的比例。
void preTranslate(float dx, float dy, float dz) 将此 Matrix44 与指定的翻译预乘。
void reset() 将此 Matrix44 重置为单位矩阵。
void set(int row, int col, float value) 为此 Matrix44 中的指定位置设置浮点类型的值。
void setConcat(Matrix44 matrixA, Matrix44 matrixB) 将此 Matrix44 设置为两个指定矩阵的乘法结果。
void setDouble(int row, int col, double value) 为此 Matrix44 中的指定位置设置双精度值。
void setFloat(int row, int col, float value) 设置此 Matrix44 中指定位置的浮点值。
void setIdentity() 将此 Matrix44 设置为单位矩阵。
void setRotateAbout(float x, float y, float z, float radians) 围绕向量 [x, y, z] 旋转指定的弧度。
void setRotateAboutUnit(float x, float y, float z, float radians) 围绕向量 [x, y, z] 作为单位向量旋转指定的弧度。
void setRotateDegreesAbout(float x, float y, float z, float degrees) 围绕向量 [x, y, z] 旋转指定角度。
void setScale(float scale) 按指定大小缩放此 Matrix44。
void setScale(float sx, float sy, float sz) 按指定大小缩放此 Matrix44。
void setTranslate(float dx, float dy, float dz) 用指定的长度翻译这个 Matrix44。
void transpose() 转置此 Matrix44。
从类 java.lang.Object 继承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

构造函数详细信息

Matrix44

public Matrix44()

用于创建 Matrix44 实例的默认构造函数。

Since:

4

Matrix44

public Matrix44(Matrix44 srcMatrix)

用于使用现有矩阵创建 Matrix44 实例的构造函数。

具体来说,现有矩阵的值被复制到创建的 Matrix44 实例中。

参数:

参数名称 参数描述
srcMatrix 表示现有矩阵。

Since:

4

Matrix44

public Matrix44(Matrix44 matrixA, Matrix44 matrixB)

用于使用两个指定矩阵创建 Matrix44 实例的构造函数。

具体而言,将指定的两个矩阵相乘,并将乘积的值复制到创建的 Matrix44 实例中。

参数:

参数名称 参数描述
matrixA 表示一个指定的乘法矩阵。
matrixB 表示另一个指定的乘法矩阵。

Since:

4

方法详情

isIdentity

public boolean isIdentity()

检查此 Matrix44 是否为单位矩阵。

返回:

如果矩阵是单位矩阵,则返回 true; 否则返回 false。

Since:

4

isTranslate

public boolean isTranslate()

检查此 Matrix44 是否包含平移或是否为单位矩阵。

返回:

如果矩阵包含平移或者它是一个单位矩阵,则返回 true; 否则返回 false。

Since:

4

isScaleTranslate

public boolean isScaleTranslate()

检查此 Matrix44 是否仅包含平移和缩放,或者它是否为单位矩阵。

返回:

如果矩阵包含平移和缩放或者它是单位矩阵,则返回 true; 否则返回 false。

Since:

4

isScale

public boolean isScale()

检查此 Matrix44 是否包含缩放或是否为单位矩阵。

返回:

如果矩阵包含缩放或者它是单位矩阵,则返回 true; 否则返回 false。

Since:

4

hasPerspective

public boolean hasPerspective()

检查此 Matrix44 是否包含透视元素。

返回:

如果矩阵包含透视元素,则返回 true; 否则返回 false。

Since:

4

setIdentity

public void setIdentity()

将此 Matrix44 设置为单位矩阵。

Since:

4

reset

public void reset()

将此 Matrix44 重置为单位矩阵。

Since:

4

get

public float get(int row, int col)

获取此 Matrix44 中指定位置的值,并返回一个浮点数。

参数:

参数名称 参数描述
row 表示指定位置的行。
col 表示指定位置的列。

返回:

返回指定位置的值。

Since:

4

set

public void set(int row, int col, float value)

为此 Matrix44 中的指定位置设置浮点类型的值。

参数:

参数名称 参数描述
row 表示指定位置的行。
col 表示指定位置的列。
value 表示要设置的值。

Since:

4

getDouble

public double getDouble(int row, int col)

获取此 Matrix44 中指定位置的双精度值。

参数:

参数名称 参数描述
row 表示指定位置的行。
col 表示指定位置的列。

返回:

返回指定位置的双精度值。

Since:

4

setDouble

public void setDouble(int row, int col, double value)

为此 Matrix44 中的指定位置设置双精度值。

参数:

参数名称 参数描述
row 表示指定位置的行。
col 表示指定位置的列。
value 指示要设置的双精度值。

Since:

4

getFloat

public float getFloat(int row, int col)

获取此 Matrix44 中指定位置的浮点值。

参数:

参数名称 参数描述
row 表示指定位置的行。
col 表示指定位置的列。

返回:

返回指定位置的浮点值。

Since:

4

setFloat

public void setFloat(int row, int col, float value)

设置此 Matrix44 中指定位置的浮点值。

参数:

参数名称 参数描述
row 表示指定位置的行。
col 表示指定位置的列。
value 指示要设置的浮点值。

Since:

4

setTranslate

public void setTranslate(float dx, float dy, float dz)

用指定的长度翻译这个 Matrix44。

参数:

参数名称 参数描述
dx 指示要在 x 轴上平移的长度。
dy 指示要在 y 轴上平移的长度。
dz 指示要在 z 轴上平移的长度。

Since:

4

preTranslate

public void preTranslate(float dx, float dy, float dz)

将此 Matrix44 与指定的翻译预乘。

参数:

参数名称 参数描述
dx 指示要在 x 轴上平移的长度。
dy 指示要在 y 轴上平移的长度。
dz 指示要在 z 轴上平移的长度。

Since:

4

postTranslate

public void postTranslate(float dx, float dy, float dz)

将此 Matrix44 与指定的平移进行后乘。

参数:

参数名称 参数描述
dx 指示要在 x 轴上平移的长度。
dy 指示要在 y 轴上平移的长度。
dz 指示要在 z 轴上平移的长度。

Since:

4

setScale

public void setScale(float sx, float sy, float sz)

按指定大小缩放此 Matrix44。

参数:

参数名称 参数描述
sx 指示要在 x 轴上缩放的大小。
sy 指示要在 y 轴上缩放的大小。
sz 指示要在 z 轴上缩放的大小。

Since:

4

preScale

public void preScale(float sx, float sy, float sz)

将此 Matrix44 预乘以指定的比例。

参数:

参数名称 参数描述
sx 指示要在 x 轴上缩放的大小。
sy 指示要在 y 轴上缩放的大小。
sz 指示要在 z 轴上缩放的大小。

Since:

4

postScale

public void postScale(float sx, float sy, float sz)

将此 Matrix44 后乘以指定的比例。

参数:

参数名称 参数描述
sx 指示要在 x 轴上缩放的大小。
sy 指示要在 y 轴上缩放的大小。
sz 指示要在 z 轴上缩放的大小。

Since:

4

setScale

public void setScale(float scale)

按指定大小缩放此 Matrix44。

参数:

参数名称 参数描述
scale 指示要缩放的大小。 该值由 x、y 和 z 轴共享。

Since:

4

preScale

public void preScale(float scale)

将此 Matrix44 预乘以指定的比例。

参数:

参数名称 参数描述
scale 指示要缩放的大小。 该值由 x、y 和 z 轴共享。

Since:

4

postScale

public void postScale(float scale)

将此 Matrix44 后乘以指定的比例。

参数:

参数名称 参数描述
scale 指示要缩放的大小。 该值由 x、y 和 z 轴共享。

Since:

4

setRotateDegreesAbout

public void setRotateDegreesAbout(float x, float y, float z, float degrees)

围绕向量 [x, y, z] 旋转指定角度。

参数:

参数名称 参数描述
x 指示要旋转的向量的第一个元素。
y 指示要旋转的向量的第二个元素。
z 指示要旋转的向量的第三个元素。
degrees 指示要旋转的度数。

Since:

4

setRotateAbout

public void setRotateAbout(float x, float y, float z, float radians)

围绕向量 [x, y, z] 旋转指定的弧度。 如果向量 [x, y, z] 不是单位向量,则会自动调整大小。

参数:

参数名称 参数描述
x 指示要旋转的向量的第一个元素。
y 指示要旋转的向量的第二个元素。
z 指示要旋转的向量的第三个元素。
radians 指示要旋转的弧度数。

Since:

4

setRotateAboutUnit

public void setRotateAboutUnit(float x, float y, float z, float radians)

围绕向量 [x, y, z] 作为单位向量旋转指定的弧度。 此方法不检查向量长度。

参数:

参数名称 参数描述
x 指示要旋转的向量的第一个元素。
y 指示要旋转的向量的第二个元素。
z 指示要旋转的向量的第三个元素。
radians 指示要旋转的弧度数。

Since:

4

setConcat

public void setConcat(Matrix44 matrixA, Matrix44 matrixB)

将此 Matrix44 设置为两个指定矩阵的乘法结果。

参数:

参数名称 参数描述
matrixA 表示一个乘法矩阵。
matrixB 表示用于乘法的另一个矩阵。

Since:

4

preConcat

public void preConcat(Matrix44 matrixM)

将此 Matrix44 与指定矩阵预乘,并将乘法结果保存在此 Matrix44 中。

参数:

参数名称 参数描述
matrixM 表示指定的矩阵。

Since:

4

postConcat

public void postConcat(Matrix44 matrixM)

将此 Matrix44 与指定矩阵进行后乘,并将乘法结果保存在此 Matrix44 中。

参数:

参数名称 参数描述
matrixM 表示指定的矩阵。

Since:

4

invert

public boolean invert(Matrix44 inverse)

反转此 Matrix44。

参数:

参数名称 参数描述
inverse 指示要保存此 Matrix44 的逆矩阵的矩阵。

返回:

如果此 Matrix44 可逆,则返回 true; 否则返回 false。

Since:

4

transpose

public void transpose()

转置此 Matrix44。

Since:

4

determinant

public double determinant()

计算此 Matrix44 的行列式。

返回:

返回行列式。

Since:

4