版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、<p> 學(xué) 生 畢 業(yè) 設(shè) 計(論 文)</p><p> 2012年 5月30日</p><p> 課題名稱基于VC的平面曲線繪制</p><p> 姓 名</p><p> 學(xué) 號</p><p> 院 系信息科學(xué)與工程學(xué)院</p><p> 專 業(yè)計
2、算機科學(xué)與技術(shù)</p><p> 指導(dǎo)教師</p><p><b> 目 錄</b></p><p><b> 摘 要:1</b></p><p><b> 關(guān)鍵詞:1</b></p><p> Abstract:2</p>
3、<p> Key words:2</p><p><b> 1.緒論3</b></p><p> 1.1 本文的主要結(jié)構(gòu)3</p><p> 1.2 研究背景和意義3</p><p> 1.3 研究內(nèi)容4</p><p> 1.4 國內(nèi)外研究現(xiàn)狀4</p&
4、gt;<p> 2.技術(shù)背景介紹6</p><p> 2.1計算機圖形學(xué)的發(fā)展歷程及應(yīng)用前景6</p><p> 2.1.1計算機圖形學(xué)的發(fā)展簡史6</p><p> 2.1.2計算機圖形學(xué)的應(yīng)用6</p><p> 2.1.2.1計算機輔助設(shè)計與制造6</p><p> 2.1.2
5、.2科學(xué)計算可視化7</p><p> 2.1.2.3圖形實時繪制與自然景物仿真7</p><p> 2.1.2.4計算機動畫7</p><p> 2.1.2.5計算機藝術(shù)8</p><p> 2.1.3計算機圖形學(xué)發(fā)展前景8</p><p> 2.2 Visual C++ 6.08</p&
6、gt;<p> 2.2.1 Visual C++ 6.0的簡介8</p><p> 2.2.2 Visual C++ 6.0特色和缺點9</p><p> 3.貝塞爾(Bezier)曲線的繪制9</p><p> 3.1 貝塞爾曲線的介紹9</p><p> 3.2 Bezier曲線的性質(zhì)10</p&g
7、t;<p> 3.3 三次Bezier曲線繪制10</p><p> 4.三次B樣條曲線的繪制12</p><p> 4.1 三次B樣條曲線的介紹12</p><p> 4.2 三次B樣條曲線的性質(zhì)13</p><p> 4.3 三次B樣條曲線的繪制:14</p><p> 4.4
8、程序運行效果圖15</p><p><b> 5.正葉線15</b></p><p> 5.1 正葉線15</p><p> 5.2 正葉線源碼及效果圖16</p><p><b> 結(jié)論18</b></p><p><b> 參考文獻(xiàn):19&
9、lt;/b></p><p><b> 致謝20</b></p><p> 基于VC的平面曲線繪制</p><p> 摘 要:在我們的生活當(dāng)中,曲線扮演著十分重要的角色,很多地方我們都需要用到曲線,本論文致力于對曲線的研究,在介紹計算機圖形學(xué)算法及原理基礎(chǔ)上,利用Visual C++開發(fā)環(huán)境中數(shù)據(jù)范圍可變時確定坐標(biāo)軸刻度和繪制平
10、面曲線的方法,根據(jù)提供的圖形數(shù)據(jù)的參數(shù)曲線方程,參數(shù)的幾何意義,最大和最小的參數(shù)值,參數(shù)最合適的取值。利用這些參數(shù)和圖形數(shù)據(jù)繪制出該平面曲線的的圖形,本文將會介紹幾種經(jīng)典的平面曲線,這些曲線在實際的生活中扮演的很重要的角色,很多工程的實現(xiàn)都需要用到這些,本論文將會教會大家怎樣繪制平面曲線。介紹在繪制曲線的過程需要注意哪些關(guān)鍵的東西。還會具體的分析該曲線所具有哪些屬于自己的關(guān)鍵性質(zhì)。</p><p> 關(guān)鍵詞:V
11、isual C++;平面曲線;計算機圖形學(xué)。</p><p> Plane curves based on VC</p><p> Abstract: Curve plays a significant role in our life and is used by us in a great many of areas, hence the objective of this dis
12、sertation is researching curve. The dissertation based on the introduction of computer graphics calculation and theory, it guarantees the graduation of coordinate axis and method of drawing plane curve through utilizing
13、the changeability of data range in Visual C++ development environment. In addition , it also based on graphics data of parameter of curve equation, geom</p><p> Key words: Visual C++ , Plane curve, Computer
14、 graphics </p><p><b> 1 緒論</b></p><p> 1.1 本文的主要結(jié)構(gòu)</p><p> 第一部分主要介紹本論文的研究背景和意義、論文主要研究的內(nèi)容、國內(nèi)外最新的研究成果</p><p> 第二部分主要介紹計算機圖形學(xué)的發(fā)展史和Visual C++ 6.0的發(fā)展情況</p
15、><p> 第三部分詳細(xì)介紹幾種平面曲線及其實現(xiàn)過程</p><p> 1.2 研究背景和意義</p><p> 計算機輔助幾何設(shè)計始興于20世紀(jì)60年代,最初始于飛機、船舶的外形放樣工藝。在當(dāng)時計算機發(fā)展的影響下,為了利用計算機更高效地進(jìn)行設(shè)計,人們開始尋找研究曲線或曲面的表示方法,其中最著名、最實用的是法國雷諾汽車公司的工程師提出的Bezier技術(shù)[1]和美國
16、機械工程師Coons提出的Coons技術(shù)[2,3]。在大多數(shù)情況下,描述產(chǎn)品外形的曲線或曲面只有大概形狀或者只知道它所通過的一系列空間點列,這些點稱為控制點,這類曲線或曲面叫自由曲線或自由曲面,而計算機輔助幾何設(shè)計就是研究自由曲線曲面的表示、設(shè)計、顯示、分析與綜合以及處理等問題。B樣條曲線是Bezier曲線的改進(jìn),對于Bezier曲線來說,特征多邊形頂點個數(shù)決定了Bezier曲線的階次,并且當(dāng)n較大時,特征多邊形對曲線的控制將會減弱。改
17、變一個控制頂點的位置 會影響整個曲線的形狀,這不利于對曲線的局部修改,且Bezier曲線在很多情況下不能反映特征多邊形的特點。1972~1974年Gorden等將Bezier的基函數(shù)換成B樣條函數(shù),從而構(gòu)造了等距離節(jié)點的B樣條曲線,也稱為均勻B樣條曲線。</p><p> B樣條曲線的應(yīng)用范圍非常廣泛,不僅在幾何造型方面,還應(yīng)用到其它許多方面,如應(yīng)用B樣條函數(shù)處理力學(xué)問題[4],結(jié)合小波方法應(yīng)用于圖像的完整性認(rèn)
18、證[5],應(yīng)用于實驗數(shù)據(jù)的壓縮[6],應(yīng)用于一維、二維空間中軌跡的規(guī)劃[7]等。B樣條曲線的應(yīng)用范圍還在不斷的擴(kuò)大,同時也在不斷的改進(jìn),因此對它的研究具有一定的應(yīng)用價值和推廣價值。</p><p> B樣條曲線造型方法的理論基礎(chǔ)是B樣條,下面從B樣條的定義和性質(zhì),以及各種B樣條曲線的定義和程序?qū)崿F(xiàn)方法進(jìn)行闡述。</p><p><b> 1.3 研究內(nèi)容</b>&
19、lt;/p><p> 本論文主要基于VC++程序?qū)崿F(xiàn)對平面曲線的繪制,論文中將會具體提供對下面幾種平面曲線的繪制算法。</p><p> 貝塞爾(Bezier)曲線的繪制</p><p><b> B樣條曲線的繪制</b></p><p><b> 正葉線繪制</b></p>&l
20、t;p> 1.4 國內(nèi)外研究現(xiàn)狀</p><p> Bezier曲線的提出是1962最先由貝齊爾開始的,它最初的研究是面向幾何而不是面向代數(shù)。Bezier曲線提出之后在20世紀(jì)80年中后期在工業(yè)界和CAGD學(xué)術(shù)界就產(chǎn)生了極大的影響,并在計算機輔助設(shè)計/制造(CAD/CAM)領(lǐng)域中得到了廣泛應(yīng)用,一直以來都有很多學(xué)者對它進(jìn)行研究。由于它常常應(yīng)用于不同造型系統(tǒng),而不同造型系統(tǒng)之間經(jīng)常需要進(jìn)行幾何描述信息的數(shù)
21、據(jù)交換或數(shù)據(jù)集成,因此,降階運算作為Bezier曲線的基本運算就具有非常重要的意義。因而,降階逼近算法的理論研究也就一直成為了研究的熱點。對Bezier曲線的降階問題的研究大致可分為如下兩類:</p><p> 一類是基于控制頂點幾何信息的離散化方法,這類方法主要著眼于原曲線的控制頂點和導(dǎo)矢等幾何信息進(jìn)行降階。在國外,最早由Forrest于1972年在“Algorithms forrational Bezier
22、 curves”[9]中提出,但是誤差較大;80年代 Farin在“Algorithms forrational Bezier curves”中對有理Bezier曲線、曲面的降階進(jìn)行了研究[10],Pank的“Degree Reduction of Bezier Curves”等改進(jìn)了Forrest的方法[11],得到了較好的效果;而Moore和Warren的“Least-Square Approximation to Béz
23、icurvsand Surfaces”[12]通過原曲線與待求曲線所圍面積的極小來反求降階后曲線的控制頂點,給出了一種降階算法;Lodha 和 Warren 的“Degreere Duction of Bezier Simplexes”[13]的算法進(jìn)一步考慮了一般的Bezier單形A,利用插值和凸組合技巧,先構(gòu)造k個d次的Bezier單形Ak,d<K,使Ak在第k</p><p> 另一類是側(cè)重于基轉(zhuǎn)換
24、的代數(shù)方法,Watkins和Worsey以及Eck利用升階反過程與約束Chebyshev多項式有機地結(jié)合起來,對曲線降階問題進(jìn)行處理;Eck用約束Legendre多項式在L2范數(shù)空間中進(jìn)行降階,逼近效果優(yōu)于以往的方法,但多階降階逼近問題采取每次降一階來分次實現(xiàn)。而Lachance則提出了約束Chebyshev多項式的概念,降階逼近曲線端點可保持原曲線的 A 階連續(xù)插值,從而無須通過Lagrange插值來保持端點插值,且此時達(dá)到最佳逼近。
25、但 A>0 時,沒有顯式解存在,必須通過諸如修正的Remes算法等數(shù)值方法來。梁秀霞、張彩明、徐琳、張愛武的“L∞范數(shù)下使用基本曲線和修正曲線的帶約束 Bezier 曲線降階”為避免直接求解基于L∞距離的帶約束逼近的非線性最優(yōu)解引起的復(fù)雜性,提出了一種把降階逼近曲線分解為基本曲線和修正曲線的降階方法,利用約束Legendre多項式可得到顯式解,且保證降階后曲線要求的邊界插值條件,修正曲線的控制頂點由降階逼近曲線和原曲線的差定義,能
26、夠在L∞范數(shù)意義下極小化降階逼近曲線與原曲線的誤差,文中方法以簡單穩(wěn)定的方式實現(xiàn)保端點插值的一次降多階,并</p><p> 雖然Bezier曲線的降階問題研究得比較多,但都很少有討論采用中點分割與基本降階相結(jié)合并考慮誤差具體進(jìn)行一次降二階的情況。</p><p><b> 2 技術(shù)背景介紹</b></p><p> 2.1計算機圖形學(xué)的
27、發(fā)展歷程及應(yīng)用前景</p><p> 計算機圖形學(xué)(ComputerGraphics簡稱CG是一種使用數(shù)學(xué)算法將二維或三維圖形轉(zhuǎn)化為計算機顯示器的柵格式的科學(xué)。簡單地說,計算機圖形學(xué)的主要研究內(nèi)容就是研究如何在計算機中表示圖形、以及利用計算機進(jìn)行圖形的計算、處理和顯示的相關(guān)原理與算法。圖形通常由點、線、面、體等幾何元素和灰度、色彩、線型、線寬等非幾何屬性組成。從處理技術(shù)上來看圖形主要分為兩類,一類是基于線條信息
28、表示的,如工程圖等高線地圖、曲面的線框圖等,另一類是明暗圖,也就是通常所說的真實感圖形。經(jīng)過30多年的發(fā)展,計算機圖形學(xué)已成為計算機科學(xué)中最為活躍的分支之一,并得到廣泛的應(yīng)用。本文將介紹計算機圖形學(xué)的研究內(nèi)容、發(fā)展歷史,應(yīng)用和圖形學(xué)前沿的方向?!?lt;/p><p> 2.1.1計算機圖形學(xué)的發(fā)展簡史 </p><p> 1950年,第一臺圖形顯示器作為美國麻省理工學(xué)院(MIT)旋風(fēng)號一(
29、Whirlwind)計算機的附件誕生了。該顯示器用一個類似示波的陰極射線管(CRT)來顯示一些簡單的圖形。在整個50年代,只有子管計算機,用機器語言編程,主要應(yīng)用于科學(xué)計算,為這些計算機置的圖形設(shè)備僅具有輸出功能。計算機 圖形學(xué)處 于準(zhǔn)備和醞釀時期并稱之為:“被動式”圖形學(xué)。1960年,伊凡?蘇澤蘭在麻省理工學(xué)院發(fā)表了名為《畫板》的博士論文,它標(biāo)志著計算機圖形學(xué)的正式誕生。此前的計算機主要是符號處理系統(tǒng),自從有了計算機圖形學(xué),計算機可以
30、部分地表現(xiàn)人的右腦功能了,計算機圖形學(xué)的建立意義重大?!?lt;/p><p> 2.1.2計算機圖形學(xué)的應(yīng)用 </p><p> 2.1.2.1計算機輔助設(shè)計與制造 </p><p> CAD/CAM是計算機圖形學(xué)在工業(yè)界最廣泛.最活躍的應(yīng)用領(lǐng)域。計算機圖形學(xué)被用來進(jìn)行土建工程.機械結(jié)構(gòu)和產(chǎn)品的設(shè)計,包括設(shè)計飛機、汽車、船舶的外形和發(fā)電廠、化工廠等的布局以及電子線
31、路、電子器件等。有時,著眼于產(chǎn)生工程和產(chǎn)品相應(yīng)結(jié)構(gòu)的精確圖形,然而更常用的是對所設(shè)計的系統(tǒng).產(chǎn)品和工程的相關(guān)圖形進(jìn)行人——機交互設(shè)計和修改。經(jīng)過反復(fù)的選代設(shè)計,便可利用結(jié)果數(shù)據(jù)輸出零件表、材料單、加工流程和工藝卡?;蛘邤?shù)據(jù)加工代碼 的指令。在電子工業(yè)中,計算機圖形學(xué)應(yīng)用到集成電路印刷電路板.電子線路和網(wǎng)絡(luò)分析等方面的優(yōu)勢十分明顯。CAD領(lǐng)域另一個非常重要的研究領(lǐng)域是基于工程圖紙的三維形體重建。三維形體重建是從二維信息中提取三維信息。通過
32、對 這些信息進(jìn)行分類。綜合等一系列處理,在三維空間中重新構(gòu)造出二維信息所對應(yīng)的三維形體,恢復(fù)形體的點、線 、面及其拓?fù)潢P(guān)系,從而實現(xiàn)形體的重建 ?!?lt;/p><p> 2.1.2.2科學(xué)計算可視化 </p><p> 目前科學(xué)計算可視化廣泛應(yīng)用于醫(yī)學(xué),流體力學(xué),有限元分析,氣象分析當(dāng)中。尤其在醫(yī)學(xué)領(lǐng)域??梢暬兄鴱V闊的發(fā)展前途。依靠精密機械做腦部手術(shù)是目前醫(yī)學(xué)上很熱門的課題。而這些技術(shù)
33、的實現(xiàn)的基礎(chǔ)則是可視化。當(dāng)我們做腦部手術(shù)時.可視化技術(shù)技術(shù)將醫(yī)用CT掃描的數(shù)據(jù)轉(zhuǎn)化成圖像.使得醫(yī)生能夠看到并準(zhǔn)確的判別病人的體內(nèi)患處.然后通過碰撞檢測一類的技術(shù)實現(xiàn)手術(shù)效果的反饋,幫助醫(yī)生成功完成手術(shù)。我們利用了可視化技術(shù)?!?lt;/p><p> 2.1.2.3圖形實時繪制與自然景物仿真 </p><p> 重現(xiàn)真實世界的場景叫做真實感繪制。真實感繪制主要是模擬真實物體的物理屬性,簡單的
34、說就是物體的形狀.光學(xué)性質(zhì),表面的紋理和粗糙程度,以及物體間的相對位置,遮擋關(guān)系等等。在自然景物仿真這項技術(shù)中我們需要過行消除隱藏線及面、明暗效應(yīng)、顏色模型、紋理、光線跟蹤,輻射度等工作。這其中光照和表面屬性是最難摸擬的。而且還必須處理物體表面的明暗效應(yīng),以便用不同的色彩灰度來增加圖形的真實感。自然景物仿真在幾何圖形、廣告影視、指揮控制??茖W(xué)計算等方面應(yīng)用范圍很廣 。 </p><p> 2.1.2.4計算機動
35、畫 </p><p> 隨著計算機圖形和計算機硬件的不斷發(fā)展,計算機動畫應(yīng)運而生。事實上動畫也只是生成一幅幅靜態(tài)的圖象,但是每一幅都是對前一幅小部分修改,如何修改便是計算機動畫的研究內(nèi)容,這樣,當(dāng)這些連續(xù)播放時,整個場景就動起來。早期的計算機動畫靈感來源于傳統(tǒng)的卡通片。在生成幾幅被稱作“關(guān)鍵幀”.連續(xù)播放時2個關(guān)健幀就被有機的結(jié)合起來了。計算機動畫內(nèi)容豐富多彩,生成動畫的方法也多種多樣.比如基于特征的圖象變形,
36、二維形狀混合,軸變形方法,三維自由形體變形等。近年來人們普遍將注意力轉(zhuǎn)向基于物理模型的計算機動畫生成方法。這是一種嶄新的方法,該方法大量運用彈性力學(xué)和流體力學(xué)的方程進(jìn)行計算,力求使動畫過程體現(xiàn)出最適合真實世界的運動規(guī)律。然而要真正到達(dá)真實運動是很難的,比如人的行走或跑步,要實現(xiàn)很自然的人走路的畫面,計算機方程非常復(fù)雜和計算量極大,基于物理模型的計算機動畫還有許多內(nèi)容需要進(jìn)一步研究 。 </p><p> 2.1
37、.2.5計算機藝術(shù) </p><p> 用計算機從事藝術(shù)創(chuàng)作。計算機圖形學(xué)除了廣泛用于藝術(shù)品的制造,如各種圖案、花紋及傳統(tǒng)的油畫、中國國畫等。還成功的用來制造廣告、動畫片甚至電影,其中有的影片還獲得了奧斯卡獎。這是電影界最高的殊榮。目前國內(nèi)外不少人士正在研制人體模擬系統(tǒng),這使得在不久的將來把歷史上早已去世的著名影視明星重新搬上新的影視片成為可能。這是一個傳統(tǒng)的藝術(shù)家無法實現(xiàn)也不可想象的?!?lt;/p>
38、<p> 2.1.3計算機圖形學(xué)發(fā)展前景 </p><p> 綜觀計算機圖形學(xué)的發(fā)展,我們發(fā)現(xiàn)圖形學(xué)的發(fā)展迅速.并且已經(jīng)成為一門獨立的學(xué)科,傲站在科學(xué)的前端。計算機圖形學(xué)的已經(jīng)應(yīng)用到各個領(lǐng)域。比如計算機輔助設(shè)計與制造。自然景物仿真和計算機動畫。在我們的生活到處可見,使我們的生活變的絢麗多彩。還有將可視化用于天氣預(yù)報。使氣象預(yù)報越來越準(zhǔn) 確;用于地質(zhì)堪探,使地質(zhì)學(xué)家可以發(fā)現(xiàn)新資源;用于醫(yī)學(xué)做些精密的
39、手術(shù)提高了人們的壽命等??傊嬎銠C圖形學(xué)的應(yīng)用給人類帶來了很多益處。在促進(jìn)人們物質(zhì)水平提高的同時.也給我們帶來的精神上的享受。</p><p> 2.2 Visual C++ 6.0</p><p> 2.2.1 Visual C++ 6.0的簡介</p><p> Visual C++ 6.0,簡稱VC或者VC6.0,是微軟推出的一款C++編譯器,將“高級語
40、言”翻譯為“機器語言(低級語言)”的程序。Visual C++是一個功能強大的可視化軟件開發(fā)工具。自1993年Microsoft公司推出Visual C++1.0后,隨著其新版本的不斷問世,Visual C++已成為專業(yè)程序員進(jìn)行軟件開發(fā)的首選工具。雖然微軟公司推出了 Visual C++.NET(Visual C++7.0),但它的應(yīng)用有很大的局限性,只適用于Windows 2000、Windows XP和Windows NT4.0。
41、所以實際中,更多的是以Visual C++6.0為平臺。</p><p> 2.2.2 Visual C++ 6.0特色和缺點</p><p> 特色:Visual C++6.0由Microsoft開發(fā), 它不僅是一個C++ 編譯器,而且是一個基于Windows操作系統(tǒng)操作系統(tǒng)的可視化集成開發(fā)環(huán)境(integrated development environment,IDE)。Visu
42、al C++6.0由許多組件組成,包括編輯器、調(diào)試器以及程序向?qū)ppWizard、類向?qū)lass Wizard等開發(fā)工具。 這些組件通過一個名為Developer Studio的組件集成為和諧的開發(fā)環(huán)境。Microsoft的主力軟件產(chǎn)品。Visual C++是一個功能強大的可視化軟件開發(fā)工具。自1993年Microsoft公司推出Visual C++1.0后,隨著其新版本的不斷問世,Visual C++已成為專業(yè)程序員進(jìn)行軟件開發(fā)的
43、首選工具。雖然微軟公司推出了Visual C++.NET(Visual C++7.0),但它的應(yīng)用的很大的局限性,只適用于Windows 2000,Windows XP和Windows NT4.0。所以實際中,更多的是以Visual C++6.0為平臺。</p><p> Visual C++6.0以擁有“語法高亮”,自動編譯功能以及高級除錯功能而著稱。比如,它允許用戶進(jìn)行遠(yuǎn)程調(diào)試,單步執(zhí)行等。還有允許用戶在調(diào)
44、試期間重新編譯被修改的代碼,而不必重新啟動正在調(diào)試的程序。其編譯及創(chuàng)建預(yù)編譯頭文件(satafx.ch)、最小重建功能及累加連結(jié)(link)著稱。這些特征明顯縮短程序編輯、編譯及連結(jié)的時間花費,在大型軟件計劃上尤其顯著。</p><p> 缺點:由于C++是由C語言發(fā)展起來的,也支持C語言的編譯。6.0版本是使用最多的版本,很經(jīng)典。最大的缺點是對于模版的支持比較差?,F(xiàn)在最新補丁為SP6,推薦安裝,否則易出現(xiàn)編譯
45、時假死狀態(tài)。僅支持Windows操作系統(tǒng)。目前發(fā)現(xiàn)與windows 7兼容性不好,安裝成功后可能會出現(xiàn)無法打開cpp文件的現(xiàn)象。</p><p> 3 貝塞爾(Bezier)曲線的繪制</p><p> 3.1 貝塞爾曲線的介紹</p><p> 一般地說,可以用任何數(shù)目的控制點擬合出一條Bezier曲線,但這需要計算更高次的多項式。復(fù)雜曲線可以由一些較低次數(shù)
46、的Bezier曲線段連接而成,較小的曲線段連接也便于更好地控制小區(qū)域內(nèi)的曲線形狀,最常使用的是三次Bezier曲線。</p><p> 三次Bezier曲線由四個控制點P0、P1、P2、P3定義:</p><p> 其中,Pk為特征多邊形第k個頂點的坐標(biāo)值(xk,yk,zk),而基函數(shù)Bk,n(u)的定義如下</p><p> (k﹦0,1,...,n)<
47、;/p><p> 函數(shù)Bk,n(u)稱為Bernstein多項式,其中</p><p><b> 為組合公式。</b></p><p> u的取值范圍為[0,1],n是多項式次數(shù), 也是曲線次數(shù)。</p><p> 三次Bezier曲線寫成坐標(biāo)分量的形式如下:</p><p> x(u)﹦(
48、-u3﹢3u2﹣3u﹢1)x0﹢(3u3﹣6u2﹢3u)x1﹢(-3u3﹢3u2)x2﹢u3x3</p><p> y(u)﹦(-u3﹢3u2﹣3u﹢1)y0﹢(3u3﹣6u2﹢3u)y1﹢(-3u3﹢3u2)y2﹢u3y3</p><p> z(u)﹦(-u3﹢3u2﹣3u﹢1)z0﹢(3u3﹣6u2﹢3u)z1﹢(-3u3﹢3u2)z2﹢u3z3 </p><p
49、> 實際生成曲線時,取一合適的步長,控制u從0到1變化,求出一系列(x, y)坐標(biāo)點,將其用小線段順序連接起來,就可以得到一條Bezier曲線。</p><p> 3.2 Bezier曲線的性質(zhì)</p><p> ?。?)曲線的起點和終點同特征多邊形的起點和終點重合</p><p> ?。?)Bezier曲線在端點處的一階導(dǎo)數(shù)只同相近的兩個控制點有關(guān),其方
50、向相同于兩點的連線方向。</p><p> ?。?)凸包性:Bezier曲線落在特征多邊形頂點所形成的凸包內(nèi)。</p><p> ?。?)幾何不變性:曲線的形狀由特征多邊形的頂點唯一確定,與坐標(biāo)系的選取無關(guān)。</p><p> 3.3 三次Bezier曲線繪制</p><p> void CMyView::OnDraw3bezier()
51、</p><p><b> {</b></p><p> RedrawWindow();</p><p> float coeff_x[4];</p><p> float coeff_y[4];</p><p> float points_x[nPoints+1];</p>
52、<p> float points_y[nPoints+1];</p><p> int degree,i,j;</p><p><b> degree=3;</b></p><p> CClientDC *pdc=new CClientDC(this);</p><p><b> CP
53、en pen;</b></p><p> pen.CreatePen(PS_SOLID,1,RGB(0,0XFF,0));</p><p> CPen *oldpen=(CPen*)pdc->SelectObject(&pen);</p><p> pdc->TextOut(200,150,"三次Bezier曲線&qu
54、ot;);</p><p> double delt;</p><p> coeff_x[0]=10;</p><p> coeff_x[1]=30;</p><p> coeff_x[2]=40;</p><p> coeff_x[3]=40;</p><p> coeff_y[0
55、]=10;</p><p> coeff_y[1]=5;</p><p> coeff_y[2]=13;</p><p> coeff_y[3]=30;</p><p> pdc->MoveTo(110,110);</p><p> for(j=0;j<=degree;j++)</p>
56、<p> pdc->LineTo(10+10*coeff_x[j],10+10*coeff_y[j]); </p><p> delt=float(1.0/nPoints);</p><p> double t=0.0;</p><p> pdc->MoveTo(110,110);</p><p> f
57、or(i=0;i<=nPoints;i++){</p><p> points_x[i]=ThreeBezier(degree,coeff_x,t);</p><p> points_y[i]=ThreeBezier(degree,coeff_y,t);</p><p><b> t=t+delt;</b></p>&
58、lt;p> pdc->LineTo(10+10*points_x[i],10+10*points_y[i]);</p><p><b> }</b></p><p> delete pdc;</p><p><b> }</b></p><p><b> 程序運行效果
59、圖:</b></p><p> 圖3.2.1三次Bezier曲線</p><p> 4 三次B樣條曲線的繪制</p><p> 4.1 三次B樣條曲線的介紹</p><p> 工程上常用的是三次B樣條曲線函數(shù)式為:</p><p><b> u[0, 1]</b></p
60、><p><b> 其中:</b></p><p><b> 展開有:</b></p><p> F0,3(u)﹦(-u3﹢3u2﹣3u﹢1 )/6;</p><p> F1,3(u)﹦(3u3﹣6u2﹢4)/6;</p><p> F2,3(u)﹦(-3u3﹢3u2﹢
61、3u﹢1 )/6;</p><p> F3,3(u)﹦u3 /6。</p><p> 寫成坐標(biāo)分量的形式如下:</p><p> x(u)﹦(-u3/6﹢u2/2﹣u/2﹢1/6)x0﹢(u3/2 ﹣u2﹢2/3)x1﹢(-u3/2﹢u2/2﹢u/2﹢1/6)x2﹢u3x3/6</p><p> y(u)﹦(-u3/6﹢u2/2﹣u/
62、2﹢1/6)y0﹢(u3/2 ﹣u2﹢2/3)y1﹢(-u3/2﹢u2/2﹢u/2﹢1/6)y2﹢u3y3/6</p><p> z(u)﹦(-u3/6﹢u2/2﹣u/2﹢1/6)z0﹢(u3/2 ﹣u2﹢2/3)z1﹢(-u3/2﹢u2/2﹢u/2﹢1/6)z2﹢u3z3/6</p><p> 當(dāng)u從0到1變化時,曲線將在P0到P3之間順序地連續(xù)形成。</p><
63、p> 4.2 三次B樣條曲線的性質(zhì)</p><p> ?。?)嚴(yán)格的凸包性:曲線嚴(yán)格位于控制多邊形的凸包內(nèi),如果u∈[ ui ,ui+1),</p><p> p≤i<m-p-1,C(u)位于控制頂點Pi-p….,Pi所建立的凸包內(nèi),如圖4.2.1所示。</p><p><b> 圖4.2.1</b></p>&
64、lt;p> ?。?)分段參數(shù)多項式:C(u)在每一個區(qū)間u∈[ui,ui+1)上都是次數(shù)不高于P的多項式。</p><p> ?。?)可微性或連續(xù)性:C(u)在每一個曲線段內(nèi)部是無限次可微的,在定義域內(nèi)</p><p> 重復(fù)度為k的節(jié)點處則使 p-k次可微或具有p-k階參數(shù)連續(xù)性。</p><p> ?。?)幾何不變性:B樣條曲線的形狀和位置與坐標(biāo)系的選取
65、無關(guān)。</p><p> ?。?)局部可調(diào)性:因為Ni, p(u)只在區(qū)間[ui ,ui+p+1)中為正,在其它地方均取零值,所以p次的B樣條曲線在修改時只被相鄰的p+1個頂點控制,而與其它頂點無關(guān)。當(dāng)移動其中的一個頂點p i時,只影響到定義在區(qū)間[ u i ,ui+p+1)上那部分曲線,并不對整條曲線產(chǎn)生影響。</p><p> ?。?)控制多邊形是B樣條曲線的線性近似,若進(jìn)行節(jié)點插入或
66、升階會更加近</p><p> 似;次數(shù)越低,B樣條曲線越逼近控制頂點</p><p> ?。?)如圖4.2.2所示,設(shè)P0 , P1,...,Pn為B樣條曲線的控制多邊形,某平面與B樣條曲線的交點個數(shù)不多于該平面與其控制多邊形的交點個數(shù)</p><p><b> 圖4.2.2</b></p><p> 4.3 三
67、次B樣條曲線的繪制:</p><p> 畫出三次B樣條曲線曲線。</p><p><b> 部分源代碼:</b></p><p> void CMyView::OnDraw3bspline() {</p><p> RedrawWindow();</p><p> CClientDC *
68、pdc=new CClientDC(this);</p><p><b> CPen pen;</b></p><p> pen.CreatePen(PS_SOLID,1,RGB(0,0XFF,0));</p><p> CPen *oldpen=(CPen*)pdc->SelectObject(&pen);</p&g
69、t;<p> pdc->TextOut(100,50,"三次B樣條曲線");</p><p> int cx,cy,i,n;</p><p><b> n=9;</b></p><p> double t,t2,t3,a0,a1,a2,a3,b0,b1,b2,b3,dt,xa,ya;</p&
70、gt;<p><b> cx=10;</b></p><p><b> cy=160;</b></p><p> static int x[4]={30,60,120,220},y[4]={30,110,150,50};</p><p> a0=(x[0]+4*x[1]+x[2])/6;</p&
71、gt;<p> a1=-(x[0]-x[2])/2;</p><p> a2=(x[2]-2*x[1]+x[0])/2;</p><p> a3=-(x[0]-3*x[1]+3*x[2]-x[3])/6;</p><p> b0=(y[0]+4*y[1]+y[2])/6;</p><p> b1=-(y[0]-y[2]
72、)/2;</p><p> b2=(y[2]-2*y[1]+y[0])/2;</p><p> b3=-(y[0]-3*y[1]+3*y[2]-y[3])/6;</p><p> dt=1.0/n; </p><p> for (i=0;i<=n;i++){</p><p><b> t=i
73、*dt;</b></p><p><b> t2=t*t;</b></p><p><b> t3=t2*t;</b></p><p> xa=a0+a1*t+a2*t2+a3*t3+cx;</p><p> ya=cy-(b0+b1*t+b2*t2+b3*t3);</p&
74、gt;<p> if(i==0) pdc->MoveTo(xa,ya);</p><p> else pdc->LineTo(xa,ya);</p><p><b> }</b></p><p> pdc->DeleteDC();// TODO: Add your command handler c
75、ode here</p><p><b> }</b></p><p> 4.4 程序運行效果圖</p><p> 三次貝塞爾去效果圖如圖4.3.1所示:</p><p> 圖4.3.1三次B樣條曲線</p><p><b> 5 正葉線</b></p>
76、<p><b> 5.1 正葉線</b></p><p> 正葉線是一種類似植物葉子形狀的曲線,數(shù)學(xué)表達(dá)式為:</p><p> R=asin(n×theta)</p><p> X=rcos(theta) (a>0,n=2,3,4,5,.........)</p><p> Y
77、=rsin(theta)</p><p> 可以通過修改上述數(shù)學(xué)表達(dá)式,繪制由二重、三重的正葉線組成的美麗圖形。</p><p> 5.2 正葉線源碼及效果圖</p><p> void CMyView::OnDrawLeaf() </p><p><b> {</b></p><p>
78、 CClientDC *pdc=new CClientDC(this);</p><p><b> CPen pen;</b></p><p> pen.CreatePen(PS_SOLID,1,RGB(0,0XFF,0));</p><p> CPen *oldpen=(CPen*)pdc->SelectObject(&p
79、en);</p><p> int a,n,cx,cy,gx,gy,flag,k;</p><p> double r,p,th,x,y,pi;</p><p> a=160;n=2; pi=3.14159;</p><p><b> cx=320;</b></p><p><b&g
80、t; cy=240;</b></p><p> flag=0;k=200;</p><p> for(p=1;p>=0.2;p-=0.2){</p><p> for(th=0;th<=2*pi+0.1;th+=pi/k){</p><p> r=abs(a*cos(n*th)*p);</p>
81、<p> x=int(r*cos(th));</p><p> y=int(r*sin(th));</p><p> gx=int(cx+x);</p><p> gy=int(cy+y);</p><p> if(flag==0) {pdc->MoveTo(gx,gy);}//,RGB(255,0,0));}&l
82、t;/p><p><b> flag=1;</b></p><p> pdc->LineTo(gx,gy);</p><p><b> }</b></p><p><b> flag=0;</b></p><p><b> }<
83、;/b></p><p> pdc->DeleteDC();</p><p><b> }</b></p><p> 程序運行效果圖如圖5.2.1所示:</p><p><b> 圖5.2.1正葉線</b></p><p><b> 結(jié) 論&l
84、t;/b></p><p> 2012年的3月,我開始準(zhǔn)備我的畢業(yè)設(shè)計論文,時至今日,論文基本已經(jīng)完成,從當(dāng)初拿到題目的茫然,隨后開始到處找資料,慢慢開始有些思路,到現(xiàn)在的思路清晰,整個過程充滿努力的汗水,無法用三言兩語就能表達(dá),如今畢業(yè)設(shè)計已經(jīng)差不多完成了,我時常在想,畢業(yè)設(shè)計的完成預(yù)示著什么?</p><p> 預(yù)示我即將大學(xué)畢業(yè),即將離開我心愛的母校,去外面的社會闖蕩,開始
85、我新的生活。</p><p> 2012年12月,當(dāng)我知道我的選題通知后,我開始著手準(zhǔn)備論文,開始的,對于論文的題目都有些不懂,不明白論文要寫那些方面,而且既然決定開始寫的話,就必須確定自己要寫那些方面,于是我主動去找我的導(dǎo)師,卜飛宇老師,及時與他溝通,通過老師的耐心指導(dǎo)和幫助,我確立了我要寫的方向。</p><p> 寒假在家的時候,我時常去網(wǎng)上查找我與我題目相關(guān)的資料,還認(rèn)真的帶了
86、本筆記本,記錄了許多重要的信息,還對很多信息進(jìn)行的比較,選擇最有利我論文的資料。 </p><p> 老師對于我準(zhǔn)備的資料抱有了肯定的態(tài)度,我一起討論我準(zhǔn)備的東西,從中找出那些東西可以再論文中用到,那些不能用,2012年2月,由于自己覺得很多專業(yè)知識不夠,因此在外面開始培訓(xùn),至此不能經(jīng)常跟老師見面,不夠還是經(jīng)常電話和網(wǎng)上交流論文的相關(guān)信息。</p><p> 2012年3月,學(xué)校開始
87、要求我們交開題報告,由于自己有做過相關(guān)的準(zhǔn)備,因此很快就完成的任務(wù)。4月中旬,學(xué)校要求我們準(zhǔn)備畢業(yè)設(shè)計論文的一稿。經(jīng)常許多時間準(zhǔn)備,順利的做完了初稿,老師對我的初稿進(jìn)行了很多了改動,說很多地方還不合格,因此我針對老師要求改動的地方做了改變。5月初,我將改動后的2稿交給了老師?,F(xiàn)在論文已經(jīng)有1萬多字了,基本符合的學(xué)校的要求,但我知道我還沒有完成,我還需要準(zhǔn)備我的最終3稿和畢業(yè)答辯。</p><p> 這就是我畢業(yè)
88、設(shè)計的準(zhǔn)備過程,有許多的困難,但是我最后還是挺過來了,感謝卜老師的幫助,沒有你的幫助,我不可能這么順利的完成。</p><p><b> 參考文獻(xiàn)</b></p><p> [1] Bezier P E.Example of an existing system in motorindustry:theUNISURFsystem [J].ProcRoySocofL
89、ondon,1971,A321:207-218.</p><p> [2] Coons S A.Sunfaces for computer aided design of spacfrms [R].Cambridge Mass:MIT Project MAC-TR-255,1964:55-65.</p><p> [3] Coons S A Sufaces for computer
90、aided design of space forms,MIT Priject:36-60.</p><p> [4] 杜雙興,殷學(xué)文,李琪華。B-SPline高階元方法在三維水彈性力學(xué)中的應(yīng)用[J].船舶力學(xué),2004,4(1):17-23.</p><p> [5] 孫玉文,陳偉卿.B樣條技術(shù)在RPM切片數(shù)據(jù)處理中的應(yīng)用[J]。航空精密制造技術(shù),2002,38(4):30-32.&
91、lt;/p><p> [6] 葛玉琛,程昌年.實驗數(shù)據(jù)的B樣條壓縮法[J].天津職業(yè)技術(shù)師范學(xué)院學(xué)報,2000,10(1):15-16.</p><p> [7] 任重,楊燦軍.陳鷹.軌跡規(guī)劃中的B樣條插值算法[J].機電工程,2001,18(5):38-39.</p><p> [8] 黃維通.Visual C++面向?qū)ο笈c可視化程序設(shè)計[M].北京:清華大學(xué)出
92、版社,2003:20.</p><p> [9] forest A R. Interpolation and Approximation by Bezier Polynomials[J]. Computer Joumal,1972,15(1):71-79.</p><p> [10] Frain G.Algonrithms for rational Bezier curves[J].
93、Computer Aided Design,</p><p> 1983,15(1):71-79. </p><p> [11]Pank Y,chui U.Degree Reduction of Bezier Curves [J].Joumal of Australian Mathem atical Society Seris B,1996,36:399-413.</p>
94、<p> [12] MooreD,WarrenJ.Least-square Approximation to Bezicurvsand Sufaces[A].In: JamesArvoeds.ComputGemes(II)[C].NewYork :AcademicPress,1991:30.</p><p> [13] LodhaS,WarrenJ.Degreere Ductionof Bezie
95、r Simp;exes[J]. Computer Aided Design,</p><p> 1994,26:735-746.</p><p><b> 致 謝</b></p><p> 本文是在卜飛宇老師的諄諄教誨和悉心指導(dǎo)下完成,卜老師在學(xué)術(shù)上有著嚴(yán)謹(jǐn)?shù)目蒲凶黠L(fēng),實事求是的治學(xué)態(tài)度,并時刻能夠把握最新科技的前沿,讓我受益匪淺,卜老師
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- vc++課程設(shè)計報告---橫向繪制余弦曲線
- 畢業(yè)設(shè)計(論文)--基于vc++簡易心電圖分析系統(tǒng)的開發(fā)
- 基于vc++的點歌管理系統(tǒng)的設(shè)計和實現(xiàn)畢業(yè)設(shè)計(論文)
- 畢業(yè)設(shè)計---基于vc++的視頻采集系統(tǒng)的開發(fā)
- 畢業(yè)設(shè)計---基于vc++的誤差分析實驗平臺設(shè)計
- 畢業(yè)設(shè)計論文-基于vc++的工資管理系統(tǒng)的設(shè)計與實現(xiàn)
- 畢業(yè)設(shè)計---基于vc++的8數(shù)碼游戲設(shè)計與開發(fā)
- vc++ 第5章 圖形繪制
- 平面曲線伸縮流.pdf
- 基于VC++金屬切削機床主傳動系統(tǒng)優(yōu)化設(shè)計(有VC++工程)--畢業(yè)設(shè)計.doc
- vc++設(shè)計簡單的聊天室畢業(yè)設(shè)計
- [vc++畢設(shè)]vc++象棋程序+論文
- 畢業(yè)設(shè)計(論文)-vc++超市進(jìn)銷存管理系統(tǒng)
- 畢業(yè)設(shè)計---基于vc++的公路收費站管理系統(tǒng)
- 基于VC++金屬切削機床主傳動系統(tǒng)優(yōu)化設(shè)計(有VC++工程)--畢業(yè)設(shè)計.doc
- 基于VC++金屬切削機床主傳動系統(tǒng)優(yōu)化設(shè)計(有VC++工程)--畢業(yè)設(shè)計.doc
- [vc++畢設(shè)]vc++醫(yī)藥管理系統(tǒng)+論文
- [vc++畢設(shè)]vc++航空檢票系統(tǒng)+論文
- 畢業(yè)設(shè)計(論文)基于vc++的圖像壓縮編碼技術(shù)的研究及算法實現(xiàn)
- [vc++畢設(shè)]vc++開發(fā)gis項目程序+論文
評論
0/150
提交評論