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

OpenCASCADE Rational Bezier Curves

系統(tǒng) 1924 0
OpenCASCADE Rational Bezier Curves

eryar@163.com

Abstract. Although polynomials offer many advantages, there exist a number of important curve and surface types which cannot be represented precisely using polynomials, e.g., circles, ellipses, hyperbolas, cylinders, cones, spheres, etc. So we introduce the concepts of rational curves and homogeneous coordinates to solve the problem. To understand rational curves in a homogenous coordinate system is more straightforward. If you define irrational Bezier curves in 4D space and then project them back into 3D space, you obtain rational curves.?

Key Words . OpenCASCADE, Rational Curves, Homogenous Coordinate, Geom_BezierCurve

1. Introduction

由于采用了Berstein基函數(shù),Bezier曲線具有許多良好的性質(zhì)。但是作為多項(xiàng)式曲線,在表示一些“基本”曲線時(shí)還是有所不足。例如半徑為1的圓弧曲線,其參數(shù)方程可表示為:?

wps_clip_image-13132

圓弧曲線并不是多項(xiàng)式曲線,所以Bezier曲線不可能精確表示像圓弧這樣的簡(jiǎn)單曲線。經(jīng)過(guò)參數(shù)變換t=tan(u/2),可以把上面的圓弧表示為:?

wps_clip_image-3401

這說(shuō)明可以用有理多項(xiàng)式來(lái)精確表示圓弧曲線。事實(shí)上,有很多重要的曲線、曲面類(lèi)型,如圓、橢圓、雙曲線、圓柱面、圓錐面、球面等,都無(wú)法用Bezier來(lái)精確表示。由經(jīng)典數(shù)學(xué)可知,包括圓在內(nèi)的所有二次曲線都可以用有理函數(shù)(即兩個(gè)多項(xiàng)式相除)來(lái)表示,即如下形式的有理函數(shù)來(lái)表示:、?

wps_clip_image-9943

本文主要從齊次坐標(biāo)的表示法上來(lái)理解有理Bezier曲線的概念,及結(jié)合OpenCASCADE中的Bezier曲線來(lái)理解權(quán)因子的幾何意義。

2. Homogeneous Coordinates

在《計(jì)算幾何》、《計(jì)算機(jī)圖形學(xué)》或《計(jì)算機(jī)輔助幾何造型技術(shù)》等書(shū)中,都會(huì)給出有理曲線的齊次坐標(biāo)(Homogeneous Coordinates)表示法,藉此來(lái)從幾何上直觀理解有理曲線的意義。剛開(kāi)始接觸齊次坐標(biāo)的概念時(shí),很不能理解,原來(lái)這是射影幾何中的一些概念。對(duì)此概念陌生的讀者可以參考丘維聲的《解析幾何》,其中對(duì)齊次坐標(biāo)、交比等概念作了詳細(xì)解釋。?

現(xiàn)在我們來(lái)說(shuō)明齊次坐標(biāo)與仿射坐標(biāo)的關(guān)系。設(shè)點(diǎn)M是平面 wps_clip_image-30986 上的通常點(diǎn),(x,y)是它對(duì)于標(biāo)架[O1:e1,e2]的仿射坐標(biāo),則 wps_clip_image-9613 對(duì)于標(biāo)架[O2:e1,e2,e3]的坐標(biāo)就是(x,y,1),于是點(diǎn)M的齊次坐標(biāo)(x1,x2,x3)與(x,y,1)成比例:?

wps_clip_image-30625

其中λ≠0.從而得:?

wps_clip_image-30653

因此,通常點(diǎn)的齊次坐標(biāo)和仿射坐標(biāo)可以互相確定。有時(shí)我們把通常點(diǎn)M的仿射坐標(biāo)(x,y)稱(chēng)為它的非齊次坐標(biāo)。?

從四維Euclidean空間的齊次坐標(biāo)到三維Euclidean空間的中心投影變換?

wps_clip_image-23761

這里三維空間的點(diǎn)[X,Y,Z]稱(chēng)為四維空間點(diǎn)[X,Y,Z,ω]的透視像,就是四維空間點(diǎn)[X,Y,Z,ω]在ω=1超平面上的中心投影,其投影中心就是四維空間的坐標(biāo)原點(diǎn)。因此四維空間點(diǎn)[X,Y,Z,ω]與三維空間點(diǎn)[X,Y,Z]被認(rèn)為是同一點(diǎn)。事實(shí)上,對(duì)任意X,Y,Z,ω1,ω2,其中ω1≠ω2,有:?

