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

            PCurve - Curve on Surface

            Posted on 2014-03-15 12:07 eryar 閱讀(4475) 評論(0)  編輯 收藏 引用 所屬分類: 2.OpenCASCADE

            PCurve - Curve on Surface

            eryar@163.com

            Abstract. 本文通過給出曲面上曲線PCurve的定義來對OpenCascade中的Curve On Surface進行理解,并介紹了OpenCascade對應的類BRep_CurveOnSurface實現。通過Tcl腳本輸出的球的拓樸信息,分析PCurve的實際應用。

            Key words. OpenCascade, ACIS, PCurve, Curve on Surface, Parametric Surface

            1. Introduction

            不管是ACIS還是OpenCascade中都有PCurve這個概念,字面上來理解就是參數曲線(Parametric Curve)。在《基于ACIS的幾何造型技術與系統開發》中也看到這個概念,如下圖所示:

            wps_clip_image-32468

            Figure 1.1 PCurve Entity of ACIS

            “參數空間曲線是在參數曲面的雙參數空間中的二維樣條曲線。類pcurve是附加在參數曲面之間公共邊上的數據結構。”看完之后,對pcurve的概念還是不太清楚。本文給出PCurve的定義,并介紹PCurve在OpenCascade中的實現。根據定義可以對PCurve有個基本認識。

            2. Definition of PCurve

            PCurve為曲面上的曲線(Curve on Surface),其定義為:設曲面方程為

            wps_clip_image-10644令參數u,v又是另一參數t的函數,即

            wps_clip_image-19216

            將其代入曲面方程,得到:

            wps_clip_image-16341

            當t變化時,就得到曲面上的一條單參數曲線,稱為曲面上的曲線或簡稱曲面上曲線(Curve on Surface)。若以s表示曲面上曲線的弧長,則由復合函數的求導公式可得弧長微分公式:

            wps_clip_image-23179

            令:

            wps_clip_image-20813

            則有:

            wps_clip_image-17031

            在古典微分幾何中,上式稱為曲面的第一基本公式,E,F,G稱為第一基本量。在曲面上,每一點的第一基本量與參數化無關,在整張曲面上,第一基本量是參數u和v的連續函數。讀者注意,弧元ds是曲線的幾何不變量,與曲面的參數化無關。關于曲線曲面更多的信息,請參考《微分幾何》、《計算幾何》之類的書籍。本文主要為了理解曲面上曲線PCurve的概念及其在OpenCascade中的實現。

            目前對PCurve的應用還不太清楚,但是微分幾何中引入這個概念肯定是有他的意義,就像在程序設計中引入Pimpl(pointer to implementation)這個idiom。盡管引入Pimpl idiom會增加內存的額外開銷,甚至因為增加了間接層使程序代碼變得不易讀和不好調試,但是人們仍然樂于使用。站在API設計者的角度,它能隱藏信息、降低耦合、減少文件間的依賴,加快編譯速度、且可使生成的庫的兼容性更好等等,很多優點。所以在《Effective C++》和《API Design for C++》中,作者反復提到并使用Pimpl idiom。類比微分幾何引入的PCurve,先在此做上標記,如果有了新的理解再做分析。

            3. PCurve in OpenCascade

            在OpenCascade中對應于曲面上曲線PCurve的類是BRep_CurveOnSurface,其文檔中的說明為:Representation of a curve by a curve in the parametric space of a surface.

            結合定義上面這句話就好理解了。現摘抄部分代碼來分析PCurve的定義和使用:

            //=======================================================================
            //function : BRep_CurveOnSurface
            //=======================================================================
            BRep_CurveOnSurface::BRep_CurveOnSurface(const Handle(Geom2d_Curve)& PC, 
                                 
            const Handle(Geom_Surface)& S, 
                                 
            const TopLoc_Location& L) :
                   BRep_GCurve(L,PC
            ->FirstParameter(),PC->LastParameter()),
                   myPCurve(PC),
                   mySurface(S)
            {
            }
            //=======================================================================
            //function : D0
            //=======================================================================
            void BRep_CurveOnSurface::D0(const Standard_Real U, gp_Pnt& P) const
            {
              
            // shoud be D0 NYI
              gp_Pnt2d P2d = myPCurve->Value(U);
              P 
            = mySurface->Value(P2d.X(),P2d.Y());
              P.Transform(myLocation.Transformation());
            }

            從其構造函數來看,要生成一個PCurve必須有曲線PC和曲面S及位置L。

            從求PCurve的零次微分的函數D0可以看出,只需要一個參數U就可以計算出曲面上的點P。結合前面介紹的PCurve的定義,不難理解這段代碼的意義。下面通過分析球面的拓樸結構,看看PCurve的應用。

            wps_clip_image-12231

            Figure 3.1 Sphere in Draw Test Harness

            4. Code Demo

            下面的程序生成一個球,再把其拓樸結構顯示出來,可以看到其中就有PCurve的信息。使用Tcl腳本程序示例如下:

            pload ALL
            psphere s 
            1.0
            dump s

            以上Tcl腳本在OpenCascade的Draw Test Harness中運行結果如下所示:

            wps_clip_image-8437

            Figure 4.1 PCurve in Sphere

            由上圖可知,球的Edge5由一個PCurve來表示。曲面上曲線PCurve在拓樸結構輸出的信息位于Curve2ds中,曲面的幾何數據位于surfaces中,分別如下圖所示:

            wps_clip_image-28559

            Figure 4.2 PCurves of Sphere

            PCurve編號為4的是條直線,起點(0,-1.570796),方向為(1,0)即X方向。

            wps_clip_image-30340

            Figure 4.3 Surfaces of Sphere

            曲面編號為1的是一個球面,圓心(0,0,0),半徑為1,坐標系與世界坐標系相同。

            結合PCurve 4和曲面1及PCurve的參數范圍,可以計算出曲面上的一條曲線上的坐標值。不過上面球面的例子中的Edge是degenerated邊,退化成一個點了。

            由上面球的拓樸信息可知,在理解了參數曲線曲面(有向性)、奇點(Singular Point),參數曲面的奇異性(Singularity)、曲面上曲線(PCurve)等概念后,OpenCascade的拓樸結構就可以基本理解了。

            5. Conclusions

            本文通過給出曲面上曲線PCurve的定義來對OpenCascade中的Curve On Surface進行理解,并介紹了OpenCascade對應的類BRep_CurveOnSurface實現。

            通過Tcl腳本輸出的球的拓樸信息,看看PCurve的實際應用,從中可以看出使用Tcl的簡單與便捷。

            6. References

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

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

            3. 陳維桓,微分幾何,北京大學出版社,2006

            4. 詹海生 李廣鑫 馬志欣,基于ACIS的幾何造型技術與系統開發,清華大學出版社,2002

            一本色道久久综合| 久久高潮一级毛片免费| 深夜久久AAAAA级毛片免费看 | 69国产成人综合久久精品| 亚州日韩精品专区久久久| 精品久久久久久99人妻| 久久精品国产影库免费看| 精品综合久久久久久97超人| 久久久久久亚洲精品成人| 婷婷五月深深久久精品| 久久久久亚洲AV无码麻豆| 中文字幕人妻色偷偷久久 | 一级女性全黄久久生活片免费 | 99久久免费国产精精品| 丁香狠狠色婷婷久久综合| 久久精品国产一区二区三区日韩| 国产国产成人精品久久| 草草久久久无码国产专区| 国产精品免费久久| 伊人热热久久原色播放www| 99久久国产精品免费一区二区| 无码人妻少妇久久中文字幕蜜桃| 少妇人妻88久久中文字幕| 亚洲综合精品香蕉久久网97| 久久se精品一区二区影院| 模特私拍国产精品久久| 久久国产色AV免费看| 国产香蕉97碰碰久久人人| 久久99九九国产免费看小说| 久久久无码人妻精品无码| 国产福利电影一区二区三区久久久久成人精品综合 | 久久久久久免费一区二区三区| 66精品综合久久久久久久| 久久综合色老色| 99久久国产热无码精品免费| 久久久久人妻一区精品果冻| 亚洲精品无码成人片久久| 国产精品成人99久久久久 | 久久国产精品99久久久久久老狼| 久久精品国产亚洲一区二区三区 | 久久久精品人妻一区二区三区蜜桃|