CAD开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

ObjectARX 开发指南

使用直线和平面类

2022-12-31 13:57| 发布者: admin| 查看: 401| 评论: 0|来自: AutoCAD

以下示例显示了直线和平面类中一些最常用的函数。这些示例演示如何使用直线和平面类进行基本的线性代数运算。尽管示例使用 3D 类,但大多数不涉及平面类的函数也存在于 2D 类中。这些示例还使用无限直线和平面类,但它们对线段、射线和有界平面同样有效。

默认线构造函数沿X轴构造一条线。默认平面构造函数构造XY平面:

AcGePoint3d    p1(2.0,5.0,-7.5), p2;
AcGeLine3d     line1(p1,v1), line2;
AcGePlane      plane1(p1,v1), plane2;

上面的构造函数用于构造一条贯穿方向的直线。构造函数构造一个平面,并且垂直于。因此,是垂直的。line1p1v1plane1p1v1line1plane1

以下函数返回直线或平面定义:

p1 = line1.pointOnLine();   // Arbitrary point on line.
v1 = line1.direction();     // Direction vector of line.
p1 = plane1.pointOnPlane(); // Arbitrary point on plane.
v1 = plane1.normal();       // Normal vector of plane.

与函数总是返回单位向量。direction()normal()

以下函数返回直线或平面上离该点最近的点:p1

p2 = line1.closestPointTo(p1);
p2 = plane1.closestPointTo(p1);

以下函数返回点与线或平面之间的距离(这些距离将与上面之间的距离相同):p1p2

double len = line1.distanceTo(p1);
len = plane1.distanceTo(p1);

以下函数返回布尔值(真或假),可以在语句中使用。前两个测试点是否在或上,第三个测试是否在:ifp1line1plane1line1plane1

if (line1.isOn(p1))
if (plane1.isOn(p1))
if (line1.isOn(plane1))

以下函数测试直线或平面是平行、垂直还是重合:

if (line1.isParallelTo(line2))
if (line1.isParallelTo(plane1))
if (line1.isPerpendicularTo(line2))
if (line1.isPerpendicularTo(plane1))
if (line1.isColinearTo(line2))
if (plane1.isParallelTo(plane2))
if (plane1.isPerpendicularTo(plane2))
if (plane1.isCoplanarTo(plane2))

以下函数返回直线和平面的交点:

if (line1.intersectWith(line2,p1))
if (line1.intersectWith(plane1,p1))
if (plane1.intersectWith(plane2,line1))

路过

雷人

握手

鲜花

鸡蛋

最新评论

QQ|Archiver|CAD开发者社区 ( 苏ICP备2022047690号-1 )

GMT+8, 2024-5-19 14:37

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

返回顶部