• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            eryar

            PipeCAD - Plant Piping Design Software.
            RvmTranslator - Translate AVEVA RVM to OBJ, glTF, etc.
            posts - 603, comments - 590, trackbacks - 0, articles - 0

            布爾數(shù)據(jù) 面的相交

            Posted on 2023-09-29 18:45 eryar 閱讀(936) 評(píng)論(0)  編輯 收藏 引用 所屬分類(lèi): 2.OpenCASCADE

            布爾數(shù)據(jù) 面的相交

            eryar@163.com

            1 Introduction

            OpenCASCADE中對(duì)面的相交定義如下圖所示:

            三維空間中兩個(gè)帶有Geometry Surface的面Face,當(dāng)兩個(gè)Surface之間的距離小于Face中的容差Tolerance,則認(rèn)為是相交的。一般兩個(gè)面之間相交得到的是交線(xiàn),還有一些情況得到的是交點(diǎn),如下圖所示:

            布爾運(yùn)算中面的相交是相對(duì)復(fù)雜的問(wèn)題,除了考慮上述交線(xiàn)和交點(diǎn)的問(wèn)題以外,還要考慮有重疊的情況;對(duì)于新生成的交線(xiàn),還要考慮生成PCurve;若面上有開(kāi)孔,還要將穿過(guò)開(kāi)孔區(qū)域的交線(xiàn)排除等;最后要考慮如何保存面相交的結(jié)果。相交的計(jì)算在函數(shù):

            最終是調(diào)用IntTools_FaceFace來(lái)計(jì)算兩個(gè)面的相交。并將計(jì)算結(jié)果交線(xiàn)和交點(diǎn),是否重疊等信息保存到BOPDS_InterfFF中:

            2 Face Info

            類(lèi)BOPDS_FaceInfo用來(lái)存儲(chǔ)以下信息:

            注意PBo31和PBSc1,一個(gè)狀態(tài)是On,一個(gè)狀態(tài)是Section。在相交處理類(lèi)BOPAlgo_PaveFiller中通過(guò)函數(shù)BOPAlgo_PaveFiller::UpdateFaceInfo將這些相交的狀態(tài)更新。

            3 Tangent Face

            從前面的文章關(guān)于檢測(cè)邊與邊、邊與面是否有重疊時(shí)采用了固定采樣點(diǎn)來(lái)處理的不嚴(yán)謹(jǐn)?shù)倪壿媮?lái)看,判斷線(xiàn)的重疊是個(gè)復(fù)雜的問(wèn)題,判斷面與面的重疊就相對(duì)更復(fù)雜。本文先從簡(jiǎn)單入手,先看對(duì)于最簡(jiǎn)單的兩個(gè)平面重疊的檢測(cè),引出大家對(duì)于任意兩個(gè)面重疊區(qū)域檢測(cè)的思考。對(duì)這種特殊的情況處理在IntTools_FaceFace中的函數(shù)PerformPlanes()中實(shí)現(xiàn)。其中使用二次曲面的幾何求交法進(jìn)行處理,源碼如下:

            通過(guò)源碼可以看出,若兩個(gè)平面之間的法向夾角小于TolAng及距離小于Tol時(shí),則認(rèn)為兩個(gè)面是一樣的IntAna_Same;當(dāng)距離大于Tol時(shí),則認(rèn)為沒(méi)有相交IntAna_Empty。

            對(duì)于重疊的平面,將theTangentFaces設(shè)置成true表示是重疊的。這里留下一個(gè)問(wèn)題大家思考:如何判斷自由曲面的重疊情況?

            4 Hole

            當(dāng)面上有孔洞時(shí),還要對(duì)交線(xiàn)進(jìn)行處理,以排除掉孔洞中的交線(xiàn)。當(dāng)使用IntTools_FaceFace來(lái)計(jì)算兩個(gè)面的交線(xiàn)時(shí),可以看到交線(xiàn)的范圍不正確,沒(méi)有處理孔洞情況,甚至也沒(méi)有處理面的邊界。如下圖所示紅色的交線(xiàn)為使用IntTools_FaceFace計(jì)算得到的:

            當(dāng)使用BOPAlgo_PaveFiller計(jì)算交線(xiàn)并結(jié)合PaveBlock得到交線(xiàn)顯示如下圖所示:

            雖然計(jì)算兩個(gè)面之間的相交處理最終是調(diào)用的IntTools_FaceFace,但是要得到正確的交線(xiàn)需要使用類(lèi)BOPAlgo_PaveFiller。這里也留下問(wèn)題供大家思考:為什么IntTools_FaceFace計(jì)算的交線(xiàn)范圍不正確?為什么BOPAlgo_PaveFiller計(jì)算的交線(xiàn)正確?

            5 Conclusion

            綜上所述,布爾數(shù)據(jù)中面的相交的結(jié)果可能有交線(xiàn),也可能有交點(diǎn)。將求交結(jié)果保存到FaceInfo中。從簡(jiǎn)單的兩個(gè)平面重疊來(lái)看,將重疊的狀態(tài)用變量theTangetFaces來(lái)保存。那任意兩個(gè)曲面重疊如何判斷呢?面的相交雖然提供類(lèi)IntTools_FaceFace來(lái)計(jì)算,但是沒(méi)有正確處理交線(xiàn)的范圍,為什么BOPAlgo_PaveFiller中可以正確處理交線(xiàn)呢?

             

            祝大家中秋國(guó)慶節(jié)日快樂(lè)!

             

            一日本道伊人久久综合影| 国产日韩久久免费影院| 久久久无码精品亚洲日韩京东传媒 | 伊人久久国产免费观看视频| 亚洲国产精品一区二区三区久久 | 国产成人久久精品区一区二区| 国产精品久久影院| 亚洲精品WWW久久久久久 | 久久久久女人精品毛片| 四虎国产精品免费久久5151| 青青青青久久精品国产h久久精品五福影院1421 | 亚洲欧美日韩中文久久| 香港aa三级久久三级| 亚洲国产另类久久久精品| 久久久久人妻一区精品果冻| 欧美噜噜久久久XXX| 亚洲精品久久久www| 国产高潮国产高潮久久久91| 久久综合亚洲欧美成人| 久久人做人爽一区二区三区 | 久久人人爽人人爽人人片AV高清 | 青草影院天堂男人久久| 亚洲国产精品无码久久一线| 久久狠狠一本精品综合网| 麻豆AV一区二区三区久久 | 久久精品一区二区三区不卡| 亚洲国产成人久久综合碰| 精品视频久久久久| 97久久超碰国产精品旧版| 午夜精品久久久久久久久| 久久无码AV一区二区三区| 久久久久久极精品久久久| 国产精品内射久久久久欢欢| 99久久免费国产特黄| 99国产欧美精品久久久蜜芽| 漂亮人妻被黑人久久精品| 久久99国内精品自在现线| 精品久久久无码人妻中文字幕豆芽 | 欧美777精品久久久久网| 久久精品视频免费| 久久99精品久久久久久秒播|