mxcad_2d API 文档 / 2d / McGeVector3d
Class: McGeVector3d
2d.McGeVector3d
McGeVector3d 表示三维空间中的方向向量对象。
Description
该类用于描述和计算向量关系,常见场景包括: 计算两个向量夹角、做点积和叉积、归一化、旋转,以及参与矩阵变换。 它在 CAD 几何运算、方向判断和空间变换中非常常用。
Example
import { McGeVector3d } from "mxcad";
const vec1 = new McGeVector3d(10, 0, 0);
const vec2 = new McGeVector3d(0, 10, 0);
const angle = vec1.angleTo2(vec2, McGeVector3d.kZAxis);
const dot = vec1.dotProduct(vec2);
const cross = vec1.crossProduct(vec2);
console.log("夹角:", angle);
console.log("点积:", dot);
console.log("叉积:", cross);Table of contents
Constructors
Properties
Accessors
Methods
- angle
- angleTo1
- angleTo2
- c
- clone
- copy
- crossProduct
- dotProduct
- isEqualTo
- isUnitLength
- isZeroLength
- length
- mult
- negate
- normalize
- perpVector
- rotateBy
- setFromVector3
- toVector3
- transformBy
Constructors
constructor
• new McGeVector3d(dX?, dY?, dZ?)
构造函数。
Parameters
| Name | Type | Description |
|---|---|---|
dX? | number | object | X 坐标。 |
dY? | number | Y 坐标。 |
dZ? | number | Z 坐标。 |
Properties
imp
• imp: any
内部实现对象
kIdentity
▪ Static kIdentity: McGeVector3d
0长度向量
Example
kNegateZAxis
▪ Static kNegateZAxis: McGeVector3d
Z轴单位向量, 指向负 Z 轴方向
kXAxis
▪ Static kXAxis: McGeVector3d
X轴单位向量, 指向正 X 轴方向
kYAxis
▪ Static kYAxis: McGeVector3d
Y轴单位向量, 指向正 Y 轴方向
kZAxis
▪ Static kZAxis: McGeVector3d
Z轴单位向量, 指向正 Z 轴方向
Accessors
vector3
• get vector3(): Vector3
Returns
Vector3
• set vector3(val): void
Parameters
| Name | Type |
|---|---|
val | Vector3 |
Returns
void
x
• get x(): number
获取或设置向量 X 坐标。
Returns
number
• set x(val): void
Parameters
| Name | Type |
|---|---|
val | number |
Returns
void
y
• get y(): number
获取或设置向量 Y 坐标。
Returns
number
• set y(val): void
Parameters
| Name | Type |
|---|---|
val | number |
Returns
void
z
• get z(): number
获取或设置向量 Z 坐标。
Returns
number
• set z(val): void
Parameters
| Name | Type |
|---|---|
val | number |
Returns
void
Methods
angle
▸ angle(): number
计算向量在[0, 2*Pi]范围内与X轴的夹角度
Returns
number
angleTo1
▸ angleTo1(vec): number
计算两向量在[0, Pi]范围内所夹的角度
Parameters
| Name | Type |
|---|---|
vec | McGeVector3d |
Returns
number
Example
import { McGeVector3d } from "mxcad";
const vec1 = new McGeVector3d(20,10,0);
const vec2 = new McGeVector3d(50,0,0);
const angle = vec1.angleTo1(vec2);angleTo2
▸ angleTo2(vec?, refVec?): number
计算两向量在[0, 2*Pi]范围内所夹的角度
Parameters
| Name | Type |
|---|---|
vec? | McGeVector3d |
refVec? | McGeVector3d |
Returns
number
Example
import { McGeVector3d } from "mxcad";
const vec1 = new McGeVector3d(20,10,0);
const angle = vec1.angleTo2(McGeVector3d.kXAxis, McGeVector3d.kNegateZAxis);c
▸ c(): McGeVector3d
刻隆一个向量对象
Returns
三维向量对象
clone
▸ clone(): McGeVector3d
刻隆一个向量对象
Returns
三维向量对象
Example
import { McGeVector3d } from "mxcad"
const vec1 = new McGeVector3d(20,10,0);
const vec2 = vec1.clone();copy
▸ copy(val): McGeVector3d
复制对象的值
Parameters
| Name | Type | Description |
|---|---|---|
val | McGeVector3d | 三维向量对象 |
Returns
复制后的三维向量对象
Example
import { McGeVector3d } from "mxcad"
const vec1 = new McGeVector3d(20,10,0);
const vec2 = new McGeVector3d();
vec2.copy(vec1);crossProduct
▸ crossProduct(vec): McGeVector3d
两向量的交叉积
Parameters
| Name | Type |
|---|---|
vec | McGeVector3d |
Returns
三维向量对象
dotProduct
▸ dotProduct(vec): number
两向量的点积。
点积可以判断两个方向的相似程度:
- 结果为 0:两个向量垂直;
- 结果大于 0:两向量方向基本一致;
- 结果小于 0:两向量方向相反。
它常用于判断向量是否垂直、判断投影方向、计算夹角余弦等几何场景。
Parameters
| Name | Type | Description |
|---|---|---|
vec | McGeVector3d | 三维向量对象 |
Returns
number
点积结果
Example
import { McGeVector3d } from "mxcad";
// 方向向量:沿 X 轴正方向
const v1 = new McGeVector3d(10, 0, 0);
// 方向向量:沿 Y 轴正方向
const v2 = new McGeVector3d(0, 10, 0);
// 点积为 0,说明两个方向垂直
const dot = v1.dotProduct(v2);
console.log("dot:", dot); // 0
// 继续判断一个向量是否和 X 轴同向
const v3 = new McGeVector3d(5, 0, 0);
const sameDir = v1.dotProduct(v3) > 0;
console.log("同向:", sameDir); // trueisEqualTo
▸ isEqualTo(vec): boolean
判断比较两个向量是否相等
Parameters
| Name | Type | Description |
|---|---|---|
vec | McGeVector3d | 三维向量对象 |
Returns
boolean
布尔值
isUnitLength
▸ isUnitLength(): boolean
检查当前向量是否为单位长度
Returns
boolean
布尔值
isZeroLength
▸ isZeroLength(): boolean
是否为零向量
Returns
boolean
布尔值
length
▸ length(): number
获取向量长度
Returns
number
向量长度
mult
▸ mult(val): McGeVector3d
向量与某个值相乘,修改向量长度
Parameters
| Name | Type | Description |
|---|---|---|
val | number | 数字 |
Returns
三维向量对象
Example
import { McGeVector3d } from "mxcad";
const vec1 = new McGeVector3d(20,10,0);
const vec = vec1.clone().normalize().mult(20)negate
▸ negate(): McGeVector3d
向量取反
Returns
Example
import { McGeVector3d } from "mxcad";
const vec = new McGeVector3d(20,10,0);
vec_neg = vec.clone().negate()normalize
▸ normalize(): McGeVector3d
向量归一化操作
Returns
三维向量对象
perpVector
▸ perpVector(): McGeVector3d
垂直向量
Returns
Example
import { McGeVector3d } from "mxcad";
const vec = new McGeVector3d(20,10,0);
vec_perp = vec.clone().perpVector()rotateBy
▸ rotateBy(ang, axis?): McGeVector3d
旋转
Parameters
| Name | Type | Description |
|---|---|---|
ang | number | 旋转角度。 |
axis? | McGeVector3d | 旋转轴向量 |
Returns
Example
import { McGeVector3d } from "mxcad";
const vec = new McGeVector3d(20,10,0);
vec.rotateBy(Math.PI * 0.5);setFromVector3
▸ setFromVector3(val): McGeVector3d
Parameters
| Name | Type |
|---|---|
val | Vector3 |
Returns
toVector3
▸ toVector3(): Vector3
转换为THREE.Vector3
Returns
Vector3
transformBy
▸ transformBy(leftSide): McGeVector3d
使用矩阵变换该向量
Parameters
| Name | Type | Description |
|---|---|---|
leftSide | McGeMatrix3d | 变换矩阵 |
Returns
变换后的向量对象
Example