wps_clip_image-25607

由上可知:一個(gè)點(diǎn)的齊次坐標(biāo)不是唯一的。

在CAGD中描述形狀的空間曲線與曲面都要用到三維空間。但是人類(lèi)思維能力的限制,我們無(wú)法用圖形或模型來(lái)表達(dá)從四維空間到三維空間的投影變換關(guān)系。為了理解這種投影變換的幾何關(guān)系,我們可以降低一維,考察從三維到二維空間的投影變換,如下圖所示為三維空間的齊次坐標(biāo)到二維空間的投影。?

wps_clip_image-14079

Figure 2.1 A representation of Euclidean points to homogeneous form?

關(guān)于中心投影、射影平面、齊次坐標(biāo)、變比等概念,可參考丘維聲的《解析幾何》一書(shū)。

3. Bezier Curve Perspective Map

在理解射影變換(Perspective Map)及齊次坐標(biāo)的概念后,可以構(gòu)造有理Bezier曲線的幾何模型。現(xiàn)假設(shè)給定控制點(diǎn){Pi},權(quán)因子{ωi},我們構(gòu)造帶權(quán)控制點(diǎn):?

wps_clip_image-8316

然后在四維空間中定義非有理(即多項(xiàng)式)Bezier曲線:?

wps_clip_image-10313

將帶權(quán)控制點(diǎn)代入上式詳細(xì)寫(xiě)出每一項(xiàng)得:?

wps_clip_image-16840

以原點(diǎn)為中心,將四維的Bezier曲線投影到ω=1的三維超平面上,所得到的投影曲線為:?

wps_clip_image-10635

消去λ即得到有理Beizer曲線:?

wps_clip_image-16557 ?

4. The Effects of Weighting Factors

有理Bezier曲線除了具有類(lèi)似于Bezier曲線的性質(zhì)外,還增加了關(guān)于“權(quán)因子”(Weights)的調(diào)整性質(zhì)。?

4.1 可退化性

當(dāng)權(quán)因子ωi=ω≠0時(shí)(i=0,1,...,n),有理Bezier曲線退化成Bezier曲線。因?yàn)棣叵嗤杂欣鞡ezier曲線公式中的ω可以消去,又根據(jù)Bernstein基函數(shù)的規(guī)范性即得。使用OpenCASCADE的Tcl腳本測(cè)試效果如下圖所示:?

wps_clip_image-3697

Figure 4.1 Degeneracy of Rational Bezier Curve?

相應(yīng)的Tcl腳本如下所示:?

      
        #
      
      
        

#    Copyright (c) 2014 eryar All Rights Reserved.

#

#        File    : degenerate.tcl

#        Author  : eryar@163.com

#        Date    : 2014-09-19 18:10

#        Version : 1.0v

#

#    Description : Demonstrate the degeneracy of Rational Bezier Curve.

#
      
      
        

pload ALL




      
      
        #
      
      
         Bezier Curve with Weighted Poles: 

# {P(1,0), w(1)}, {P(1,1), w(1)}, {P{0,1}, w(1)}
      
      

2dbeziercurve bc1 
      
        3
      
      
        1
      
      
        0
      
      
        1
      
      
        1
      
      
        1
      
      
        1
      
      
        0
      
      
        1
      
      
        1
      
      
        



v2d

2dfit




      
      
        #
      
      
         Bezier Curve without weights:
      
      

2dbeziercurve bc2 
      
        3
      
      
        1
      
      
        0
      
      
        1
      
      
        1
      
      
        0
      
      
        1
      
      
        

mkedge e1 bc2 
      
      
        0
      
      
        1
      
      
        



vdisplay e1

vtop

vfit
      
    

上述Tcl腳本中先把權(quán)值相同的有理Bezier曲線顯示在二維窗口中,再將不帶權(quán)的Bezier曲線(控制節(jié)點(diǎn)與帶權(quán)值相同),先生成Edge,再在三維窗口中顯示出來(lái)。由圖可知,當(dāng)有理Bezier曲線的權(quán)值相同時(shí),即退化為非有理的Bezier曲線。

4.2 當(dāng)ω0≠0,ωn≠0時(shí),對(duì)任意u∈[0,1],

wps_clip_image-12378

只需證明u∈[0,1]的情況,?

wps_clip_image-6898

這說(shuō)明只要ω0≠0,ωn≠0,有理Bezier曲線R(u)一定通過(guò)首末控制頂點(diǎn)P0和Pn。對(duì)u∈[0,1],當(dāng)ωi越大,R(u)越趨向于Pi;反之,當(dāng)ωi越小,R(u)越遠(yuǎn)離Pi。

