以下示例显示了点、向量和矩阵类中一些最常用的函数和运算符。这些示例使用 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()) |
|Archiver|CAD开发者社区 ( 苏ICP备2022047690号-1 苏公网安备32011402011833)
GMT+8, 2025-1-8 19:38
Powered by Discuz! X3.4
Copyright © 2001-2021, Tencent Cloud.