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

            OpenCASCADE 曲線(xiàn)求交

            Posted on 2023-12-02 12:20 eryar 閱讀(1722) 評(píng)論(0)  編輯 收藏 引用 所屬分類(lèi): 2.OpenCASCADE

            OpenCASCADE 曲線(xiàn)求交

            eryar@163.com

            1 Introduction

            OpenCASCADE中提供了二維幾何曲線(xiàn)的求交類(lèi)Geom2dAPI_InterCurveCurve,對(duì)應(yīng)到三維幾何只提供了GeomAPI_IntCS, GeomAPI_IntSS,沒(méi)有提供幾何的GeomAPI_IntCC求交類(lèi)。這些幾何求交一般使用的是數(shù)值算法,即解方程。對(duì)于兩條幾何曲線(xiàn)P(u1), Q(u2),求交就是解P(u1) - Q(u2) = 0這個(gè)方程。為什么對(duì)于三維幾何曲線(xiàn)沒(méi)有提供數(shù)值算法?

            對(duì)于拓樸邊提供了求交算法IntTools_EdgeEdge,這個(gè)類(lèi)是使用類(lèi)似于曲面求交的離散網(wǎng)格法,使用了離散包圍盒法。

            基于包圍合盒的算法是個(gè)遞歸算法,算法思路:

            1. 1) 檢查兩條邊在參數(shù)范圍內(nèi)的包圍盒,若空間干涉,則進(jìn)行下一步;否則退出本次判斷;
            2. 2) 找出兩條邊包圍盒的公共部分對(duì)應(yīng)的參數(shù),若沒(méi)找到,則退出本次判斷;
            3. 3) 并將第一條邊在參數(shù)范圍內(nèi)分割成2或3部分,執(zhí)行第一步;
            4. 4) 退出條件:沒(méi)有相交或找到相交的參數(shù)值;

            第一次是分別分成2部分:

            在遞歸函數(shù)FindSolutions()中,只去對(duì)第一條邊進(jìn)行參數(shù)分割成3部分:

            2 輔助函數(shù)

            第一個(gè)輔助函數(shù)是FindParameters(),用來(lái)更新第二條邊在第一條邊的的包圍盒中的參數(shù)范圍,使用這個(gè)參數(shù)范圍更新包圍盒。

            第二個(gè)輔助函數(shù)是CheckCoincidence(),用來(lái)檢測(cè)兩段邊是否重合。第一步是快速計(jì)算,對(duì)邊采樣10個(gè)點(diǎn),若通過(guò)初步粗檢測(cè),后面再深入計(jì)算。這些算法都不太高效。

            第三個(gè)輔助函數(shù)是IsIntersection()用來(lái)判斷兩邊條在參數(shù)范圍內(nèi)是否相交。

            3 測(cè)試

            將兩條邊求交過(guò)程中的包圍盒顯示出來(lái),方便查看理解算法。先測(cè)試兩個(gè)圓之間的相交:

            其中第一條邊是綠色的圓,求交過(guò)程中的包圍盒也用綠色表示;第二條邊是紅色的圓,求交過(guò)程中的包圍盒也用紅色表示。因?yàn)閳A是閉合的,第一次都分割成2部分。將上面交點(diǎn)處理放大:

            后面都是將第一條邊分割成3部分,然后分別用這3部分的包圍盒去找與第二條邊相交的參數(shù)范圍,再更新第二條邊的包圍盒。繼續(xù)放大上面交點(diǎn)處:

            發(fā)現(xiàn)對(duì)于兩個(gè)圓的求交,執(zhí)行了100次,效率不高。又用兩個(gè)B樣條曲線(xiàn)求交來(lái)測(cè)試:

            發(fā)現(xiàn)對(duì)于B樣條曲線(xiàn)求交速度較快。

            4 Conclusion

            曲線(xiàn)求交需要考慮重合部分,opencascae中沒(méi)有使用數(shù)值算法來(lái)計(jì)算,而是采用基于包圍盒的算法來(lái)處理。這種算法一般情況下可以快速找到求交解,有時(shí)遞歸較深,對(duì)于基本曲線(xiàn)可以像曲面求交一樣分類(lèi)處理以提高性能。opencascade中對(duì)于三維曲線(xiàn)求交算法性能還有優(yōu)化空間。

             

            武侠古典久久婷婷狼人伊人| 久久99热只有频精品8| 久久亚洲AV无码西西人体| 亚洲综合久久夜AV | 亚洲精品乱码久久久久久久久久久久| 91精品国产乱码久久久久久| 久久99久久无码毛片一区二区| 亚洲欧美伊人久久综合一区二区 | 欧美激情精品久久久久久| 国内精品久久久久影院薰衣草 | 伊人久久综合热线大杳蕉下载| 国产免费久久精品99re丫y| 成人国内精品久久久久一区| 亚洲国产成人久久综合区| 久久精品a亚洲国产v高清不卡| 久久免费香蕉视频| 精品久久久久久亚洲| 伊人久久大香线蕉av不变影院| 国内精品久久久久久久涩爱| 日韩精品久久无码中文字幕| 亚洲午夜福利精品久久| 国产精自产拍久久久久久蜜 | 久久久艹| 一级做a爱片久久毛片| 久久精品国产亚洲AV无码娇色 | 一本综合久久国产二区| 国产精品gz久久久| 精品国产青草久久久久福利| 欧美激情精品久久久久| 国产精品久久久久久福利69堂| 亚洲中文字幕无码一久久区| 中文字幕精品无码久久久久久3D日动漫 | 一本久久a久久精品亚洲| 日产久久强奸免费的看| 亚洲国产精品无码久久九九| 久久五月精品中文字幕| 久久亚洲AV无码西西人体| 内射无码专区久久亚洲| 国产成人精品综合久久久久| 亚洲∧v久久久无码精品| 久久久久人妻精品一区|