1. 程式人生 > 其它 >平面三點的法向量_Hypermesh二次開發:獲取三點所確定平面的單位法向量

平面三點的法向量_Hypermesh二次開發:獲取三點所確定平面的單位法向量

技術標籤:平面三點的法向量

在進行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*nodemarkcleartempmark1

點選下方關鍵詞檢視更多相關文章,或點選下方搜尋更多公眾號文章。

56a6294b804e35c5aa1950eb4396f790.png

坐倚北風個人部落格:www.leanwind.com,聚焦數字化和智慧化設計。