可以看出ωi→∞的極限狀態(tài)時(shí),R(u)即過(guò)通過(guò)Pi。使用OpenCASCADE的Tcl腳本來(lái)驗(yàn)證得到如下圖所示結(jié)果:?

wps_clip_image-21596

Figure 4.2 Rational Bezier Curve with different Weights?

相應(yīng)的Tcl腳本如下所示:?

      
        #
      
      
        

#    Copyright (c) 2014 eryar All Rights Reserved.

#

#        File    : degenerate.tcl

#        Author  : eryar@163.com

#        Date    : 2014-09-19 18:10

#        Version : 1.0v

#

#    Description : Demonstrate the Rational Bezier Curve with different weights.

#
      
      
        

pload ALL



set w1 
      
      
        0.1
      
      
        

set w2 
      
      
        0.5
      
      
        

set w3 
      
      
        1.0
      
      
        

set w4 
      
      
        2.0
      
      
        

set w5 
      
      
        5.0
      
      
        



set u 
      
      
        0.5
      
      
        #
      
      
         4 Bezier Curve with defferent Weighted Poles: 

# {P(1,0), w(1)}, {P(1,1), w($w)}, {P{0,1}, w(1)}
      
      

2dbeziercurve bc1 
      
        3
      
      
        1
      
      
        0
      
      
        1
      
      
        1
      
      
        1
      
      
        $w1
      
      
        0
      
      
        1
      
      
        1
      
      
        

2dbeziercurve bc2 
      
      
        3
      
      
        1
      
      
        0
      
      
        1
      
      
        1
      
      
        1
      
      
        $w2
      
      
        0
      
      
        1
      
      
        1
      
      
        

2dbeziercurve bc3 
      
      
        3
      
      
        1
      
      
        0
      
      
        1
      
      
        1
      
      
        1
      
      
        $w3
      
      
        0
      
      
        1
      
      
        1
      
      
        

2dbeziercurve bc4 
      
      
        3
      
      
        1
      
      
        0
      
      
        1
      
      
        1
      
      
        1
      
      
        $w4
      
      
        0
      
      
        1
      
      
        1
      
      
        

2dbeziercurve bc5 
      
      
        3
      
      
        1
      
      
        0
      
      
        1
      
      
        1
      
      
        1
      
      
        $w5
      
      
        0
      
      
        1
      
      
        1
      
      
        #
      
      
         mark weight factor.
      
      

2dcvalue bc1 
      
        $u
      
      
         x1 y1

2dcvalue bc2 
      
      
        $u
      
      
         x2 y2

2dcvalue bc3 
      
      
        $u
      
      
         x3 y3

2dcvalue bc4 
      
      
        $u
      
      
         x4 y4

2dcvalue bc5 
      
      
        $u
      
      
         x5 y5



dtext x1 y1 w1
      
      =
      
        $w1
      
      
        

dtext x2 y2 w2
      
      =
      
        $w2
      
      
        

dtext x3 y3 w3
      
      =
      
        $w3
      
      
        

dtext x4 y4 w4
      
      =
      
        $w4
      
      
        

dtext x5 y5 w5
      
      =
      
        $w5
      
      
        



v2d

2dfit
      
    

上述代碼顯示了一條三個(gè)控制頂點(diǎn)2次的有理Bezier曲線當(dāng)控制頂點(diǎn)P(1,1)對(duì)應(yīng)的權(quán)因子ω變化時(shí)的不同的情況。當(dāng)ω增大時(shí),導(dǎo)致曲線被拉向控制頂點(diǎn);當(dāng)ω減小時(shí),導(dǎo)致曲線被推離控制頂點(diǎn)。當(dāng)ω趨于無(wú)窮大時(shí),此時(shí)曲線將退化為與控制頂點(diǎn)重合的一個(gè)點(diǎn)。?

5. Bezier Geometry Curve

OpenCASCADE中的Bezier曲線Geom_BezierCurve本身就是有理Bezier曲線,且都是基于BSplCLib包實(shí)現(xiàn)的。即有理Beizer曲線也是NURBS曲線的特例。如下圖所示:?

wps_clip_image-15867

