Skip to content

mxcad_2d API 文档 / 2d / McGeVector3d

Class: McGeVector3d ​

2d.McGeVector3d

McGeVector3d 表示三维空间中的方向向量对象。

Description

该类用于描述和计算向量关系,常见场景包括: 计算两个向量夹角、做点积和叉积、归一化、旋转,以及参与矩阵变换。 它在 CAD 几何运算、方向判断和空间变换中非常常用。

Example

ts
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 ​

Constructors ​

constructor ​

• new McGeVector3d(dX?, dY?, dZ?)

构造函数。

Parameters ​

NameTypeDescription
dX?number | objectX 坐标。
dY?numberY 坐标。
dZ?numberZ 坐标。

Properties ​

imp ​

• imp: any

内部实现对象


kIdentity ​

▪ Static kIdentity: McGeVector3d

0长度向量

Example

ts

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 ​

NameType
valVector3

Returns ​

void


x ​

• get x(): number

获取或设置向量 X 坐标。

Returns ​

number

• set x(val): void

Parameters ​

NameType
valnumber

Returns ​

void


y ​

• get y(): number

获取或设置向量 Y 坐标。

Returns ​

number

• set y(val): void

Parameters ​

NameType
valnumber

Returns ​

void


z ​

• get z(): number

获取或设置向量 Z 坐标。

Returns ​

number

• set z(val): void

Parameters ​

NameType
valnumber

Returns ​

void

Methods ​

angle ​

▸ angle(): number

计算向量在[0, 2*Pi]范围内与X轴的夹角度

Returns ​

number


angleTo1 ​

▸ angleTo1(vec): number

计算两向量在[0, Pi]范围内所夹的角度

Parameters ​

NameType
vecMcGeVector3d

Returns ​

number

Example

ts
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 ​

NameType
vec?McGeVector3d
refVec?McGeVector3d

Returns ​

number

Example

ts
import { McGeVector3d } from "mxcad";

const vec1 = new McGeVector3d(20,10,0);
const angle = vec1.angleTo2(McGeVector3d.kXAxis, McGeVector3d.kNegateZAxis);

c ​

▸ c(): McGeVector3d

刻隆一个向量对象

Returns ​

McGeVector3d

三维向量对象


clone ​

▸ clone(): McGeVector3d

刻隆一个向量对象

Returns ​

McGeVector3d

三维向量对象

Example

ts
import { McGeVector3d } from "mxcad"

const vec1 = new McGeVector3d(20,10,0);
const vec2 = vec1.clone();

copy ​

▸ copy(val): McGeVector3d

复制对象的值

Parameters ​

NameTypeDescription
valMcGeVector3d三维向量对象

Returns ​

McGeVector3d

复制后的三维向量对象

Example

ts
import { McGeVector3d } from "mxcad"

const vec1 = new McGeVector3d(20,10,0);
const vec2 = new McGeVector3d();
vec2.copy(vec1);

crossProduct ​

▸ crossProduct(vec): McGeVector3d

两向量的交叉积

Parameters ​

NameType
vecMcGeVector3d

Returns ​

McGeVector3d

三维向量对象


dotProduct ​

▸ dotProduct(vec): number

两向量的点积。

点积可以判断两个方向的相似程度:

  • 结果为 0:两个向量垂直;
  • 结果大于 0:两向量方向基本一致;
  • 结果小于 0:两向量方向相反。

它常用于判断向量是否垂直、判断投影方向、计算夹角余弦等几何场景。

Parameters ​

NameTypeDescription
vecMcGeVector3d三维向量对象

Returns ​

number

点积结果

Example

ts
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); // true

isEqualTo ​

▸ isEqualTo(vec): boolean

判断比较两个向量是否相等

Parameters ​

NameTypeDescription
vecMcGeVector3d三维向量对象

Returns ​

boolean

布尔值


isUnitLength ​

▸ isUnitLength(): boolean

检查当前向量是否为单位长度

Returns ​

boolean

布尔值


isZeroLength ​

▸ isZeroLength(): boolean

是否为零向量

Returns ​

boolean

布尔值


length ​

▸ length(): number

获取向量长度

Returns ​

number

向量长度


mult ​

▸ mult(val): McGeVector3d

向量与某个值相乘,修改向量长度

Parameters ​

NameTypeDescription
valnumber数字

Returns ​

McGeVector3d

三维向量对象

Example

ts
import { McGeVector3d } from "mxcad";

const vec1 = new McGeVector3d(20,10,0);
const vec = vec1.clone().normalize().mult(20)

negate ​

▸ negate(): McGeVector3d

向量取反

Returns ​

McGeVector3d

Example

ts
import { McGeVector3d } from "mxcad";

const vec = new McGeVector3d(20,10,0);
vec_neg = vec.clone().negate()

normalize ​

▸ normalize(): McGeVector3d

向量归一化操作

Returns ​

McGeVector3d

三维向量对象


perpVector ​

▸ perpVector(): McGeVector3d

垂直向量

Returns ​

McGeVector3d

Example

ts
import { McGeVector3d } from "mxcad";

const vec = new McGeVector3d(20,10,0);
vec_perp = vec.clone().perpVector()

rotateBy ​

▸ rotateBy(ang, axis?): McGeVector3d

旋转

Parameters ​

NameTypeDescription
angnumber旋转角度。
axis?McGeVector3d旋转轴向量

Returns ​

McGeVector3d

Example

ts
import { McGeVector3d } from "mxcad";

const vec = new McGeVector3d(20,10,0);
vec.rotateBy(Math.PI * 0.5);

setFromVector3 ​

▸ setFromVector3(val): McGeVector3d

Parameters ​

NameType
valVector3

Returns ​

McGeVector3d


toVector3 ​

▸ toVector3(): Vector3

转换为THREE.Vector3

Returns ​

Vector3


transformBy ​

▸ transformBy(leftSide): McGeVector3d

使用矩阵变换该向量

Parameters ​

NameTypeDescription
leftSideMcGeMatrix3d变换矩阵

Returns ​

McGeVector3d

变换后的向量对象

Example

ts