mxcad_2d API 文档 / 2d / McGeMatrix3d
Class: McGeMatrix3d
2d.McGeMatrix3d
McGeMatrix3d 表示三维空间中的变换矩阵对象。
Description
该类用于构造和应用平移、旋转、缩放、镜像等几何变换矩阵, 可用于点、向量、实体对象的空间变换。它是实现 CAD 图形变换和坐标系转换的核心类型之一。
Example
import { McGeMatrix3d, McGePoint3d, McGeVector3d } from "mxcad";
const matrix = new McGeMatrix3d();
matrix.setToTranslation(new McGeVector3d(20, 10, 0));//平移矩阵
const pt = new McGePoint3d(1, 2, 0);
pt.transformBy(matrix);//应用平移矩阵
console.log(pt.x, pt.y, pt.z);Table of contents
Constructors
Properties
Accessors
Methods
- angleXYPlane
- clone
- copy
- det
- getData
- getDatas
- invert
- isEqualTo
- isSingular
- postMultBy
- preMultBy
- scale
- setCoordSystem
- setData
- setDatas
- setMirror
- setToIdentity
- setToProduct
- setToRotation
- setToScaling
- setToTranslation
- toMatrix4
- transposeIt
Constructors
constructor
• new McGeMatrix3d(imp?)
构造函数。
Parameters
| Name | Type | Description |
|---|---|---|
imp? | object | 内部实现对象 |
Properties
imp
• imp: any
内部实现对象
kIdentity
▪ Static kIdentity: McGeMatrix3d
乘法的单位矩阵
Accessors
matrix4
• get matrix4(): Matrix4
矩阵定义数据
Returns
Matrix4
• set matrix4(mat): void
Parameters
| Name | Type |
|---|---|
mat | Matrix4 |
Returns
void
Methods
angleXYPlane
▸ angleXYPlane(): number
获取矩阵在XY平面的旋转角度因子。 @returns旋转角度因子。
Returns
number
Example
clone
▸ clone(): McGeMatrix3d
刻隆一个三维矩阵对象
Returns
三维矩阵对象
copy
▸ copy(val): McGeMatrix3d
复制对象的值
Parameters
| Name | Type | Description |
|---|---|---|
val | McGeMatrix3d | 三维矩阵对象 |
Returns
复制后的三维矩阵对象
det
▸ det(): number
求矩阵的行列式。
Returns
number
矩阵的行列式。
getData
▸ getData(row, col): number
获取矩阵中指定位置的元素值。
Parameters
| Name | Type | Description |
|---|---|---|
row | number | 行索引。 |
col | number | 列索引。 |
Returns
number
指定位置的元素值。
getDatas
▸ getDatas(): string
返回矩阵的所有定义数据。
Returns
string
invert
▸ invert(): McGeMatrix3d
求矩阵的逆矩阵。
Returns
isEqualTo
▸ isEqualTo(mat): boolean
判断矩阵是否与指定的矩阵相等。
Parameters
| Name | Type | Description |
|---|---|---|
mat | McGeMatrix3d | 指定的矩阵。 |
Returns
boolean
如果相等返回 true,否则返回 false。
isSingular
▸ isSingular(): boolean
判断矩阵是否为奇异矩阵。
Returns
boolean
如果是奇异矩阵返回 true,否则返回 false。
postMultBy
▸ postMultBy(rightSide): McGeMatrix3d
右乘指定的矩阵。
Parameters
| Name | Type |
|---|---|
rightSide | McGeMatrix3d |
Returns
返回右乘后的矩阵
preMultBy
▸ preMultBy(leftSide): McGeMatrix3d
左乘指定的矩阵。
Parameters
| Name | Type | Description |
|---|---|---|
leftSide | McGeMatrix3d | 左侧矩阵。 |
Returns
返回左乘后的矩阵
scale
▸ scale(): number
获取矩阵的缩放因子。
Returns
number
矩阵的缩放因子。
Example
// matrix 表示一个三维矩阵对象
const scaleNum = matrix.scale()
console.log(scaleNum)setCoordSystem
▸ setCoordSystem(origin, xAxis, yAxis, zAxis): McGeMatrix3d
将矩阵设置为指定的坐标系。
Parameters
| Name | Type | Description |
|---|---|---|
origin | McGePoint3d | 坐标系原点。 |
xAxis | McGeVector3d | X 轴向量。 |
yAxis | McGeVector3d | Y 轴向量。 |
zAxis | McGeVector3d | Z 轴向量。 |
Returns
setData
▸ setData(row, col, val): void
设置矩阵中指定位置的元素值。
Parameters
| Name | Type | Description |
|---|---|---|
row | number | 行索引。 |
col | number | 列索引。 |
val | number | 指定位置的元素值。 |
Returns
void
setDatas
▸ setDatas(str): boolean
Parameters
| Name | Type |
|---|---|
str | string |
Returns
boolean
setMirror
▸ setMirror(pt1, pt2): McGeMatrix3d
将矩阵设置为镜向矩阵
Parameters
| Name | Type | Description |
|---|---|---|
pt1 | McGePoint3d | 镜向平面上的第一个点。 |
pt2 | McGePoint3d | 镜向平面上的第二个点。 |
Returns
Example
import { McGeMatrix3d, McDbEntity } from "mxcad";
const matrix = new McGeMatrix3d();
const event = new McDbEntity();
matrix.setMirror(new McGeVector3d(0, 0, 0), new McGeVector3d(20, 0, 0));
event.transformBy(matrix);setToIdentity
▸ setToIdentity(): McGeMatrix3d
将矩阵设置为单位矩阵。
Returns
setToProduct
▸ setToProduct(mat1, mat2): McGeMatrix3d
将矩阵设置为两个矩阵的乘积。
Parameters
| Name | Type | Description |
|---|---|---|
mat1 | McGeMatrix3d | 第一个矩阵。 |
mat2 | McGeMatrix3d | 第二个矩阵。 |
Returns
setToRotation
▸ setToRotation(angle, axis, center): McGeMatrix3d
将矩阵设置为绕指定轴旋转指定角度的矩阵。
Parameters
| Name | Type | Description |
|---|---|---|
angle | number | 旋转角度。 |
axis | McGeVector3d | 旋转轴向量。 |
center | McGePoint3d | 旋转中心点。 |
Returns
Example
import { McGeMatrix3d, McDbEntity } from "mxcad";
let matrix = new McGeMatrix3d();
const event = new McDbEntity();
matrix.setToRotation(Math.PI, McGeVector3d.kZAxis / 180.0, new McGeVector3d(20,10,0));
event.transformBy(matrix);setToScaling
▸ setToScaling(scaleAll, center): McGeMatrix3d
将矩阵设置为缩放矩阵。
Parameters
| Name | Type | Description |
|---|---|---|
scaleAll | number | 缩放因子。 |
center | McGePoint3d | 缩放中心点。 |
Returns
Example
import { McGeMatrix3d, McDbEntity } from "mxcad";
let matrix = new McGeMatrix3d();
const event = new McDbEntity();
matrix.setToScaling(0.5, new McGeVector3d(0, 0, 0));
event.transformBy(matrix);setToTranslation
▸ setToTranslation(vec): McGeMatrix3d
将矩阵设置为平移矩阵。
Parameters
| Name | Type | Description |
|---|---|---|
vec | McGeVector3d | 平移向量。 |
Returns
Example
import { McGeMatrix3d, McDbEntity } from "mxcad";
let matrix = new McGeMatrix3d();
const event = new McDbEntity();
matrix.setToTranslation(new McGeVector3d(20,10,0));
event.transformBy(matrix);toMatrix4
▸ toMatrix4(): Matrix4
返回THREE.Matrix4
Returns
Matrix4
transposeIt
▸ transposeIt(): McGeMatrix3d
将矩阵转置。
