• <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 Curve Length Calculation

            Posted on 2014-08-25 21:31 eryar 閱讀(3895) 評論(2)  編輯 收藏 引用 所屬分類: 2.OpenCASCADE

            OpenCASCADE Curve Length Calculation

            eryar@163.com

            Abstract. The natural parametric equations of a curve are parametric equations that represent the curve in terms of a coordinate-independent parameter, generally arc length s, instead of an arbitray variable like t or u. According to the natural equations, the curve length is the integration of the curve parametric equation’s derivation. So the core algorithm for curve length calculation is the numerical integration method. OpenCASCADE use Gauss-Legendre to calculate the integration for single variable and multiple variables. Because of curve in OpenCASCADE is single variable function, so can use the Gauss-Legendre to calculate the arc length for the curve.

            Key Words. OpenCASCADE, The Gauss-Legendre Integration, Parametric Curve, 

                      The Natural Parametric Equations,  Arc Length,

             

            1. Introduction

            對于同一條曲線,選擇的參數(shù)不同其表達(dá)形式也不盡相同。而曲線自身的弧長是曲線本身的不變量,它與坐標(biāo)系的選擇無關(guān),因此取曲線的弧長作為參數(shù)來研究曲線具有非常重要的意義。以曲線弧長作為曲線方程的參數(shù),這樣的方程稱為曲線的自然參數(shù)方程。由曲線的自然參數(shù)方程可知曲線的弧長是曲線參數(shù)方程導(dǎo)數(shù)的積分。所以計(jì)算曲線弧長的核心算法成了計(jì)算函數(shù)的積分了。

            OpenCASCADE中數(shù)學(xué)計(jì)算庫TKMath中有一種高精度計(jì)算積分的算法Gauss-Legendre積分法,可對單變量和多變量的函數(shù)進(jìn)行積分計(jì)算。由于OpenCASCADE中曲線是單變量的參數(shù)方程,所以可以用Gauss-Legendre來計(jì)算積分,進(jìn)而得到曲線的弧長。如下圖所示:

            wps_clip_image-27897

            Figure 1.1 Length of Curve

            本文對曲線的自然參數(shù)方程的概念進(jìn)行說明,并簡要介紹Gauss-Legendre算法及其在OpenCASCADE中的應(yīng)用,即求曲線的弧長。

            2. The Natural Parametric Equations

            對于同一曲線若選擇的參數(shù)不同,則其表達(dá)式亦不同,故用坐標(biāo)系討論曲線時(shí),具有人為的性質(zhì),而曲線自身的弧長則曲線的不變量,它與坐標(biāo)系的選取無關(guān)。因此,我們?nèi)∏€自身的弧長作為參數(shù)來研究曲線的內(nèi)在性質(zhì)。無論是理論探索還是實(shí)用研究,弧長參數(shù)化都有很重要的意義。

            給定空間曲線r,在其上任取一點(diǎn)P0(x0, y0, z0)作為計(jì)算弧長的起點(diǎn)。應(yīng)用弧長積分公式,即可計(jì)算該曲線上任意點(diǎn)P(x,y,z)到P0之間的弧長。由此,曲線上點(diǎn)的位置與該點(diǎn)處的弧長是一一對應(yīng)的,如下圖所示:

            wps_clip_image-1600

            Figure 2.1 Arc length parameterization

            即曲線上點(diǎn)的坐標(biāo)是以弧長為參數(shù)的函數(shù):

            wps_clip_image-21590

            由其矢量方程可知,曲線是弧長為參數(shù)的矢函數(shù),我們將其稱為弧長參數(shù)化(Arc length parameterization)。弧長稱為自然參數(shù)(Natural Parameter),曲線方程稱為自然參數(shù)方程(Natural Parametric Equations)。現(xiàn)討論曲線的自然參數(shù)方程與參數(shù)方程的聯(lián)系:已知曲線的矢量方程為:

            wps_clip_image-2116

            則弧長的微分和積分公式分別為:

            wps_clip_image-3606s(u)即為與參數(shù)u0和u1對應(yīng)的兩點(diǎn)P0和P之間的弧長。弧長參數(shù)化是一類重要的概念,但是如果用上式來計(jì)算弧長比較繁瑣,可以通過累加弦長方法來近似計(jì)算。

            給定曲線:

            wps_clip_image-25405

            wps_clip_image-3494是參數(shù)軸上的一個(gè)等距分劃;又令wps_clip_image-14274為曲線上與參數(shù)ui對應(yīng)的點(diǎn)列,則可用下式計(jì)算弦長:

            wps_clip_image-2194

            wps_clip_image-1829

            Figure 2.2 Parametric Curve

            其中將參數(shù)軸等分越多,則求得的曲線的弧長越準(zhǔn)確。


            3. The Gauss-Legendre Integration

            上述累加弦長的計(jì)算方法應(yīng)該是Newton-Cotes積分計(jì)算法,Newton-Cotes就是將積分區(qū)間等分,并取分點(diǎn)為求積節(jié)點(diǎn)。容易看出當(dāng)積分區(qū)間較大時(shí),直接使用Newton-Cotes公式所得積分近似值的精度是很難保證的。

            關(guān)于積分的數(shù)值算法有很多,其中Gauss-Legendre求積公式具有計(jì)算工作量小,所得近似值精確度高等優(yōu)點(diǎn),是一種高精度的求積公式。形式如下所示的求積公式:

            wps_clip_image-23833

            代數(shù)精度達(dá)到了2n+1,則稱它為高斯型求積公式,并稱相應(yīng)的求積節(jié)點(diǎn)x0, x1, ... xn為高斯點(diǎn)(Gauss Point)。Ak為求積系數(shù)。

            OpenCASCADE的核心模塊的數(shù)學(xué)庫TKMath中有Gauss-Legendre求積算法,可用來對單變量和多變量的函數(shù)進(jìn)行積分計(jì)算,對應(yīng)的類分別為:math_GaussSingleIntegration和math_GaussMultipleIntegration。計(jì)算所需的高斯點(diǎn)及系數(shù)通過查表的方式取得,數(shù)據(jù)以數(shù)組的形式在文件math.cxx中列舉出,如下圖所示:

            wps_clip_image-14378

            Figure 3.1 Gauss Point for Gauss-Legendre Integration

            Gauss-Legendre積分用處之一就是根據(jù)曲線的自然參數(shù)方程計(jì)算曲線的弧長,代碼實(shí)現(xiàn)如下所示:

             

            //=====================================================================
            //function : Length
            //purpose  : 3d with parameters
            //=====================================================================

            Standard_Real CPnts_AbscissaPoint::Length(
            const Adaptor3d_Curve& C,
                                  
            const Standard_Real U1,
                                  
            const Standard_Real U2) 
            {
              CPnts_MyGaussFunction FG;
            //POP pout WNT
              CPnts_RealFunction rf = f3d;
              FG.Init(rf,(Standard_Address)
            &C);
            //  FG.Init(f3d,(Standard_Address)&C);
              math_GaussSingleIntegration TheLength(FG, U1, U2, order(C));
              
            if (!TheLength.IsDone()) {
                Standard_ConstructionError::Raise();
              }
              
            return Abs(TheLength.Value());
            }

            根據(jù)上述求曲線弧長的代碼可知,只需要給定曲線及其求積區(qū)間,即可計(jì)算出此區(qū)間內(nèi)曲線的弧長。因?yàn)椴捎弥苯忧蠓e計(jì)算,所得曲線的弧長值的精度還是很高的。

            高斯型求積公式是一種高精度的求積公式。在求積節(jié)點(diǎn)數(shù)相同,即計(jì)算工作量相近的情況下,利用高斯型求積公式往往可以獲得準(zhǔn)確程序較高的積分近似值。但是,它必須在不等距的節(jié)點(diǎn)上計(jì)算被積函數(shù)的值,而且當(dāng)節(jié)點(diǎn)數(shù)改變時(shí),所用數(shù)據(jù)都要重新查表計(jì)算。


            4. Conclusion

            曲線自身的弧長是曲線本身的不變量,它與坐標(biāo)系的選擇無關(guān),因此取曲線的弧長作為參數(shù)來研究曲線具有非常重要的意義。以曲線弧長作為曲線方程的參數(shù),這樣的方程稱為曲線的自然參數(shù)方程。由曲線的自然參數(shù)方程可知曲線的弧長是曲線參數(shù)方程導(dǎo)數(shù)的積分。所以計(jì)算曲線弧長的核心算法成了計(jì)算函數(shù)的積分了。

            在《計(jì)算方法》、《數(shù)值分析》等教材中都有關(guān)于求積分的算法,在OpenCASCADE中實(shí)現(xiàn)了Gauss-Legendre求積算法。Gauss-Legendre求積算法是一種高精度的求積方法。所以根據(jù)曲線的自然參數(shù)方程可知曲線弧長就是對曲線參數(shù)方程導(dǎo)數(shù)的求積分。所以使用高斯求積法可以得到曲線弧長較精確值。

            對數(shù)值積分的具體算法感興趣的朋友,可以參考《計(jì)算方法》、《數(shù)值分析》、《數(shù)值計(jì)算》等相關(guān)書籍。


            5. References

            1. 朱心雄. 自由曲線曲面造型技術(shù). 科學(xué)出版社. 2008

            2. 王仁宏, 李崇君, 朱春鋼. 計(jì)算幾何教程. 科學(xué)出版社. 2008

            3. 易大義, 沈云寶, 李有法. 計(jì)算方法. 浙江大學(xué)出版社. 2002

            4. 易大義, 陳道琦. 數(shù)值分析引論. 浙江大學(xué)出版社. 1998

            5. http://mathworld.wolfram.com/NaturalParametricEquations.html

            6. http://mathworld.wolfram.com/Legendre-GaussQuadrature.html

            7. http://en.wikipedia.org/wiki/Gaussian_quadrature

            8. http://pomax.github.io/bezierinfo/legendre-gauss.html

             

            Feedback

            # re: OpenCASCADE Curve Length Calculation  回復(fù)  更多評論   

            2014-08-26 09:07 by OpenCASCADE-3D
            錯(cuò)誤真不少啊

            # re: OpenCASCADE Curve Length Calculation  回復(fù)  更多評論   

            2014-08-26 09:30 by eryar
            @OpenCASCADE-3D
            什么錯(cuò)誤?
            日韩精品久久久久久久电影| 久久毛片一区二区| 国产成人99久久亚洲综合精品| 久久精品国产99久久久香蕉| 久久综合色老色| 久久综合九色综合欧美狠狠| 日韩十八禁一区二区久久| 漂亮人妻被黑人久久精品| 国产精品成人无码久久久久久| 色妞色综合久久夜夜| 99久久人人爽亚洲精品美女| 久久人人爽人人人人片av| 久久精品免费一区二区三区| 亚洲欧美日韩中文久久| 国产精品亚洲美女久久久| 久久天天躁狠狠躁夜夜avapp| 狠狠久久综合| 久久亚洲国产欧洲精品一| 无码人妻精品一区二区三区久久| 久久综合视频网站| 精品久久一区二区三区| 久久人人爽人人爽人人片AV不| 日本国产精品久久| 91亚洲国产成人久久精品| 精品久久久久久中文字幕人妻最新| 精品综合久久久久久97| 免费精品久久久久久中文字幕| 国产激情久久久久影院老熟女| 精品久久久噜噜噜久久久| 久久永久免费人妻精品下载| 18岁日韩内射颜射午夜久久成人 | 亚洲国产欧美国产综合久久| 久久av高潮av无码av喷吹| 久久电影网一区| 久久综合丁香激情久久| 国产精品久久国产精品99盘| 久久国产精品久久久| 青青草原综合久久| 精品久久久久久无码人妻蜜桃| 亚洲国产成人久久综合碰碰动漫3d| 欧美精品一本久久男人的天堂|