• <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

            布爾數據 面的相交

            Posted on 2023-09-29 18:45 eryar 閱讀(935) 評論(0)  編輯 收藏 引用 所屬分類: 2.OpenCASCADE

            布爾數據 面的相交

            eryar@163.com

            1 Introduction

            OpenCASCADE中對面的相交定義如下圖所示:

            三維空間中兩個帶有Geometry Surface的面Face,當兩個Surface之間的距離小于Face中的容差Tolerance,則認為是相交的。一般兩個面之間相交得到的是交線,還有一些情況得到的是交點,如下圖所示:

            布爾運算中面的相交是相對復雜的問題,除了考慮上述交線和交點的問題以外,還要考慮有重疊的情況;對于新生成的交線,還要考慮生成PCurve;若面上有開孔,還要將穿過開孔區域的交線排除等;最后要考慮如何保存面相交的結果。相交的計算在函數:

            最終是調用IntTools_FaceFace來計算兩個面的相交。并將計算結果交線和交點,是否重疊等信息保存到BOPDS_InterfFF中:

            2 Face Info

            類BOPDS_FaceInfo用來存儲以下信息:

            注意PBo31和PBSc1,一個狀態是On,一個狀態是Section。在相交處理類BOPAlgo_PaveFiller中通過函數BOPAlgo_PaveFiller::UpdateFaceInfo將這些相交的狀態更新。

            3 Tangent Face

            從前面的文章關于檢測邊與邊、邊與面是否有重疊時采用了固定采樣點來處理的不嚴謹的邏輯來看,判斷線的重疊是個復雜的問題,判斷面與面的重疊就相對更復雜。本文先從簡單入手,先看對于最簡單的兩個平面重疊的檢測,引出大家對于任意兩個面重疊區域檢測的思考。對這種特殊的情況處理在IntTools_FaceFace中的函數PerformPlanes()中實現。其中使用二次曲面的幾何求交法進行處理,源碼如下:

            通過源碼可以看出,若兩個平面之間的法向夾角小于TolAng及距離小于Tol時,則認為兩個面是一樣的IntAna_Same;當距離大于Tol時,則認為沒有相交IntAna_Empty。

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

            4 Hole

            當面上有孔洞時,還要對交線進行處理,以排除掉孔洞中的交線。當使用IntTools_FaceFace來計算兩個面的交線時,可以看到交線的范圍不正確,沒有處理孔洞情況,甚至也沒有處理面的邊界。如下圖所示紅色的交線為使用IntTools_FaceFace計算得到的:

            當使用BOPAlgo_PaveFiller計算交線并結合PaveBlock得到交線顯示如下圖所示:

            雖然計算兩個面之間的相交處理最終是調用的IntTools_FaceFace,但是要得到正確的交線需要使用類BOPAlgo_PaveFiller。這里也留下問題供大家思考:為什么IntTools_FaceFace計算的交線范圍不正確?為什么BOPAlgo_PaveFiller計算的交線正確?

            5 Conclusion

            綜上所述,布爾數據中面的相交的結果可能有交線,也可能有交點。將求交結果保存到FaceInfo中。從簡單的兩個平面重疊來看,將重疊的狀態用變量theTangetFaces來保存。那任意兩個曲面重疊如何判斷呢?面的相交雖然提供類IntTools_FaceFace來計算,但是沒有正確處理交線的范圍,為什么BOPAlgo_PaveFiller中可以正確處理交線呢?

             

            祝大家中秋國慶節日快樂!

             

            热re99久久6国产精品免费| 国产激情久久久久影院老熟女免费 | 热久久这里只有精品| 99久久国产综合精品网成人影院 | 伊人色综合久久天天人守人婷| 亚洲国产成人精品无码久久久久久综合| 久久这里只精品国产99热| 久久丝袜精品中文字幕| 亚洲av伊人久久综合密臀性色 | 一本色道久久88精品综合| 99久久精品国产麻豆| 中文成人无码精品久久久不卡 | 人人狠狠综合久久亚洲88| 人妻无码精品久久亚瑟影视 | 2021国产精品午夜久久| 久久青青草原国产精品免费| 久久99精品久久久大学生| 国产福利电影一区二区三区久久老子无码午夜伦不 | 99久久精品久久久久久清纯| 亚洲∧v久久久无码精品| 香蕉久久永久视频| 99久久亚洲综合精品网站| 色欲综合久久中文字幕网| 一本久久综合亚洲鲁鲁五月天| 91精品国产91热久久久久福利 | 一本久久a久久精品亚洲| 久久天天躁狠狠躁夜夜av浪潮| 国产AV影片久久久久久| 亚洲中文久久精品无码ww16| 精品久久久无码中文字幕天天| 国产精品一久久香蕉产线看| 亚洲AV无码成人网站久久精品大| 性高湖久久久久久久久AAAAA| 久久久99精品成人片中文字幕| 久久精品国产亚洲麻豆| 91精品国产综合久久精品| 99久久99久久久精品齐齐| 久久久91精品国产一区二区三区| 99久久99这里只有免费费精品| 韩国三级大全久久网站| 亚洲午夜久久影院|