當(dāng)構(gòu)造函數(shù)只有控制頂點(diǎn)時(shí),將會(huì)構(gòu)造一個(gè)非有理的Beizer曲線。當(dāng)構(gòu)造函數(shù)將控制頂點(diǎn)對(duì)應(yīng)的權(quán)因子也設(shè)置進(jìn)來(lái)時(shí),將會(huì)構(gòu)造一個(gè)有理Bezier曲線。當(dāng)構(gòu)造有理Beizer曲線時(shí),若控制頂點(diǎn)的所有權(quán)值都相同,則認(rèn)為是非有理Bezier曲線,即退化性質(zhì)的體現(xiàn)。?

6. Conclusion

綜上所述,由齊次坐標(biāo)表示法來(lái)理解有理Bezier曲線的概念還是比較直觀的,進(jìn)而可以去理解NURBS曲線曲面的概念。?

有理Beizer曲線與非有理Bezier曲線的區(qū)別就是權(quán)因子。若控制點(diǎn)對(duì)應(yīng)的權(quán)因子都相同時(shí),有理Beizer曲線退化為非有理Bezier曲線。且權(quán)因子的值越大,則曲線越接近對(duì)應(yīng)的控制頂點(diǎn)。權(quán)因子對(duì)曲線還有很多重要性質(zhì),讀者可以參考其他相關(guān)書(shū)籍。?

OpenCASCADE中的Beizer曲線是基于BSplCLib包實(shí)現(xiàn)的,即是NURBS曲線的特例。所以可以表示有理有非有理的Bezier曲線。?

7. References

1. 數(shù)學(xué)手冊(cè)編寫(xiě)組. 數(shù)學(xué)手冊(cè). 高等教育出版社. 1979?

2. 丘維聲. 解析幾何. 北京大學(xué)出版社. 1996?

3. 蘇步青,劉鼎元. 計(jì)算幾何. 上海科學(xué)技術(shù)出版社. 1981?

4. 蘇步青,華宣積. 應(yīng)用幾何教程. 復(fù)旦大學(xué)出版社. 2012?

5. 莫蓉,常智勇. 計(jì)算機(jī)輔助幾何造型技術(shù). 科學(xué)出版社. 2009?

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

7. 趙罡,穆國(guó)旺,王拉柱譯. 非均勻有理B樣條. 清華大學(xué)出版社. 2010?

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

9. 孫家廣. 計(jì)算機(jī)圖形學(xué). 清華大學(xué)出版社. 2000?

10. 孫家廣. 計(jì)算機(jī)輔助幾何造型技術(shù). 清華大學(xué)出版社. 2000?

11. 王國(guó)瑾,汪國(guó)昭,鄭建民. 計(jì)算機(jī)輔助幾何設(shè)計(jì). CHEP & Springer-Verlag. 2001?

12. Les Piegl, Wayne Tiller. The NURBS Book. Springer-Verlag. 1997?

13. Kelly Dempski. Focus on Curves and Surfaces. Premier Press. 2003?

14. OpenCASCADE. Test Harness User’s Guide 6.7.1. 2014?

15. OpenCASCADE. ModelingData User’s Guide 6.7.1. 2014?

?

PDF Version and Tcl Scripts: OpenCASCADE Rational Bezier Curves

OpenCASCADE Rational Bezier Curves


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

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

【本文對(duì)您有幫助就好】

您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦!!!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 午夜亚洲 | 精品一区二区久久 | 拍真实国产伦偷精品 | 九九精品在线 | 99久久精品视香蕉蕉er热资源 | 青青青国产免费全部免费观看 | 久久香蕉国产线看观看亚洲卡 | 99热这里只有精品7 99热这里只有精品8 | 综合亚洲一区二区三区 | 日韩视频在线观看一区 | 91成人在线 | 精品国产欧美一区二区三区成人 | 老子影院午夜伦不卡 | 看黄色免费网站 | 青青青国产免费全部免费观看 | 91精选国产 | 真实的国产乱xxxx在线播放 | 亚洲好视频 | 99爱在线视频这里只有精品 | 日韩爱爱网站 | 久久精品国产福利 | 97国产在线观看 | 黄 色 三 级 网站 | 亚洲夜色 | 国产国语对白一级毛片 | 日本一区二区日本免费 | japanese乱子另类 | 欧美一区二区三区视频在线观看 | 国产男女xoxo在线视频 | 四虎国产精品视频免费看 | 日韩大片在线 | 日一区二区 | 激情五月婷婷基地 | 日本一级毛片aaaaa | 黄色片网站在线免费观看 | 成人性生交大片免费看午夜a | 久久这里有精品视频任我鲁 | 欧美日韩一区二区综合在线视频 | 日本高清中文字幕视频在线 | 免费观看成人羞羞视频网站观看 | 亚洲 欧美 国产 中文 |