CAD开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

ObjectARX 开发指南

使用基本几何类型

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

以下示例显示了点、向量和矩阵类中一些最常用的函数和运算符。这些示例使用 3D 类,但其中大多数也适用于 2D 类。

点和矢量的默认构造函数将所有坐标初始化为 0。点和向量也可以通过指定它们的坐标来构造,如下所示:

AcGePoint3d    p1(2.0,5.0,-7.5), p2, p3(1.0,2.0,3.0);
AcGeVector3d   v1(3.0,4.0,5.0), v2(0.0,1.0,-1.0), v3;

点类和向量类提供,,,和运算符。这些运算符允许点和向量的使用方式与内置类型(如双精度和整数)大致相同。以下是加减点和向量的示例:++=--=

p2 = p1 + v1;       // Set p2 to sum of p1 and v1.
p1 += v1;           // Add v1 to p1.
p3 -= v1;           // Subtract v1 from p3.
v3 = v1 + v2;       // Set v3 to sum of v1 and v2.
v1 += v2;           // Add v2 to v1.
v3 = v1 - v2;       // Set v3 to difference of v1 and v2.

没有运算符可以添加两点;但是,可以将点转换为向量,然后可以将向量添加到另一个点:+

p1 += p2.asVector();

以下是如何获取向量的负数的示例:

v2 = -v1;           // Set v2 to negative of v1.
v1.negate();        // This is equivalent to v1 = -v1.

以下是缩放矢量的不同方法的示例:

v1 *= 2.0;          // Doubles the length of v1.
v3 = v1 / 2.0;      // Set v3 to half the length of v1.
v1.normalize();     // Make v1 a unit vector.

点类和矢量类包含许多用于计算距离和长度的查询函数:

double len = v2.length();  // Length of v2.
len = p1.distanceTo(p2);   // Distance from p1 to p2.

以下函数对于计算两个 3D 矢量之间的角度非常有用。下面返回与之间的角度,其中角度取为逆时针方向(假定为垂直于与):v1v2v3v3v1v2

angle = v1.angleTo(v2,v3);

以下函数返回布尔值(真或假),可以在语句内部使用:if

if (v1.isZeroLength())   
if (v1.isParallelTo(v2))
if (v1.isPerpendicularTo(v2)) 

向量类包含用于通常向量运算的函数:

len = v1.dotProduct(v2);
v3 = v1.crossProduct(v2);

矩阵的默认构造函数将矩阵初始化为单位矩阵:

AcGeMatrix3d   mat1, mat2, mat3;

以下内容围绕由 and 定义的线旋转 90 度:p3p1v1

mat1.setToRotation ( kPi/2.0, v1, p1 );
p3 = mat1 * p2;

如果矩阵不是奇异的,则可以反转:

if (!mat2.isSingular())
    mat2.invert();

运算符定义为连接矩阵:*

mat3 = mat1 * mat2;

下面测试矩阵是否在所有三个坐标中包含相等的缩放(即,它不会更改应用它的任何实体的形状):

if (mat.isUniScaledOrtho())

路过

雷人

握手

鲜花

鸡蛋

最新评论

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

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

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

返回顶部