亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

OpenCASCADE Curve Length Calculation

系統 2060 0

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

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

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

wps_clip_image-27897

Figure 1.1 Length of Curve?

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

2. The Natural Parametric Equations

對于同一曲線若選擇的參數不同,則其表達式亦不同,故用坐標系討論曲線時,具有人為的性質,而曲線自身的弧長則曲線的不變量,它與坐標系的選取無關。因此,我們取曲線自身的弧長作為參數來研究曲線的內在性質。無論是理論探索還是實用研究,弧長參數化都有很重要的意義。?

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

wps_clip_image-1600

Figure 2.1 Arc length parameterization?

即曲線上點的坐標是以弧長為參數的函數:?

wps_clip_image-21590

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

wps_clip_image-2116

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

wps_clip_image-3606

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

給定曲線:?

wps_clip_image-25405

wps_clip_image-3494 是參數軸上的一個等距分劃;又令 wps_clip_image-14274 為曲線上與參數ui對應的點列,則可用下式計算弦長:?

wps_clip_image-2194

wps_clip_image-1829

Figure 2.2 Parametric Curve?

其中將參數軸等分越多,則求得的曲線的弧長越準確。?

3. The Gauss-Legendre Integration

上述累加弦長的計算方法應該是Newton-Cotes積分計算法,Newton-Cotes就是將積分區間等分,并取分點為求積節點。容易看出當積分區間較大時,直接使用Newton-Cotes公式所得積分近似值的精度是很難保證的。?

關于積分的數值算法有很多,其中Gauss-Legendre求積公式具有計算工作量小,所得近似值精確度高等優點,是一種高精度的求積公式。形式如下所示的求積公式:?

wps_clip_image-23833

代數精度達到了2n+1,則稱它為高斯型求積公式,并稱相應的求積節點x0, x1, ... xn為高斯點(Gauss Point)。Ak為求積系數。?

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

wps_clip_image-14378

Figure 3.1 Gauss Point for Gauss-Legendre Integration?

Gauss-Legendre積分用處之一就是根據曲線的自然參數方程計算曲線的弧長,代碼實現如下所示:?

      
        //
      
      
        =====================================================================


      
      
        //
      
      
        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());

}
      
    

根據上述求曲線弧長的代碼可知,只需要給定曲線及其求積區間,即可計算出此區間內曲線的弧長。因為采用直接求積計算,所得曲線的弧長值的精度還是很高的。?

高斯型求積公式是一種高精度的求積公式。在求積節點數相同,即計算工作量相近的情況下,利用高斯型求積公式往往可以獲得準確程序較高的積分近似值。但是,它必須在不等距的節點上計算被積函數的值,而且當節點數改變時,所用數據都要重新查表計算。?

4. Conclusion

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

在《計算方法》、《數值分析》等教材中都有關于求積分的算法,在OpenCASCADE中實現了Gauss-Legendre求積算法。Gauss-Legendre求積算法是一種高精度的求積方法。所以根據曲線的自然參數方程可知曲線弧長就是對曲線參數方程導數的求積分。所以使用高斯求積法可以得到曲線弧長較精確值。?

對數值積分的具體算法感興趣的朋友,可以參考《計算方法》、《數值分析》、《數值計算》等相關書籍。?

5. References

1. 朱心雄. 自由曲線曲面造型技術. 科學出版社. 2008?

2. 王仁宏, 李崇君, 朱春鋼. 計算幾何教程. 科學出版社. 2008?

3. 易大義, 沈云寶, 李有法. 計算方法. 浙江大學出版社. 2002?

4. 易大義, 陳道琦. 數值分析引論. 浙江大學出版社. 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

?

OpenCASCADE Curve Length Calculation


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 激情视频日本 | 久久99深爱久久99精品 | 8090成人午夜精品 | 91手机在线观看 | 国产福利视频深夜福利 | 国产毛片在线看 | 国产三级久久久精品麻豆三级 | 国产特黄| 手机看片精品高清国产日韩 | 日韩欧国产精品一区综合无码 | 91中文字幕在线一区 | 一级色 | 羞羞的视频网站 | 网色视频| 国产99视频精品免视看7 | 天堂va亚洲va欧美va国产 | 久久久久欧美精品观看 | 国内精品伊人久久久久7777人 | 亚洲第一激情 | 成年看片永远免费 | 日本猛妇色xxxxx在线 | 伊人影院久久 | 99热这里只有精品首页 | 亚洲精品亚洲一区二区 | 在线免费观看中文字幕 | 国产免费观看a大片的网站 国产免费精彩视频 | 日本无吗中文字幕免费婷婷 | 亚洲天天做日日摸天天做 | 欧美成人视 | 亚洲色吧 | 国产大片中文字幕 | 国产成人精品久久一区二区三区 | 二级片免费看 | 波多野结衣中文字幕一区 | 国产性生活 | 小说区图片区综合久久亚洲 | 国产精品品福利视频 | sihu国产精品永久免费 | 中文字幕 日韩有码 | 久久久久九九 | 国产成人精品亚洲日本在线 |