天气与日历 切换到窄版

 找回密码
 立即注册
中国膜结构网
十大进口膜材评选 十大国产膜材评选 十大膜结构设计评选 十大膜结构公司评选
查看: 108|回复: 0

AcGe库的基本使用方法

[复制链接]

该用户从未签到

主题

0

回帖

2912

积分

管理员

积分
2912
发表于 2024-6-22 09:46:18 | 显示全部楼层 |阅读模式
下面的例子介绍对于点、矢量、距阵最基本的函数和操作,这些例子使用三维对象,但绝大多数函数和操作都适用于二维对象。
对于点和矢量来说,默认的构造函数把所有的坐标都初始化为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;

点和矢量类还提供+、+=、-、-=操作。有了这些操作,我们可以像使用内部变量类型如int和double一样使用它们。下面的例子是点和矢量的加减操作:

p2 = p1 + v1;       // p2 是 p1 与 v1的和
p1 += v1;           // 把 v1 加给 p1
p3 -= v1;           // 从 p3中减去v1
v3 = v1 + v2;       // v3 是 v1 与 v2的和
v1 += v2;           //  把v2加给 v1
v3 = v1 - v2;       // 设置v3 为 v1与 v2的差

两个点没有加法运算,但一个点可以转换成矢量,然后就可以加到另一个点上去了:

p1 += p2.asVector();

下面的例子表明如何获得一个反方向的矢量:

v2 = -v1;           // 设置v2是v1的反方向矢量
v1.negate();        // 这个操作等同于 v1 = -v1

下面的例子表明缩放一个矢量的不同方法:

v1 *= 2.0;          // v1的长度被放大两倍
v3 = v1 / 2.0;      // v3的长度是 v1长度的一半
v1.normalize();     // 使v1变成单位矢量

点和矢量类还有一些获得距离或长度的函数:

double len = v2.length();  //  v2的长度
len = p1.distanceTo(p2);   // 从 p1 到 p2的距离

T下面这个函数对于求两个三维矢量之间的角度非常有用,该函数返回v1和v2之间的角度,这个角度是绕v3轴逆时针旋转得到的,v3被假定为垂直于v1和v2所确定的平面:

angle = v1.angleTo(v2,v3);

下面这些函数返回布尔值(TRUE或者FALSE),一般用在if语句中:

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

矢量类的基本矢量操作函数:

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

距阵的默认构造函数初始化一个距阵为单位距阵:

AcGeMatrix3d   mat1, mat2, mat3;

下面的操作把p3绕由p1和v1确定的直线旋转90度:

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

 

 

 

 

AcGe库的基本使用方法
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|中国膜结构网|中国膜结构协会|进口膜材|国产膜材|ETFE|PVDF|PTFE|设计|施工|安装|车棚|看台|污水池|中国膜结构网_中国空间膜结构协会

GMT+8, 2024-11-1 12:37 , Processed in 0.126894 second(s), 26 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表