天气与日历 切换到窄版

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

objectarx中angeOnPlane()函数的真实含义

[复制链接]

该用户从未签到

主题

0

回帖

2912

积分

管理员

积分
2912
发表于 2024-6-22 09:46:18 | 显示全部楼层 |阅读模式
问题的提出是由同事的一个提问引出的,同事问一个向量vector与一个平面plane的夹角怎样获得?

当时在arx的帮助文档中查看相关的API函数,发现angleOnPlane()函数很相似,但是从描述上又不是很正确,心想如果是描述一个适量与在平面投影的夹角用如此多的评议描述是不是太累赘了,因此就用程序来见证自己的思考,当程序运行结果出来,一步步明白了angleOnPlane()的真实含义

下面首先是objectarx中angleOnPlane()的定义及其描述

double  angleOnPlane(

const AcGePlanarEnt& pln) const;

pln Input plane


Returns the angle between the orthogonal projection of this vector into the plane through the origin with the same normal as planar entity pln and the zeroth basis vector v0 of the planar entity pln provided by the function pln.getCoordSystem (p, v0, v1).

首先来阐述angleOnPlane()函数的含义:其描述的是适量vector投影到平面上后与平面的第一个矢量uAxis的夹角,而平面的第一个是通过getCoordSystem获取的,也就是不管以何种方式构造一个plane时,都形成了其特有的orgin, uAxis和VAxis,不太明白的可以参考AcGePlane构造函数。

一个向量vector与一个平面plane的夹角怎样获得?

首先根据适量vector与平面的法向量normal获取vector在平面的垂直投影向量,然后用angleTo()函数来获取相应的角度。



下面的代码就是用来测试这些函数的使用的

AcGeVector3d normal = AcGeVector3d::kYAxis;;
AcGePlane plane(AcGePoint3d::kOrigin, normal);//平面
AcGeVector3d vect = AcGeVector3d(3,1,1);//所给出的矢量
AcGeVector3d projVect = vect.orthoProject(normal); //垂直投影
double dAngle1 = vect.angleTo(projVect); //这就是所求的一个向量vector与一个平面plane的夹角AcGePoint3d ptOr;
AcGeVector3d vectU,vectV;
plane.getCoordSystem(ptOr, vectU, vectV);
double dAngle = vect.angleOnPlane(plane);
double dAngle2 = projVect.angleTo(vectU);
dAngle始终与dAngle2相等

 

 

 

 

objectarx中angeOnPlane()函数的真实含义
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-11-1 15:25 , Processed in 0.152853 second(s), 28 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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