• <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 線面求交

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

            OpenCASCADE 線面求交

            eryar@163.com

            1 Introduction

            OpenCASCADE中幾何曲線與曲面求交使用類(lèi)GeomAPI_IntCS,是對(duì)類(lèi)IntCurveSurface_HInter的簡(jiǎn)單封裝。在IntCurveSurface_HInter中對(duì)曲線和曲面求交分為以下幾種類(lèi)型:

            • PerformConicSurf:二次曲線與曲面求交,其中又分為兩類(lèi):二次曲線與二次曲面求交和二次曲線和自由曲面求交;
            • InternalPerformCurveQuadric:自由曲線與二次曲面求交;
            • InternalPerform:自由曲線和自由曲面求交;

            本文主要介紹曲線與曲面求交的實(shí)現(xiàn)原理。

            2 二次曲線與二次曲面求交

            二次曲線與二次曲面求交使用IntAna_ConicQuad計(jì)算,主要思路是將曲線用參數(shù)方程表示,代入二次曲面的代數(shù)方程。二次曲面可以使用二次多項(xiàng)式表示,將二次曲線與二次曲面相交表示成一個(gè)多項(xiàng)式方程,使用math_DirectPolynomialRoots對(duì)多項(xiàng)式方程進(jìn)行求解。

            3 二次曲線與自由曲面求交

            二次曲線與自由曲面求交將曲面使用IntCurveSurface_Polyhedron在U,V上采樣離散得到grid網(wǎng)格。這個(gè)類(lèi)實(shí)現(xiàn)與IntPolyh_MaillageAffinage類(lèi)功能有重復(fù)。

            IntCurveSurface_ThePolygon多段線與Intf_InterferencePolygonPolyhedron 網(wǎng)格求交,根據(jù)多段線與網(wǎng)格求交情況,找到初始值,使用IntImp_IntCS計(jì)算精確值。與曲面求交的Marching算法類(lèi)似,使用迭代法去計(jì)算精確交點(diǎn)。迭代方程為IntImp_ZerCSParFunc,寫(xiě)出這個(gè)方程的Value()值計(jì)算和Derivatives()微分計(jì)算公式。

            將曲線與曲面求交問(wèn)題轉(zhuǎn)化為求曲面參數(shù)u,v和曲線參數(shù)w,使曲線C(w)曲面S(u,v)上的點(diǎn)重合,建立函數(shù)如下:

            F(u,v,w)=S(u,v) - C(w)

            所求的精確交點(diǎn)滿足方程F(u,v,w)=0,F(xiàn)為一含有三個(gè)坐標(biāo)的矢量,對(duì)應(yīng)函數(shù)Value():

            Fx(u,v,w)=Sx(u,v) - Cx(w) = 0

            Fy(u,v,w)=Sy(u,v) - Cy(w) = 0

            Fz(u,v,w)=Sz(u,v) - Cz(w) = 0

            上面為含有三個(gè)方程的以u(píng),v,w為變量的非線性方程組,精確交點(diǎn)就是非線性方程組的解。使用類(lèi)math_FunctionSetRoot應(yīng)用Newton-Raphson迭代法求解非線性方程組的解。使用Newton迭代法有個(gè)前提條件是要求非線性方程組一階可導(dǎo),即要寫(xiě)出Jacobian迭代矩陣,即上述函數(shù)Derivatives()的實(shí)現(xiàn)原理:

            4 自由曲線與二次曲面求交

            自由曲線與二次曲面求交IntCurveSurface_TheQuadCurvExactInter ,通過(guò)類(lèi)IntCurveSurface_TheQuadCurvFuncOfTheQuadCurvExactHInter建立二次曲面與曲線之間的函數(shù),是求解曲線上參數(shù)U的一元函數(shù)。

            5 自由曲線與自由曲面求交

            自由曲線與自由曲面求交和二維自由曲線求交類(lèi)似,采用的離散法。即將曲線通過(guò)采樣離散成多段線Polygon,將曲面采樣生成網(wǎng)格Polyhedron,通過(guò)類(lèi)IntCurveSurface_TheInterferenceOfHInter來(lái)計(jì)算多段線與網(wǎng)格的相交。

            包Intf主要用來(lái)計(jì)算二維多段線、三維多段線及網(wǎng)格的相交。根據(jù)離散計(jì)算的粗交點(diǎn),再根據(jù)類(lèi)IntCurveSurface_TheExactHInter使用迭代法求得精確交點(diǎn)。這個(gè)思想與曲面和曲面求交相同。

            6 求交結(jié)果

            曲線與曲面求交的結(jié)果主要也是保存在類(lèi)IntCurveSurface_Intersection對(duì)象中,這個(gè)類(lèi)的設(shè)計(jì)與二維曲線求交類(lèi)似,不夠直接。

            可以看到IntCurveSurface_Intersection這個(gè)類(lèi)的構(gòu)造函數(shù)是protected的,意思是不能直接使用,通過(guò)派生類(lèi)IntCurveSurface_HInter調(diào)用SetValues()函數(shù)將求交結(jié)果保存起來(lái)。求交結(jié)果為交點(diǎn)IntCurveSurface_IntersectionPoint和交線IntCurveSurface_IntersectionSegment。

            其中交點(diǎn)中IntCurveSurface_IntersectionPoint保存了三維坐標(biāo)點(diǎn),交點(diǎn)在曲面上的U,V參數(shù),交點(diǎn)在曲線上的參數(shù)U及相交狀態(tài)。交線主要是線現(xiàn)面和重合部分的幾何奇異情況數(shù)據(jù)。

            從類(lèi)圖上可以看出,這個(gè)套路同樣用到了HLR算法中,理解這個(gè)套路對(duì)理解HLR算法有幫助。

            7 Conclusion

            綜上所述,OpenCASCADE中將曲線與曲面求交根據(jù)曲線和曲面類(lèi)型的不同分別處理。二次曲線曲面求交依賴IntAna包,自由曲線和自由曲面求交使用離散法,最終實(shí)現(xiàn)算法與兩個(gè)曲面求交的Marching算法類(lèi)似,通過(guò)離散得到的精交點(diǎn),再代入迭代方程求得精確解。其中把曲線或曲面離散的采樣點(diǎn)沒(méi)有考慮曲線或曲面的曲率等,采樣點(diǎn)數(shù)量較大,會(huì)影響性能 。曲面采樣離散代碼與曲面求交中的有重復(fù)。從幾何求交類(lèi)中可以看到?jīng)]有容差的輸入,可以思考一下這個(gè)問(wèn)題。

            TKGeomAlgo中除了擬合算法外,大部分代碼主要就是線線求交、線面求交及面面求交算法。理解這些算法的實(shí)現(xiàn)原理,為Boolean算法的求交邏輯打下基礎(chǔ)。

             

            久久超碰97人人做人人爱| 国产精品久久久久一区二区三区| 国产成人精品综合久久久| 久久影院综合精品| 久久精品国产一区二区三区| 久久人与动人物a级毛片| 亚洲乱亚洲乱淫久久| 中文成人无码精品久久久不卡 | 91精品国产高清91久久久久久| 亚洲综合婷婷久久| 99久久精品免费看国产一区二区三区 | 久久乐国产精品亚洲综合| 久久精品天天中文字幕人妻| 久久综合九色综合久99| 久久精品国产亚洲麻豆| 亚洲国产精品无码久久98| 久久无码精品一区二区三区| 99久久精品影院老鸭窝| 久久精品国产亚洲AV忘忧草18| 91久久九九无码成人网站| 97r久久精品国产99国产精| 久久人妻少妇嫩草AV蜜桃| 久久精品女人天堂AV麻| 久久久久一区二区三区| 久久久久免费看成人影片| 色综合久久中文字幕无码| 国产69精品久久久久观看软件| 久久久久亚洲精品无码网址| 中文字幕亚洲综合久久2| 久久久久四虎国产精品| 国产精品美女久久久| 久久久久久亚洲精品成人| 国内精品伊人久久久久妇| 中文字幕精品久久久久人妻| 久久伊人色| 思思久久99热免费精品6| 久久久这里有精品中文字幕| 久久久久国产一级毛片高清板| 久久91这里精品国产2020| 欧美日韩精品久久久久| 婷婷久久五月天|