欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-04-04 08:30:14
...

在进行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

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

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

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