使用基本几何类型
以下示例显示了点类、向量类和矩阵类中一些最常用的函数和运算符。这些示例使用 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); 以下函数返回布尔值(true 或 false),可在语句中使用:if if (v1.isZeroLength()) if (v1.isParallelTo(v2)) if (v1.isPerpendicularTo(v2)) vector 类包含用于常用向量运算的函数: len = v1.dotProduct(v2); v3 = v1.crossProduct(v2); 矩阵的默认构造函数将矩阵初始化为单位矩阵: AcGeMatrix3d mat1, mat2, mat3; 下面围绕 和 定义的线旋转 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-3-5 18:02
Powered by Discuz! X3.4
Copyright © 2001-2021, Tencent Cloud.