平面三点的法向量_Hypermesh二次开发:获取三点所确定平面的单位法向量

本文介绍了在Hypermesh二次开发中如何通过三个节点确定平面的单位法向量。通过节点编号创建向量,进行叉乘得到法向量,再单位化处理。文中提供了一个具体示例,涉及向量操作如GetVector、VectorCrossProduct和VectorNormalize函数。
摘要由CSDN通过智能技术生成

在进行Hypermesh的二次开发时经常需要获取平面的单位法向量,很多情况下是通过三个节点确定参考平面,然后获取此参考平面的单位法向量。编程思路为:将三个节点编号为1、2、3,通过1、2节点创建第一个向量,通过1、3或2、3节点创建第二个向量,将这两个向量叉乘即可得到平面的法向量,然后对法向量进行单位化即可。向量的操作需要用到Hyperworks math工具箱里面的相关函数,向量的创建采用GetVector函数,向量的叉乘使用VectorCrossProduct函数,单位化向量使用VectorNormalize函数。

下面通过一个获取平面圆弧曲线的单位法向量的实力详细介绍程序的编制方法。首先在圆弧上创建三个临时节点,然后使用上述方法进行单位法向量的创建。由于使用了Hyperworks math工具箱里面的向量处理函数,需要在程序头部导入hwat工具包。完整程序如下所示:

package require hwat*createmarkpanel lines 1 "Please select a arcs"set line_id [hm_getmark lines 1]hm_entityrecorder nodes on*createdoublearray 3 0 0.3 0.6*nodecreateatlineparams $line_id 1 3hm_entityrecorder nodes offset node_ids [hm_entityrecorder nodes ids]lassign $node_ids n1 n2 n3set line_vec1 [::hwat::math::GetVector \    [lindex [hm_nodevalue $n1] 0] \  [lindex [hm_nodevalue $n2] 0]]set line_vec2 [::hwat::math::GetVector \    [lindex [hm_nodevalue $n1] 0] \  [lindex [hm_nodevalue $n3] 0]]set cross_vec [::hwat::math::VectorCrossProduct $line_vec1 $line_vec2]set cross_vec [::hwat::math::VectorNormalize $cross_vec]lassign $cross_vec normalx normaly normalz*createmark nodes 1 $n1 $n2 $n3*nodemarkcleartempmark 1

点击下方关键词查看更多相关文章,或点击下方搜索更多公众号文章。

56a6294b804e35c5aa1950eb4396f790.png

坐倚北风个人博客:www.leanwind.com,聚焦数字化和智能化设计。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值