計(jì)算機(jī)輔助教學(xué)的概念_第1頁
計(jì)算機(jī)輔助教學(xué)的概念_第2頁
計(jì)算機(jī)輔助教學(xué)的概念_第3頁
計(jì)算機(jī)輔助教學(xué)的概念_第4頁
計(jì)算機(jī)輔助教學(xué)的概念_第5頁
已閱讀5頁,還剩34頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1緒論計(jì)算機(jī)輔助教學(xué)的概念計(jì)算機(jī)輔助教學(xué)是在教學(xué)領(lǐng)域中采用計(jì)算機(jī)、網(wǎng)絡(luò)、通訊和多媒體等多種高新技術(shù)而開拓出的新的教學(xué)手段,具有集圖、文、聲、像于一體的多媒體組合特性,它創(chuàng)新性的教學(xué)意義在于能夠創(chuàng)設(shè)形象直觀、刺激豐富的學(xué)習(xí)環(huán)境,優(yōu)化學(xué)習(xí)過程,提高學(xué)習(xí)績效。多媒體教學(xué)軟件形式多樣,如以系統(tǒng)性為特征的課件,以基元性為特征的積件,基于單機(jī)的多媒體教學(xué)光盤,基于網(wǎng)絡(luò)的網(wǎng)絡(luò)教學(xué)軟件等,然而其基本功能都在于使學(xué)習(xí)者實(shí)現(xiàn)有效的學(xué)習(xí)。CAI有三種基本模式,根據(jù)具體的教學(xué)目標(biāo)和教學(xué)內(nèi)容,可分為:輔助教師講解在多媒體產(chǎn)品中,有許多屬于提供大量的圖形、圖片、動(dòng)畫、視頻圖像和音響來說明主題,因此,它十分適合于資料的演示,在課堂教學(xué)過程中,結(jié)合教學(xué)內(nèi)容,利用設(shè)在綜合電教室的Mpc系統(tǒng)和閉路電視系統(tǒng)以及擴(kuò)音設(shè)備等,向?qū)W生展示圖形、圖畫、視頻圖像和聲音,使學(xué)生獲得生動(dòng)形象的感性材料。特別是一些用語言難以表述清楚、變化過程復(fù)雜的、無法直接觀察的教學(xué)內(nèi)容,如物理學(xué)中的分子運(yùn)動(dòng)、電磁場(chǎng)等,都可以通過計(jì)算機(jī)模擬顯示出來。供學(xué)生自主學(xué)習(xí)這種模式是讓計(jì)算機(jī)充當(dāng)教師,使學(xué)生通過計(jì)算機(jī)學(xué)習(xí)新的知識(shí)技能,個(gè)別輔導(dǎo)模式。這類CAI包括有自然科學(xué)、外語學(xué)習(xí)、語文學(xué)習(xí)、音樂、計(jì)算等多方面內(nèi)容,這類CAI不僅提供文字、圖形、動(dòng)畫、視頻圖像,還有語音解說和效果音響。這種類似于教材的CAI聲、文、圖并茂,具有良好的視覺效果。利用網(wǎng)絡(luò)進(jìn)行輔助教學(xué)1999年6月召開的全國教育工作會(huì)議強(qiáng)調(diào)大力發(fā)展遠(yuǎn)程教育,對(duì)我國的教育現(xiàn)代化建設(shè)有著重大的現(xiàn)實(shí)意義。網(wǎng)上教育解決了由于地區(qū)差異造成的教育水平的差異,改變傳統(tǒng)的學(xué)習(xí)方法和習(xí)慣而使學(xué)生將更多的精力和時(shí)間用于創(chuàng)新能力的培養(yǎng)上,將使社會(huì),家庭與學(xué)校走得更近。校園網(wǎng)和網(wǎng)上學(xué)校代表的是一個(gè)新的產(chǎn)業(yè),它雖剛剛興起,但具有廣闊的前景,將給我們的教育事業(yè)帶來巨大的活力。計(jì)算機(jī)輔助教學(xué)的發(fā)展概況“蘋果計(jì)算機(jī)全球教育網(wǎng)”,使各國學(xué)生都可以通過標(biāo)準(zhǔn)電話線連接的計(jì)算機(jī)與世界各地的學(xué)生互相學(xué)習(xí),互通信息。我國計(jì)算機(jī)輔助教學(xué)發(fā)展的幾個(gè)階段:引進(jìn)介紹國外經(jīng)驗(yàn)、理論的準(zhǔn)備階段這一階段為80年代初到80年代中后期。我國計(jì)算機(jī)輔助教學(xué)起步較晚,加之硬件設(shè)備和理論基礎(chǔ)薄弱,因此可以說在此之前計(jì)算機(jī)在教育、教學(xué)中的應(yīng)用幾乎是空白,而此時(shí)國外計(jì)算機(jī)輔助教育卻發(fā)展極為迅速,成效極大。我國在這個(gè)階段主要是介紹、翻譯國外尤其是美國和日本的先進(jìn)經(jīng)驗(yàn)和成果。2.注重硬件配置的實(shí)施階段這一階段為80年代中后期到90年代初。在對(duì)國外計(jì)算機(jī)輔助教育初步了解的基礎(chǔ)上,一些有識(shí)之士提出我國應(yīng)加快發(fā)展計(jì)算機(jī)輔助教育。此時(shí)計(jì)算機(jī)價(jià)格下降,在一些有條件的地區(qū)和學(xué)校配置起一定數(shù)量的微機(jī),我國計(jì)算機(jī)輔助教育進(jìn)入了具體的實(shí)施階段。3.注重軟件開發(fā)的發(fā)展階段1994年以來,由于計(jì)算機(jī)價(jià)格不斷下降,擁有計(jì)算機(jī)的學(xué)校日益增多。在全國掀起了一股學(xué)微機(jī)、用微機(jī)的高潮,為CAI的發(fā)展提供了極好的契機(jī)?!罢n件”、“CAI”等詞頻繁地出現(xiàn)在教育領(lǐng)域中。不僅重視課件的編制,也重視課件的評(píng)價(jià)與推廣發(fā)行。這一時(shí)期是教學(xué)軟件興盛的時(shí)期。CAI的興起是教育領(lǐng)域中信息革命的最有代表性的產(chǎn)物。標(biāo)志著為適應(yīng)信息社會(huì)的需要在教育領(lǐng)域中進(jìn)行的又一次教育革命的開始。在這次教育行業(yè)的巨大變革中,計(jì)算機(jī)輔助教學(xué)完成了由個(gè)別化教學(xué)模式向課堂演示教學(xué)模式,又由課堂演示教學(xué)模式向多媒體網(wǎng)絡(luò)教學(xué)模式的轉(zhuǎn)變。不同的計(jì)算機(jī)輔助教學(xué)模式需要有不同的軟件以支持、但“課件本身具有教學(xué)目標(biāo)的特定性、教學(xué)內(nèi)容的完整性、教學(xué)模式的固定性和教學(xué)結(jié)構(gòu)的封閉性”等特點(diǎn),決定教學(xué)活動(dòng)中使用范圍有一定的局限性,不能適應(yīng)靈活多樣的教學(xué)模式。針對(duì)這一缺陷,“積件”、“群件”思想應(yīng)時(shí)而生,課件、積件、群件的多元化發(fā)展已成為CAI發(fā)展的趨勢(shì)。所完成的功能基本功能:再簡(jiǎn)潔易懂的操作界面下,用戶可以點(diǎn)擊具體機(jī)構(gòu)的選項(xiàng)進(jìn)入該機(jī)構(gòu)的演示界面,在根據(jù)界面提示對(duì)指定機(jī)構(gòu)的各項(xiàng)參數(shù)、演示方式、環(huán)境效果進(jìn)行設(shè)置后,就開始了該機(jī)構(gòu)的演示。演示期間,用戶可以自由轉(zhuǎn)換觀測(cè)角度、距離以及演示速度,并且可以隨時(shí)暫停以觀察特定時(shí)段的機(jī)構(gòu)運(yùn)動(dòng)形態(tài),傳統(tǒng)CAI軟件在觀測(cè)方式上無法選擇的弊端被徹底改善。逼真的效果:OpenGL虛擬現(xiàn)實(shí)建模技術(shù)的引入,大大增強(qiáng)了本軟件的視覺效果。在光照、材質(zhì)、紋理映射、色彩融合、反走樣及雙緩存等諸多技術(shù)的處理下,用戶可以仿佛身臨其境的欣賞形象逼真的機(jī)構(gòu)模型,使用效果明顯提高,將計(jì)算機(jī)輔助教學(xué)的視覺優(yōu)勢(shì)真正發(fā)揮出來。交互特性:本系統(tǒng)實(shí)現(xiàn)了教學(xué)過程以及輔助設(shè)計(jì)中真正意義上的交互。除了上述在觀測(cè)位置、環(huán)境效果上的交互,本系統(tǒng)更提供了對(duì)于機(jī)構(gòu)參數(shù)、運(yùn)動(dòng)形式的實(shí)時(shí)交互,這一點(diǎn)在CAI應(yīng)用軟件中可謂創(chuàng)新之舉。主動(dòng)獲取特定知識(shí)的功能,不僅真正的讓用戶成為教學(xué)過程中的主角,更激發(fā)了用戶獲取知識(shí)掌握知識(shí)的興趣。網(wǎng)絡(luò)功能:系統(tǒng)引入Microsoft公司的ActiveX控件技術(shù),將實(shí)現(xiàn)相關(guān)功能的程序代碼封裝為ActiveForm-可以在網(wǎng)頁上作為應(yīng)用程序載體的控件。由于這種方式巧妙的將三維動(dòng)畫在網(wǎng)上的傳輸載體由較大的視頻文件轉(zhuǎn)化為數(shù)據(jù)量很小的代碼文件,而將三維建模和視頻演示的工作留給本地計(jì)算機(jī)完成,成功突破了網(wǎng)絡(luò)帶寬這個(gè)瓶頸的束縛,用戶在網(wǎng)上觀看本系統(tǒng)的演示時(shí),完全沒有停頓情況。采用技術(shù)本系統(tǒng)是在Borland公司的Delphi7.0編程環(huán)境下,通過對(duì)OpenGL函數(shù)庫中建模以及渲染的函數(shù)進(jìn)行調(diào)用,開發(fā)而成。2DELPHI的簡(jiǎn)介與發(fā)展2.1DELPHI的有關(guān)概述DELPHI是BORLAND公司于1995年2月開始推出的,1996年推出TDELPHI2.0版,1997年推出了DELPHI3.0版,目前已經(jīng)推出T4.0版。DELPHI將真正的面向?qū)ο蟮恼Z言功能與方便的可視化編程環(huán)境結(jié)合在一起。比起其他可視化程序開發(fā)語言來說,DELPHI具有更強(qiáng)大的語言表述力、面向?qū)ο蟮奶卣骱陀行?。Delphi這個(gè)名字源于古希臘的城市名。它集中了第三代語言的優(yōu)點(diǎn)。以O(shè)bjectPascal為基礎(chǔ),擴(kuò)充了面向?qū)ο蟮哪芰Γ⑶彝昝赖亟Y(jié)合了可視化的開發(fā)手段。Delphi自1995年2月一推出就受到了人們的關(guān)注,并在當(dāng)年一舉奪得了多項(xiàng)大獎(jiǎng)。Delphi的出現(xiàn)打破了Visual可視化編程領(lǐng)域一統(tǒng)天下的局面。并且Delphi使用了本地編譯器直接生成技術(shù),使程序的執(zhí)行性能遠(yuǎn)遠(yuǎn)高于其它產(chǎn)品生成的程序。它還是真正的面向?qū)ο蟮木幊陶Z言。PASCAL語言的嚴(yán)謹(jǐn)加上可視化的優(yōu)勢(shì)和強(qiáng)大的數(shù)據(jù)庫功能使得它有充分的資本和微軟的VB叫板。許多人當(dāng)時(shí)都認(rèn)為Pascal是最有前途的程序設(shè)計(jì)語言,并預(yù)測(cè)Delphi將會(huì)成為可視化編程的主流環(huán)境·Delphi在你編好程序后自動(dòng)轉(zhuǎn)換成EXE文件它運(yùn)行時(shí)速度比VB快,而且編譯后不需要其他的支持庫就能運(yùn)行。它的數(shù)據(jù)庫功能也挺強(qiáng)的,是開發(fā)中型數(shù)據(jù)庫軟件理想的編程工具。Delphi適用于應(yīng)用軟件、數(shù)據(jù)庫系統(tǒng)、系統(tǒng)軟件等類型的開發(fā)。而且它擁有和VB差不多一樣的功能,而且一樣能應(yīng)用API函數(shù),這在控制Windows很有用。Delphi是全新的可視化編程環(huán)境,為我們提供了一種方便、快捷的Windows應(yīng)用程序開發(fā)工具。它使用了MicrosoftWindows圖形用戶界面的許多先進(jìn)特性和設(shè)計(jì)思想,采用了彈性可重復(fù)利用的完整的面向?qū)ο蟪绦蛘Z言(Object-OrientedLanguage)、當(dāng)今世界上最快的編輯器、最為領(lǐng)先的數(shù)據(jù)庫技術(shù)。對(duì)于廣大的程序開發(fā)人員來講,使用Delphi開發(fā)應(yīng)用軟件,無疑會(huì)大大地提高編程效率,而且隨著應(yīng)用的深入,您將會(huì)發(fā)現(xiàn)編程不再是枯燥無味的工作—Delphi的每一個(gè)設(shè)計(jì)細(xì)節(jié),都將帶給您一份欣喜。Delphi的基本形式Delphi實(shí)際上是Pascal語言的一種版本,但它與傳統(tǒng)的Pascal語言有天壤之別。DELPHI最初是作為歷史悠久的BorlandPascal產(chǎn)品線的修訂版出現(xiàn)的,所以DELPHI使用ObjectPascal的語言語義。DELPHI程序使用了一個(gè)被稱為可視化組件庫(即VCL:VisualComponentLibrary)的面向?qū)ο蟮目蚣?,正是VCL真正使DELPHI在競(jìng)爭(zhēng)中脫穎而出。由于采用了多態(tài)性、封裝性和繼承性等面向?qū)ο蟮奶卣?,使得DELPHIVCL能為程序員提供無可比擬的控制能力。面向?qū)ο蟮恼Z言可以被分為兩類—純粹的OOP實(shí)現(xiàn),如SmalItalk和Simula,以及混合型的C++和DELPHI。如同C++是C的一個(gè)面向?qū)ο蟮臄U(kuò)展一樣,DELPHI的ObjectPascal也是Pascal的一個(gè)擴(kuò)展。ObjectPascal與C++的目標(biāo)是相同的,它們必須在能夠不加改動(dòng)的運(yùn)行原有代碼的同時(shí)提供完全的面向?qū)ο蟮奶匦?事實(shí)上,如。elphi等混合語言之所以比純粹的OOP語言成功,其原因在很大程度上應(yīng)歸功于對(duì)它們的基語言的廣泛了解和使用。它使得Pascal程序員在決定轉(zhuǎn)向OOP時(shí)不必去學(xué)習(xí)一種全新的語言。2.2DELPHI的基本特性繼承,即新類型的派生,出現(xiàn)在甚至是最簡(jiǎn)單的Delphi程序中,它是面向?qū)ο蟮木幊痰闹饕卣髦?。繼承使得VCL呈現(xiàn)一種層次結(jié)構(gòu)。在Delphi中,所有的類最終都從同一個(gè)被稱作TObject的基類派生而來,派生類在繼承祖先類的屬性的同時(shí)添加它自己的功能。通常新的Delphi類將從該層次結(jié)構(gòu)的更下層開始繼承以獲得比TObject中更多的屬性。像VCL這樣的類結(jié)構(gòu)中具有一種父子關(guān)系,其中祖先類通常被稱作是父親,基類,而派生類(或派生類),則被看作是該基類的一個(gè)孩子。在層次結(jié)構(gòu)中靠近根的類更為抽象和通用,而距根較遠(yuǎn)的類則更為具體和專用。派生類從其父親繼承而來的屬性可以不加修改地使用,也可以根據(jù)需要加以修改。在祖先類中聲明屬性是因?yàn)樗鼈儽灰唤M派生類所共享。例如,所有對(duì)象的祖先TObject中包含一個(gè)被為Create的方法(一個(gè)Pascal過程或函數(shù))。所有其他類都繼承了這一法,但侮個(gè)類都可以實(shí)現(xiàn)一個(gè)適用于那個(gè)類的Create版本。面向?qū)ο蟮亩鄳B(tài)性的特性使得Create方法依據(jù)使用它的對(duì)象的不同而表現(xiàn)不同的行為。這一特性使你能通過一個(gè)一致的接口,以相似的方式來訪問不同的對(duì)象。如果你需要改變某個(gè)屬性(類的特征之一)的方法,你可利用多態(tài)性來重載它.這一特性在整個(gè)VCI中經(jīng)常會(huì)用到。OOP的另一個(gè)基本特性—封裝性是指將一個(gè)類的屬性和方法放于同一塊代碼中,并使類的接口與其他實(shí)現(xiàn)相獨(dú)立。接口是程序中暴露給用戶(在這里是指訪問你的代碼的程序員)的那一部分,而實(shí)現(xiàn)則是指只對(duì)編寫該類代碼的程序員可見的部分。Delphi的ObjectPascal從字而上就表明了這一點(diǎn)。封裝性使得程序員可以通過它們的屬性和方法來訪問對(duì)象而不必了解內(nèi)部操作的細(xì)節(jié)。Delphi是全新的可視化編程環(huán)境,為我們提供了一種方便、快捷的Windows應(yīng)用程序開發(fā)工具。它使用了MicrosoftWindows圖形用戶界面的許多先進(jìn)特性和設(shè)計(jì)思想,采用了彈性可重復(fù)利用的完整的面向?qū)ο蟪绦蛘Z(Object-OrientedLanguage)、當(dāng)今世界上最快的編輯器、最為領(lǐng)先的數(shù)據(jù)庫技術(shù)。對(duì)于廣大的程序開發(fā)人員來講,使用Delphi開發(fā)應(yīng)用軟件,無疑會(huì)大大地提高編程效率,而且隨著應(yīng)用的深入,您將會(huì)發(fā)現(xiàn)編程不再是枯燥無味的工作——Delphi的每一個(gè)設(shè)計(jì)細(xì)節(jié),都將帶給您一份欣喜。2.3Delphi的基本形式

Delphi實(shí)際上是Pascal語言的一種版本,但它與傳統(tǒng)的Pascal語言有天壤之別。一個(gè)Delphi程序首先是應(yīng)用程序框架,而這一框架正是應(yīng)用程序的“骨架”。在骨架上即使沒有附著任何東西,仍可以嚴(yán)格地按照設(shè)計(jì)運(yùn)行。您的工作只是在“骨架”中加入您的程序。缺省的應(yīng)用程序是一個(gè)空白的窗體(Form),您可以運(yùn)行它,結(jié)果得到一個(gè)空白的窗口。這個(gè)窗口具有Windows窗口的全部性質(zhì):可以被放大縮小、移動(dòng)、最大最小化等,但您卻沒有編寫一行程序。因此,可以說應(yīng)用程序框架通過提供所有應(yīng)用程序共有的東西,為用戶應(yīng)用程序的開發(fā)打下了良好的基礎(chǔ)。Delphi已經(jīng)為您做好了一切基礎(chǔ)工作——程序框架就是一個(gè)已經(jīng)完成的可運(yùn)行應(yīng)用程序,只是不處理任何事情。您所需要做的,只是在程序中加入完成您所需功能的代碼而已。

在空白窗口的背后,應(yīng)用程序的框架正在等待用戶的輸入。由于您并未告訴它接收到用戶輸入后作何反應(yīng),窗口除了響應(yīng)Windows的基本操作(移動(dòng)、縮放等)外,它只是接受用戶的輸入,然后再忽略。Delphi把Windows編程的回調(diào)、句柄處理等繁復(fù)過程都放在一個(gè)不可見的Romulam覆蓋物下面,這樣您可以不為它們所困擾,輕松從容地對(duì)可視部件進(jìn)行編程。3OpenGL的虛擬現(xiàn)實(shí)技術(shù)3.1OpenGL簡(jiǎn)介OpenGL,是OpenGraphicsLibrary(開放圖形庫)的英文縮寫,是SGI公司為其圖像工作站開發(fā)的可以獨(dú)立于窗口操作系統(tǒng)和硬件環(huán)境的三維圖形庫,是“一種到圖形硬件的軟件接口”。由于其強(qiáng)大的圖形功能和跨平臺(tái)的能力,已廣泛應(yīng)用于科學(xué)可視化、實(shí)體造型、CAD/CAM、模擬仿真等諸多領(lǐng)域。目前,Microsoft、SGI、IBM、DEC、SUN、HP等大公司都采用了OpenGL作為三維圖形標(biāo)準(zhǔn)。許多軟件廠商也紛紛以O(shè)penGL為基礎(chǔ)開發(fā)出自己的產(chǎn)品,其中比較著名的產(chǎn)品包括動(dòng)畫制作軟件SoftImage和3DStudioMAX、仿真軟件OpenInventor、VR軟件WorldToolKit、CAM軟件ProEngineer、GIS軟件ARC/INFO等。特別是微軟的加入,使在微機(jī)上實(shí)現(xiàn)三維真實(shí)感圖形的生成與顯示成為可能。由于OpenGL獨(dú)立于硬件設(shè)備和操作系統(tǒng),包括微軟在內(nèi)的許多公司都把OpenGL集成到操作系統(tǒng)中,這其中就包括我們熟悉的UNIX和Windows95/NT/98/2000等。3.2OpenGL技術(shù)基礎(chǔ)OpenGL作為一個(gè)開放的三維圖形軟件包,它獨(dú)立于窗口系統(tǒng)和操作系統(tǒng)。以O(shè)penGL為基礎(chǔ)開發(fā)的應(yīng)用程序可以十分方便地在各種平臺(tái)間移植。而且OpenGL可以與Delphi緊密接口,保證算法的正確和可靠;OpenGL使用簡(jiǎn)便,效率較高。簡(jiǎn)要地說,OpenGL具有以下八種功能:建模:OpenGL圖形庫除了提供基本的點(diǎn)、線和多邊形的繪制函數(shù)外,還提供了復(fù)雜的三維物體(球、錐、多面體、茶壺等)以及復(fù)雜曲線曲面(如Bezier、Nurbs等曲線曲面)繪制函數(shù)。變換:OpenGL圖形庫的變換包括基本變換和投影變換?;咀儞Q有平移、旋轉(zhuǎn)、變比和鏡像四種變換。投影變換有平行投影(又稱正射投影)和透視投影兩種變換。顏色模式設(shè)置:OpenGL顏色模式有兩種,即RGBA模式和顏色索引(Colorlndex)。光照和材質(zhì)設(shè)置:OpenGL光有輻射光(EmittedLight)、環(huán)境光(AmbientLight)、漫反射光(DiffuseLight)和鏡面光(SpecularLight)。材質(zhì)是用光反射率來表示的。場(chǎng)景(Scene)中物體最終反映到人眼的顏色是光的紅綠藍(lán)分量與材質(zhì)紅綠藍(lán)分量的反射率相乘后形成的顏色。紋理映射(TextureMapping):利用OpenGL紋理映射功能可以十分逼真地表達(dá)物體表面細(xì)節(jié)。位圖顯示和圖像增強(qiáng):圖像功能除了基本的復(fù)制和像素讀寫外,還提供融合(Blending)、反走樣(Antialiasing)和霧柔化(Fog)的特殊圖像效果處理。以上三條可使被仿真實(shí)體更具真實(shí)感,增強(qiáng)圖形顯示的效果。雙緩存(DoubleBuffering)動(dòng)畫:雙緩存即前臺(tái)緩存和后臺(tái)緩存。簡(jiǎn)而言之,后臺(tái)緩存計(jì)算場(chǎng)景、生成畫面,前臺(tái)緩存顯示后臺(tái)緩存已畫好的畫面。其他:利用OpenGL還能實(shí)現(xiàn)深度暗示(DepthCue)、運(yùn)動(dòng)模糊(MotionBlur)等特殊效果。從而實(shí)現(xiàn)了消隱算法。OpenGL在Windows下的運(yùn)行機(jī)制:OpenGL函數(shù)通過“繪制描述表”(RenderingContext,RC)完成三維圖形的繪制,只要在創(chuàng)建RC時(shí)將它與一個(gè)“設(shè)備描述表”(DeviceContexts,DC)相關(guān)聯(lián)(RC只能由已經(jīng)建立了位圖格式的DC來創(chuàng)建),OpenGL的函數(shù)就可以通過RC對(duì)應(yīng)的DC繪制到相應(yīng)的顯示設(shè)備上。(如圖3.1所示)相應(yīng)步驟如下:圖3.11.設(shè)置顯示設(shè)備DC的位圖格式屬性:通過填寫一個(gè)PIXELFORMATDESCRIPTOR的結(jié)構(gòu)來完成,該結(jié)構(gòu)決定OpenGL繪圖的物理設(shè)備屬性。DC有可能只支持部分位圖格式,因此程序必須首先使用函數(shù)ChoosePixelFormat選擇與DC所支持的指定位圖格式最接近的位圖格式,然后使用函數(shù)SetPixelFormat設(shè)置DC的位圖格式。2.創(chuàng)建繪制場(chǎng)境RC與DC的聯(lián)系。利用DC創(chuàng)建繪制場(chǎng)景RC(wglCreateContext),以便在RC與DC之間創(chuàng)建關(guān)聯(lián),此時(shí)需要使用函數(shù)wglMakeCurrent。3.調(diào)用OpenGL函數(shù)進(jìn)行繪圖。由于線程與RC一一對(duì)應(yīng),OpenGL函數(shù)的參數(shù)中都不指明本線程RC的句柄(handle)。4.釋放相關(guān)內(nèi)存。繪圖完畢后,需要調(diào)用函數(shù)wglMakeCurrent設(shè)置當(dāng)前線程的RC為NULL,從而斷開當(dāng)前線程和該繪制場(chǎng)景的關(guān)聯(lián),并由此斷開與DC的關(guān)聯(lián)。此時(shí)RC句柄的有效性不明確,所以在后面刪除RC時(shí),要首先判斷RC句柄的有效性再調(diào)用函數(shù)wglDeleteContext,然后根據(jù)情況調(diào)用函數(shù)ReleaseDC或函數(shù)DeleteDC釋放或刪除DC。3.3OpenGL應(yīng)用于本系統(tǒng)的可行性作為機(jī)械原理課程學(xué)習(xí)的主要對(duì)象,機(jī)械機(jī)構(gòu)的外在形態(tài)和運(yùn)動(dòng)規(guī)律有其規(guī)律可循(可以通過數(shù)學(xué)和空間幾何運(yùn)算確定),因此非常適合用OpenGL進(jìn)行建模與演示。事實(shí)證明,應(yīng)用OpenGL豐富的庫函數(shù)、靈活的建模技巧,不僅可以構(gòu)建起逼真的機(jī)構(gòu)模型,而且在描述空間運(yùn)動(dòng)上也是得心應(yīng)手,完全可以滿足我們對(duì)全新機(jī)械原理CAI的各種要求。3.4應(yīng)用Delphi開發(fā)環(huán)境中的OpenGL技術(shù)在OpenGL的大多數(shù)應(yīng)用中,都是在VisualC++語言環(huán)境下進(jìn)行開發(fā)的,這和微軟公司首先實(shí)現(xiàn)了在微機(jī)上使用OpenGL并首推VisualC++環(huán)境下的開發(fā)不無關(guān)系,然而這未必就是唯一的和最好的選擇。在以往應(yīng)用VisualC++進(jìn)行OpenGL開發(fā)的過程中,我發(fā)現(xiàn)了一些不足之處。其一,開發(fā)方法較復(fù)雜。開發(fā)OpenGL程序,語言環(huán)境的工作主要是調(diào)用gl、glu、glut函數(shù)庫中的函數(shù),而除此之外VisualC++仍須做很多底層的工作,這種比較復(fù)雜的開發(fā)手段無疑增加了開發(fā)者的負(fù)擔(dān)。其二,開發(fā)環(huán)境較差。VisualC++雖然也是可視化的,但它只對(duì)窗口界面的設(shè)計(jì)采用了可視化,并非對(duì)整個(gè)應(yīng)用程序的可視化,導(dǎo)致程序開發(fā)周期過長。為此,我們采用了Delphi進(jìn)行本程序開發(fā),不僅繼承了傳統(tǒng)編譯程序開發(fā)工具高效的特點(diǎn)和底層硬件控制的能力,同時(shí)通過可視化構(gòu)件類庫所提供的構(gòu)件以及對(duì)OpenGL完美的支持,就可以高效的實(shí)現(xiàn)即定功能。3.5OpenGL的基本功能作為硬件圖形設(shè)備的軟件接口,OpenGL的主要意圖是在幀緩沖區(qū)中精確的繪制2D和3D的物體。這些物體被描述為頂點(diǎn)或像素的序列。OpenGL形成若干處理步驟,將這些數(shù)據(jù)轉(zhuǎn)化成像素,并在幀緩沖區(qū)中形成最終的影像。OpenGL作為獨(dú)立于窗口系統(tǒng)、操作系統(tǒng)和硬件平臺(tái)的三維圖形處理技術(shù),必然包括:圖形處理、交互、窗口、仿真設(shè)備驅(qū)動(dòng)幾個(gè)方面。3.6OpenGL的基本處理流程OpenGL的命令發(fā)出后,或者是存儲(chǔ)在顯示列表中供以后調(diào)用,或者與像素操作一起處理,通過運(yùn)算、逐個(gè)頂點(diǎn)操作,進(jìn)行光柵化處理、逐個(gè)片段操作,形成影像并存入幀緩沖區(qū)。對(duì)于圖像數(shù)據(jù),像素操作的結(jié)果被存儲(chǔ)在紋理內(nèi)存中,供紋理組裝后與頂點(diǎn)數(shù)據(jù)一起進(jìn)行光柵化處理,共同形成三維影像。圖3.2顯示了OpenGL基本工作流程圖,描述了一個(gè)OpenGL命令從開始到最終形成圖像的過程。圖3.23.7OpenGL的函數(shù)庫OpenGL的函數(shù)大致上分為6類:1.OpenGL核心庫:約150個(gè)函數(shù)。函數(shù)名前綴為gl。這部分函數(shù)用于常規(guī)的、核心的圖形處理。由于許多函數(shù)可以接受不同數(shù)據(jù)類型的參數(shù),因此派生出來的函數(shù)原形多達(dá)300多個(gè)。2.OpenGL實(shí)用庫:約40個(gè)函數(shù)。函數(shù)名前綴為glu。這部分函數(shù)調(diào)用核心庫的函數(shù),為開發(fā)者提供相對(duì)簡(jiǎn)單的用法,實(shí)現(xiàn)一些較為復(fù)雜的操作。如:坐標(biāo)變換、紋理映射、繪制橢球、茶壺等簡(jiǎn)單多邊形。OpenGL核心庫和實(shí)用庫的函數(shù)是可以在所有OpenGL平臺(tái)上運(yùn)行的。3.OpenGL輔助庫:約30個(gè)函數(shù)。函數(shù)名前綴為aux。這部分函數(shù)提供窗口管理、輸入輸出處理以及繪制一些簡(jiǎn)單三維物體。因此,OpenGL輔助庫的函數(shù)不能在所有的OpenGL平臺(tái)上實(shí)現(xiàn)。4.OpenGL工具庫;約30個(gè)函數(shù)。函數(shù)名前綴為glut。這部分函數(shù)主要提供基于窗口的工具,如:多窗口繪制、空消息和定時(shí)器,以及繪制一些較復(fù)雜物體的函數(shù)。由于GLUT的窗口管理函數(shù)是不依賴于運(yùn)行環(huán)境的,因此GLUT可以在所有OpenGL平臺(tái)上運(yùn)行。5.Windows專用:約16個(gè)函數(shù)。函數(shù)名前綴為wgl。這部分函數(shù)用于連接OpenGL和Windowsx/NT,以彌補(bǔ)OpenGL在文本方面的不足。專用于Windowsx/NT環(huán)境。6.Win32API函數(shù):約6個(gè)函數(shù)。函數(shù)名無專用前綴。這部分函數(shù)用于處理像素存儲(chǔ)格式和雙幀緩存。專用于Windowsx/NT環(huán)境。這6個(gè)函數(shù)將替換WindowsGDI中原有的同樣的函數(shù),因此,鏈接庫的清單中OpenGL的庫必須放在前面。3.8OpenGL的基本圖元OpenGL的基本圖元包括點(diǎn)(Point),線段(Linesegement),和多邊形(Polygon)。在即enGL中,點(diǎn)指的是頂點(diǎn),即空間幾何中的一個(gè)三維物體的幾何頂點(diǎn),通常用齊次坐標(biāo)表示(x,y,z,w),w的默認(rèn)值為1.0.z的默認(rèn)值為0.0;線段與通常幾何中描述的線段是一致的,即兩端有端點(diǎn)的有限長度的直線;多邊形是由一系列線段首尾相接而成的封閉區(qū)域,它必須是幾何中的凸多邊形,否則不能被OpenGL的函數(shù)接受?;緢D元定義為一個(gè)或多個(gè)頂點(diǎn)的集合。一個(gè)頂點(diǎn)定義一個(gè)點(diǎn),一條線的終點(diǎn),或者一個(gè)多邊形兩條邊相交的角。數(shù)據(jù)(由頂點(diǎn)坐標(biāo)、顏色、法線、紋理坐標(biāo),以及邊線標(biāo)記組成)與頂點(diǎn)相關(guān)聯(lián),并且每一個(gè)頂點(diǎn)和它的像素?cái)?shù)據(jù)按照順序,以同樣的方式分別進(jìn)行處理。3.9OpenGL的渲染功能OpenGL的強(qiáng)大繪圖功能表現(xiàn)在繪制各種復(fù)雜的三維圖像,針對(duì)的是一個(gè)豐富多彩的三維世界。與二維圖形不同的是,首先在三維空間合適的位置布置模型,選擇一個(gè)有利的觀察點(diǎn),然后才能看到一幅視覺效果良好的逼真的三維圖像。OpenGL是通過取景變換、投影變換、視見區(qū)變換以及控制變換矩陣堆棧、恢復(fù)OpenGL的狀態(tài)來實(shí)現(xiàn)復(fù)雜三維圖像的繪制。OpenGL對(duì)圖像進(jìn)行變換與照相機(jī)拍攝物體的過程是相似的。支起三角架,把照相機(jī)放在場(chǎng)景中,相當(dāng)于OpenGL的取景變換。把要拍攝的場(chǎng)景物體固定在要拍攝物體上,相當(dāng)于OpenGL的模型變換。3.10應(yīng)用Delphi開發(fā)環(huán)境中的OpenGL技術(shù)在OpenGL的大多數(shù)應(yīng)用中,都是在VisualC++語言環(huán)境下進(jìn)行開發(fā)的,這和微軟公司首先實(shí)現(xiàn)了在微機(jī)上使用OpenGL并首推VisualC++環(huán)境下的開發(fā)不無關(guān)系,然而這未必就是唯一的和最好的選擇。在以往應(yīng)用VisualC++進(jìn)行OpenGL開發(fā)的過程中,我發(fā)現(xiàn)了一些不足之處。其一,開發(fā)方法較復(fù)雜。開發(fā)OpenGL程序,語言環(huán)境的工作主要是調(diào)用gl、glu、glut函數(shù)庫中的函數(shù),而除此之外VisualC++仍須做很多底層的工作,這種比較復(fù)雜的開發(fā)手段無疑增加了開發(fā)者的負(fù)擔(dān)。其二,開發(fā)環(huán)境較差。VisualC++雖然也是可視化的,但它只對(duì)窗口界面的設(shè)計(jì)采用了可視化,并非對(duì)整個(gè)應(yīng)用程序的可視化,導(dǎo)致程序開發(fā)周期過長。為此,我們采用了Delphi進(jìn)行本程序開發(fā),不僅繼承了傳統(tǒng)編譯程序開發(fā)工具高效的特點(diǎn)和底層硬件控制的能力,同時(shí)通過可視化構(gòu)件類庫所提供的構(gòu)件以及對(duì)OpenGL完美的支持,就可以高效的實(shí)現(xiàn)即定功能。典型機(jī)構(gòu)的理論基礎(chǔ)4.1機(jī)構(gòu)的組成和結(jié)構(gòu)機(jī)構(gòu)是具有確定運(yùn)動(dòng)的實(shí)物組合體。作無規(guī)則運(yùn)動(dòng)或不能產(chǎn)生運(yùn)動(dòng)的實(shí)物組合均不能成為機(jī)構(gòu)。了解機(jī)構(gòu)的組成和結(jié)構(gòu)特點(diǎn),掌握機(jī)構(gòu)組成的一般規(guī)律,無論對(duì)于分析已有的機(jī)構(gòu)還是著手創(chuàng)新設(shè)計(jì)新機(jī)械,都具有十分重要的指導(dǎo)意義。4.1從制造、加工的角度看,任何機(jī)械都是由若干單獨(dú)加工制造的單元體―零件組裝而成。例如圖1.1所示的內(nèi)燃機(jī)中的連桿,就是由單獨(dú)加工的連桿體1、連桿頭2軸瓦3、螺桿4、螺母5、軸套6等零件裝配而成的。但是從機(jī)械實(shí)現(xiàn)預(yù)期運(yùn)動(dòng)和功能的角度來看,并不是每個(gè)零件都獨(dú)立起作用。每一個(gè)獨(dú)立影響機(jī)械功能并能獨(dú)立運(yùn)動(dòng)的單元體稱為構(gòu)件。構(gòu)件可以是一個(gè)獨(dú)立運(yùn)動(dòng)的零件,但有時(shí)為了結(jié)構(gòu)和工藝上的需要,常將幾個(gè)零件剛性地聯(lián)接在一起組成構(gòu)件。圖4.1所示的連桿就是由許多不產(chǎn)生相對(duì)運(yùn)動(dòng)的零件剛性聯(lián)接而成的一個(gè)構(gòu)件,它們是一個(gè)不可分割的運(yùn)動(dòng)單元。圖4.1運(yùn)動(dòng)副機(jī)構(gòu)都是由構(gòu)件組合而成的,其中每個(gè)構(gòu)件都以一定的方式至少與另一個(gè)構(gòu)件相聯(lián)接,這種聯(lián)接既使兩個(gè)構(gòu)件直接接觸,又使兩構(gòu)件能產(chǎn)生一定的相對(duì)運(yùn)動(dòng)。每兩個(gè)構(gòu)件間的這種直接接觸所形成的可動(dòng)聯(lián)接稱為運(yùn)動(dòng)副。構(gòu)成運(yùn)動(dòng)副的兩個(gè)構(gòu)件間的接觸不外乎點(diǎn)、線、面3種形式,兩個(gè)構(gòu)件上參與接觸而構(gòu)成運(yùn)動(dòng)副的點(diǎn)、線、面部分稱為運(yùn)動(dòng)副元素。構(gòu)件所具有的獨(dú)立運(yùn)動(dòng)的數(shù)目(或是確定構(gòu)件位置所需要的獨(dú)立參變量的數(shù)目)稱為構(gòu)件的自由度。一個(gè)構(gòu)件在未與其它構(gòu)件聯(lián)結(jié)前,在空間可產(chǎn)生6個(gè)獨(dú)立運(yùn)動(dòng),也就是說具有6個(gè)自由度。運(yùn)動(dòng)鏈兩個(gè)以上構(gòu)件通過運(yùn)動(dòng)副的聯(lián)接而構(gòu)成的系統(tǒng)稱為運(yùn)動(dòng)鏈。如果組成運(yùn)動(dòng)鏈的各構(gòu)件構(gòu)成首末封閉的系統(tǒng)(如圖4.2(a)和(b)所示),則稱為閉式運(yùn)動(dòng)鏈,簡(jiǎn)稱閉鏈。如果組成運(yùn)動(dòng)鏈的各構(gòu)件末構(gòu)成首末封閉的系統(tǒng)(如圖4.2(c)所示),則稱為開式運(yùn)動(dòng)鏈,簡(jiǎn)稱開鏈。圖4.2傳統(tǒng)的機(jī)械中以閉式運(yùn)動(dòng)鏈為多,隨著生產(chǎn)線中機(jī)械手和機(jī)器人的應(yīng)用日益普遍,機(jī)械中開式運(yùn)動(dòng)鏈也逐漸增多。機(jī)構(gòu)在運(yùn)動(dòng)鏈中,將某一構(gòu)件加以固定,而讓另一個(gè)(或幾個(gè))構(gòu)件按給定運(yùn)動(dòng)規(guī)律相對(duì)于該固定構(gòu)件運(yùn)動(dòng),若運(yùn)動(dòng)鏈中其余各構(gòu)件都能得到確定的相對(duì)運(yùn)動(dòng),則此運(yùn)動(dòng)鏈成為機(jī)構(gòu)。機(jī)構(gòu)中固定不動(dòng)的構(gòu)件稱為機(jī)架,按照給定運(yùn)動(dòng)規(guī)律獨(dú)立運(yùn)動(dòng)的構(gòu)件稱為原動(dòng)件(或主動(dòng)件),而其余活動(dòng)構(gòu)件稱為從動(dòng)件。組成機(jī)構(gòu)的各構(gòu)件的相對(duì)運(yùn)動(dòng)均在同一平面內(nèi)或在相互平行的平面內(nèi),則此機(jī)構(gòu)稱為平面機(jī)構(gòu);機(jī)構(gòu)各構(gòu)件的相對(duì)運(yùn)動(dòng)不在同一平面或平行平面內(nèi),則此機(jī)構(gòu)稱為空間機(jī)構(gòu)。4.2運(yùn)動(dòng)鏈成為機(jī)構(gòu)的條件判斷所設(shè)計(jì)的運(yùn)動(dòng)鏈能否成為機(jī)構(gòu),是提出新的方案時(shí)自行評(píng)價(jià)方案可行性的關(guān)鍵一步。運(yùn)動(dòng)鏈能成為機(jī)構(gòu)的首要條件,是運(yùn)動(dòng)鏈的自由度必須大于零。如圖4.2(a)所示的平面三構(gòu)件運(yùn)動(dòng)鏈,其自由度F=3n-2p5-p4=0。F=0表明該運(yùn)動(dòng)鏈中各構(gòu)件之間已無相對(duì)運(yùn)動(dòng),只構(gòu)成了一個(gè)剛性架,因而不能成為機(jī)構(gòu)。又如圖4.2(b)所示的平面四構(gòu)件運(yùn)動(dòng)鏈,其自由度=-1,表明該運(yùn)動(dòng)鏈由于約束過多,已成為超靜定架了,也不能成為機(jī)構(gòu)。如果運(yùn)動(dòng)鏈的自由度大于零,則需進(jìn)一步判斷該運(yùn)動(dòng)鏈?zhǔn)欠窬哂写_定運(yùn)動(dòng)。由于通常每一個(gè)原動(dòng)件只具有一個(gè)獨(dú)立運(yùn)動(dòng)(如用電動(dòng)機(jī)作為原動(dòng)機(jī),其轉(zhuǎn)子只能給原動(dòng)件一個(gè)獨(dú)立的轉(zhuǎn)動(dòng);如用氣缸或液壓缸作為原動(dòng)機(jī),其活塞桿也只能給原動(dòng)件一個(gè)相對(duì)獨(dú)立的直移運(yùn)動(dòng)等),所以在運(yùn)動(dòng)鏈自由度大于零的情況下,運(yùn)動(dòng)鏈成為機(jī)構(gòu)的條件是:原動(dòng)件的數(shù)目應(yīng)等于運(yùn)動(dòng)鏈的自由度數(shù)。如圖4.2(C)所示的平面四桿運(yùn)動(dòng)鏈,其自由度F=3n-2p5-p4=1,在這個(gè)自由度為1的運(yùn)動(dòng)鏈中,若取構(gòu)件1為原動(dòng)件,則從圖中可以看出,構(gòu)件1每轉(zhuǎn)過一個(gè)角度,構(gòu)件2和3便有一個(gè)確定的相對(duì)位置,也就是說這個(gè)運(yùn)動(dòng)鏈能夠成為機(jī)構(gòu)。如果同時(shí)使構(gòu)件3也作為原動(dòng)件具有獨(dú)立的運(yùn)動(dòng),則運(yùn)動(dòng)鏈內(nèi)部的運(yùn)動(dòng)關(guān)系將發(fā)生矛盾,其中最薄弱的構(gòu)件必將損壞。這說明,要使自由度大于零的運(yùn)動(dòng)鏈成為機(jī)構(gòu),原動(dòng)件的數(shù)目不可多于運(yùn)動(dòng)鏈的自由度數(shù)。又如圖4.2(d)所示的平面五桿運(yùn)動(dòng)鏈,其自由度F=3n-2p5-p4=2,在這個(gè)自由度為2的運(yùn)動(dòng)鏈中,若同時(shí)取構(gòu)件1和4作為原動(dòng)件,則由圖看出,構(gòu)件2和3具有確定的運(yùn)動(dòng),即該運(yùn)動(dòng)鏈能成為機(jī)構(gòu)。如果只取構(gòu)件1作為原動(dòng)件,則由圖可知,其余三個(gè)活動(dòng)構(gòu)件2,3,4的運(yùn)動(dòng)將不能確定,只能作無規(guī)則的運(yùn)動(dòng)。這說明,要使自由度大于零的運(yùn)動(dòng)鏈成為機(jī)構(gòu),原動(dòng)件的數(shù)目不可少于運(yùn)動(dòng)鏈的自由度數(shù)。以上所舉的例子均為閉式運(yùn)動(dòng)鏈,圖4.2(e)所示為平面開式鏈,該開式鏈的自由度等于3。若同時(shí)取構(gòu)件1,2,3為原動(dòng)件,則由圖可知,該運(yùn)動(dòng)鏈具有確禪的運(yùn)動(dòng),能成為機(jī)構(gòu),它即是簡(jiǎn)單的機(jī)械手中的開式鏈機(jī)構(gòu)。但若只取其中的一個(gè)或兩個(gè)構(gòu)件為原動(dòng)件,則由圖可以看出,其余活動(dòng)構(gòu)件的運(yùn)動(dòng)將不能確定,此運(yùn)動(dòng)鏈就不能成為機(jī)構(gòu)。綜上所述,運(yùn)動(dòng)鏈成為機(jī)構(gòu)的條件為:取運(yùn)動(dòng)鏈中一個(gè)構(gòu)件相對(duì)固定作為機(jī)架,運(yùn)動(dòng)鏈相對(duì)于機(jī)架的自由度必須大于零,且原動(dòng)件的數(shù)目等于運(yùn)動(dòng)鏈的自由度數(shù)。連桿機(jī)構(gòu)連桿機(jī)構(gòu)是一種應(yīng)用十分廣泛的機(jī)構(gòu),圖4.3中所示的a)四桿機(jī)構(gòu)、b)曲柄滑塊和c)導(dǎo)桿機(jī)構(gòu)等都是典型的連桿機(jī)構(gòu)形式。在組成機(jī)構(gòu)的構(gòu)件中,不直接與機(jī)架相連的中間構(gòu)件稱為連桿,凡具有連桿的機(jī)構(gòu)被稱為連桿機(jī)構(gòu)。圖4.3連桿機(jī)構(gòu)機(jī)傳動(dòng)特點(diǎn)1.連桿機(jī)構(gòu)中的運(yùn)動(dòng)副一般均為低副,因?yàn)榈透眱稍貫槊娼佑|,故在傳遞同樣載荷的條件下,兩元素間的壓強(qiáng)較小,可以承受較大的載荷,而且?guī)缀涡螤詈?jiǎn)單便于加工制造。2.在連桿機(jī)構(gòu)中,但原動(dòng)件以同樣的運(yùn)動(dòng)規(guī)律運(yùn)動(dòng)時(shí),如果改變各構(gòu)件的相對(duì)長度關(guān)系,便可使從動(dòng)件得到不同的運(yùn)動(dòng)規(guī)律。3.在連桿機(jī)構(gòu)中,連桿上不同點(diǎn)的軌跡是不同形狀的曲線(特稱為連桿曲線),而且隨著各構(gòu)件相對(duì)長度關(guān)系的改變,這些連桿曲線的形狀也將改變,從而可以得到各種不同形狀的曲線,可以利用這些曲線來滿足不同軌跡的要求。4.連桿機(jī)構(gòu)還可以方便的用來達(dá)到增力、擴(kuò)大行程和實(shí)現(xiàn)較遠(yuǎn)距離的傳動(dòng)等目的。平面四連桿機(jī)構(gòu)的基本知識(shí)1.平面連桿機(jī)構(gòu)有曲柄的條件:轉(zhuǎn)動(dòng)副為周轉(zhuǎn)副的條件是:最短桿與最長桿的長度和應(yīng)小于或等于其他兩桿的長度和(通常稱為桿長條件)。并且組成該周轉(zhuǎn)副的兩桿中必有一桿為四桿中的最短桿。四桿機(jī)構(gòu)有曲柄的條件是:各桿的長度需滿足桿長條件,且其最短桿為連架桿或機(jī)架。當(dāng)最短桿為連架桿時(shí),該四桿機(jī)構(gòu)將成為曲柄搖桿機(jī)構(gòu)。當(dāng)最短桿為機(jī)架時(shí)將成為雙曲柄機(jī)構(gòu)。如果最短桿為連桿,則該四桿機(jī)構(gòu)將不存在曲柄,成為雙搖桿機(jī)構(gòu)。2.急回運(yùn)動(dòng)和行程速比系數(shù):反正行程速比系數(shù)K用來表明急回運(yùn)動(dòng)的急回程度。當(dāng)曲柄搖桿機(jī)構(gòu)在運(yùn)動(dòng)過程中出現(xiàn)極位夾角時(shí),機(jī)構(gòu)便具有急回運(yùn)動(dòng)特性。角度越大,反正行程速比系數(shù)值越大,機(jī)構(gòu)的急回運(yùn)動(dòng)性質(zhì)也越顯著。3.鉸鏈四桿機(jī)構(gòu)的運(yùn)動(dòng)連續(xù)性:運(yùn)動(dòng)連續(xù)性,是指連桿機(jī)構(gòu)在運(yùn)動(dòng)過程中能否連續(xù)實(shí)現(xiàn)給定的各個(gè)位置的問題。在設(shè)計(jì)連桿機(jī)構(gòu)時(shí),不能要求其從動(dòng)件在兩個(gè)不連通的可行域內(nèi)連續(xù)運(yùn)動(dòng)。因此,在設(shè)計(jì)過程中,需檢查所設(shè)計(jì)的機(jī)構(gòu)能否滿足運(yùn)動(dòng)連續(xù)性要求,即檢查是否有錯(cuò)位、錯(cuò)序問題存在。平面四桿機(jī)構(gòu)的設(shè)計(jì)不同于機(jī)械原理課程中所提及的“按預(yù)定運(yùn)動(dòng)規(guī)律設(shè)計(jì)四桿機(jī)構(gòu)”等設(shè)計(jì)思想,在此對(duì)連桿機(jī)構(gòu)運(yùn)動(dòng)的設(shè)計(jì)主要是:在給定桿長的情況下,計(jì)算某一時(shí)刻,各個(gè)桿的兩端點(diǎn)坐標(biāo)及相對(duì)于坐標(biāo)軸的偏移角度,以便確定四個(gè)桿在空間的擺放位置,借以實(shí)現(xiàn)連桿結(jié)構(gòu)的運(yùn)動(dòng)演示。如圖4.4所示,建立坐標(biāo)系和四連桿結(jié)構(gòu)關(guān)系:假定AD始終保持固定,AB為曲柄即可相對(duì)于AD做整周回轉(zhuǎn);這里AB作為原動(dòng)件,令∠BAD=θ,則θ即為決定BC、CD兩桿運(yùn)動(dòng)規(guī)律的唯一未知變量。首先求出B點(diǎn)坐標(biāo):x2=a*cos(θ)式4.1y2=a*sin(θ)式4.2現(xiàn)在C點(diǎn)坐標(biāo)(x3,y3)可以放到三角形CBD中求解。式4.3式4.4圖4.4聯(lián)立解方程組,解得C點(diǎn)坐標(biāo)(x3,y3),并且根據(jù)鉸鏈四連桿的運(yùn)動(dòng)規(guī)律,舍掉位于AD桿下方的無理值點(diǎn)。A、B、C、D四個(gè)點(diǎn)的坐標(biāo)值,決定了四個(gè)桿在平面上的位置,可以以此為基礎(chǔ)在下一章機(jī)構(gòu)建模中正確放置四個(gè)桿的三維模型,從而實(shí)現(xiàn)四連桿結(jié)構(gòu)演示。凸輪機(jī)構(gòu)凸輪是一個(gè)具有曲線輪廓或凹槽的構(gòu)件,被凸輪直接推動(dòng)的構(gòu)件稱為推桿(或稱從動(dòng)件),而凸輪機(jī)構(gòu)則是由凸輪、推桿和機(jī)架三個(gè)主要構(gòu)件所組成的高副機(jī)構(gòu)。在各種機(jī)械,特別是自動(dòng)機(jī)械和自動(dòng)控制裝置中,廣泛地應(yīng)用著各種形式的凸輪機(jī)構(gòu)。凸輪機(jī)構(gòu)的最大優(yōu)點(diǎn)是可以通過設(shè)計(jì)輪廓曲線,使推桿得到各種預(yù)期的運(yùn)動(dòng)規(guī)律。凸輪機(jī)構(gòu)的分類常用凸輪有盤形凸輪、圓柱凸輪和移動(dòng)凸輪三類。盤形凸輪用于滾子直動(dòng)從動(dòng)件盤形凸輪機(jī)構(gòu)、滾子擺動(dòng)盤形凸輪機(jī)構(gòu)、平底直動(dòng)從動(dòng)件盤形凸輪機(jī)構(gòu)、平底擺動(dòng)從動(dòng)件盤形凸輪機(jī)構(gòu)。圓柱凸輪用于擺動(dòng)推桿圓柱凸輪機(jī)構(gòu)和直動(dòng)推桿圓柱凸輪機(jī)構(gòu)。移動(dòng)凸輪是圓凸輪的展開。上述凸輪都依靠其外緣的輪廓曲線或凹槽線進(jìn)行工作,凸輪機(jī)構(gòu)能否按預(yù)期的運(yùn)動(dòng)規(guī)律良好工作,主要取決丁凸輪廓線,設(shè)計(jì)凸輪廓線是凸輪機(jī)構(gòu)設(shè)計(jì)的關(guān)鍵。另外,凸輪按推桿形狀:分為尖頂推桿、滾子推桿、平底推桿。按運(yùn)動(dòng)形式:分為力封閉的凸輪機(jī)構(gòu)、幾何形狀封閉的凸輪機(jī)構(gòu)。4.4凸輪機(jī)構(gòu)中,從動(dòng)件的運(yùn)動(dòng)規(guī)律與凸輪輪廓曲線存在著對(duì)應(yīng)關(guān)系。要進(jìn)行凸輪設(shè)計(jì),首先需根據(jù)_1_作要求和使用場(chǎng)合,選擇從動(dòng)件運(yùn)動(dòng)規(guī)律。從動(dòng)件遠(yuǎn)離凸輪問轉(zhuǎn)中心的這一行程稱推程,對(duì)應(yīng)的凸輪轉(zhuǎn)角稱為運(yùn)動(dòng)角¢:從動(dòng)件靠近凸輪問轉(zhuǎn)中心的這一行程稱回程,對(duì)應(yīng)的凸輪轉(zhuǎn)角稱為同程運(yùn)動(dòng)角¢’;對(duì)應(yīng)于從動(dòng)件在離凸輪回轉(zhuǎn)中心最遠(yuǎn)處停止不動(dòng)時(shí)間凸輪的轉(zhuǎn)角稱為遠(yuǎn)休止角¢s:對(duì)應(yīng)于從動(dòng)件在離凸輪回轉(zhuǎn)中心最近處停止不動(dòng)時(shí)間凸輪的轉(zhuǎn)角稱為近休止角¢s’;從動(dòng)件的最人行程稱為升程h,常用的從動(dòng)件運(yùn)動(dòng)規(guī)律包括:等速運(yùn)動(dòng)規(guī)律:該運(yùn)動(dòng)規(guī)律的速度曲線不連續(xù),從動(dòng)件在運(yùn)動(dòng)起始和終止位置速度有突變,理論上加速度在此時(shí)變?yōu)闊o窮大,從動(dòng)件產(chǎn)生無窮大的慣性力。實(shí)際上由于材料具有彈性,加速度和慣性力都不會(huì)無窮大,但仍會(huì)使機(jī)構(gòu)產(chǎn)生剛性沖擊。等加速等減速運(yùn)動(dòng)規(guī)律:其速度曲線連續(xù),加速度在起始、中間、終j卜位置有突變,引起慣1性力的突然變化,導(dǎo)致柔性沖擊。簡(jiǎn)諧運(yùn)動(dòng)規(guī)律:速度曲線連續(xù),加速度在起始、終止位置有突變,引起柔性沖擊。擺線運(yùn)動(dòng)規(guī)律:速度加速度均連續(xù)變化,無沖擊。3-4-5次多項(xiàng)式運(yùn)動(dòng)規(guī)律:速度加速度均連續(xù)變化,無沖擊。此處,式4.6給出計(jì)算等速運(yùn)動(dòng)規(guī)律的位移、速度、加速度公式。在等速運(yùn)動(dòng)的情況下,轉(zhuǎn)動(dòng)角δ與時(shí)間t成正比,運(yùn)動(dòng)規(guī)律就是推桿的運(yùn)動(dòng)參數(shù)隨δ變化的規(guī)律,如圖4.5所示。三角函數(shù)運(yùn)動(dòng)規(guī)律:(以簡(jiǎn)諧運(yùn)動(dòng)的推程運(yùn)動(dòng)方程為例)式4.6壓力角凸輪廓線決定從動(dòng)件的運(yùn)動(dòng),設(shè)計(jì)不好,將使從動(dòng)件不能準(zhǔn)確、有效地實(shí)現(xiàn)預(yù)期的運(yùn)動(dòng)規(guī)律。凸輪檢驗(yàn)的指標(biāo)是壓力角和實(shí)際廓線的曲率半徑。壓力角表示凸輪實(shí)際廓線上某點(diǎn)與從動(dòng)件接觸時(shí),在不計(jì)摩擦的前提下,凸輪廓線在該點(diǎn)上的法線方向與從動(dòng)件速度方向所夾的銳角。壓力角是衡量凸輪傳力特性好壞的重要參數(shù)。凸輪對(duì)從動(dòng)件的作用力可分解成沿從動(dòng)件運(yùn)動(dòng)方向的有效分力和垂直于從動(dòng)件運(yùn)動(dòng)方向的無效分力,壓力角越大,無效分力越人,導(dǎo)致的摩擦力越大,機(jī)構(gòu)工作效率越低,當(dāng)壓力角達(dá)到某個(gè)數(shù)值時(shí),將會(huì)使機(jī)構(gòu)產(chǎn)生自鎖。為了使機(jī)構(gòu)順利工作,規(guī)定了壓力角的許用值[a],許用值[a]的數(shù)值隨著凸輪機(jī)構(gòu)的類型和行程段的變化而變化。為減小壓力角,應(yīng)增大凸輪的最小向徑—基圓半徑,但一味增加基圓半徑又會(huì)使機(jī)構(gòu)龐大。機(jī)構(gòu)的尺寸特性和傳力特性相互制約,應(yīng)兩者兼顧,在滿足壓力角條件a≤[a]的前提下,基圓半徑取較小值。曲率半徑直觀的看,滾子從動(dòng)件盤形凸輪機(jī)構(gòu)理論廓線是滾子中心在凸輪這一運(yùn)動(dòng)平面上的軌跡,以凸輪理論廓線上各點(diǎn)為圓心作一系列滾子圓,該圓族的包絡(luò)線即凸輪實(shí)際廓線。平底從動(dòng)件盤形凸輪機(jī)構(gòu)理論廓線是平底中心在凸輪這一運(yùn)動(dòng)平面上的軌跡,以凸輪理論廓線上各點(diǎn)為中心作一系列平底,該平底族的包絡(luò)線即凸輪實(shí)際廓線。對(duì)于滾子從動(dòng)件凸輪機(jī)構(gòu),內(nèi)凹的凸輪理論廓線總可以得到實(shí)際廓線,實(shí)際廓線的曲率半徑ρ’等于理論廓線曲率半徑ρ與滾子半徑r之和,即ρ'=ρ十r,,在設(shè)計(jì)時(shí),通常是先根據(jù)結(jié)構(gòu)和強(qiáng)度條件選擇r,再校核ρ',曲率半徑應(yīng)不小于某一規(guī)定值[ρ],即ρ'>[ρ]。若滾子從動(dòng)件凸輪機(jī)構(gòu)的凸輪理論廓線的外凸,其實(shí)際廓線的曲率半徑ρ'=ρ-r,若ρ=r,則ρ’=0,實(shí)際廓線將出現(xiàn)尖點(diǎn),極易被磨損,不能付之實(shí)用:若ρ<r,,則ρ'<0,實(shí)際廓線將出現(xiàn)交義,加工時(shí),交點(diǎn)以外的部分將被刀具割去,導(dǎo)致從動(dòng)件運(yùn)動(dòng)失真,無法準(zhǔn)確實(shí)現(xiàn)預(yù)期的運(yùn)動(dòng)規(guī)律。對(duì)于平底從動(dòng)件盤形凸輪機(jī)構(gòu),只要保證凸輪實(shí)際廓線各點(diǎn)處的曲率半徑ρ均大于零,則可使凸輪廓線全部外凸,避免廓線變尖或出現(xiàn)交叉。為防止接觸應(yīng)力過高和減少磨損,應(yīng)有ρ'>[ρ]。凸輪輪廓曲線的設(shè)計(jì)

凸輪輪廓曲線設(shè)計(jì)可依據(jù)“反轉(zhuǎn)法”的原理,如圖4.4,可以假設(shè)凸輪靜止不動(dòng),而使推桿相對(duì)與凸輪作反轉(zhuǎn)運(yùn)動(dòng),同時(shí)又在其導(dǎo)軌內(nèi)作預(yù)期運(yùn)動(dòng),作出推桿在這種復(fù)合運(yùn)動(dòng)中的一系列位置,則其尖頂?shù)能壽E就是所要求的輪廓曲線。在本文的凸輪建模中,正是應(yīng)用這個(gè)原理,根據(jù)凸輪的演示精度取n個(gè)控制點(diǎn)來描述輪廓曲線。4.5齒輪機(jī)構(gòu)及其設(shè)計(jì)齒輪機(jī)構(gòu)的應(yīng)用和分類一、根據(jù)其傳動(dòng)比(i12=ω1/ω2)是否恒定分1、定傳動(dòng)比(i12=常數(shù))傳動(dòng)的齒輪機(jī)構(gòu)——圓形齒輪機(jī)構(gòu)2、變傳動(dòng)比(i12按一定的規(guī)律變化)傳動(dòng)的齒輪機(jī)構(gòu)——非圓形齒輪機(jī)構(gòu)二、在定傳動(dòng)比中兩嚙合齒輪的相對(duì)運(yùn)動(dòng)是平面運(yùn)動(dòng)還是空間運(yùn)動(dòng)分1、平面齒輪機(jī)構(gòu)(圓柱齒輪傳動(dòng))2、空間齒輪機(jī)構(gòu)§4-2齒廓實(shí)現(xiàn)定傳動(dòng)比的條件∵又∴∴i12=ω1/ω2=上式表明,互相嚙合的一對(duì)齒輪,在任一位置時(shí)的傳動(dòng)比,都與其連心線O1O2被其嚙合齒廓在接觸點(diǎn)處的公法線所分成的兩段成反比。這一定律稱為齒廓嚙合的基本定律。過兩齒廓嚙合點(diǎn)所作的齒廓公法線與兩輪連心線O1O2的交點(diǎn)C稱為嚙合節(jié)點(diǎn)(簡(jiǎn)稱節(jié)點(diǎn))。上式還表明,要使兩齒輪作定傳動(dòng)比傳動(dòng),則兩齒廓必須滿足的條件是:不論兩齒廓在何位置接觸,過接觸點(diǎn)所作的兩齒廓公法線必須與兩齒輪的連心線相交于一定點(diǎn)。當(dāng)兩齒輪作定傳動(dòng)比傳動(dòng)時(shí),節(jié)點(diǎn)C在輪1和輪2的運(yùn)動(dòng)平面上的軌跡分別是以O(shè)1、O2為圓心,以O(shè)1C、O2C為半徑的兩個(gè)圓,此圓稱為若兩齒輪作變傳動(dòng)比傳動(dòng)時(shí),節(jié)點(diǎn)C在輪1和輪2的運(yùn)動(dòng)平面上的軌跡分別是兩條非圓曲線,此曲線稱為節(jié)線。漸開線的形成及其特性一、漸開線的形成1)基圓,半徑用rb表示2)展角,用θk表示二、漸開線的特性1)2)漸開線上任一點(diǎn)的法線恒與基圓相切。切點(diǎn)B是點(diǎn)K的曲率中心,而線段是漸開線在點(diǎn)K的曲率半徑。3)4)漸開線的形狀取決于基圓大小。5)基圓內(nèi)沒有漸開線。三、漸開線齒廓嚙合特性1、漸開線齒廓能保證定傳動(dòng)比傳動(dòng)要求i12=ω1/ω2==常數(shù)2、漸開線齒廓間的正壓力方向不變嚙合線——齒輪傳動(dòng)時(shí)其齒廓嚙合點(diǎn)的軌跡稱為嚙合線(N1N2)。3、漸開線齒廓傳動(dòng)具有可分性由圖知,ΔO1N1P~ΔO2N2P,故i12=ω1/ω2==rb2/rb1當(dāng)漸開線齒輪的中心距稍有改變,其角速度比仍保持原值不變。漸開線標(biāo)準(zhǔn)齒輪各部分名稱和基本尺寸1、各部分的名稱和符號(hào)1)齒頂圓:齒頂所在的圓,用da和ra表示。2)齒根圓:齒根所在的圓,用df和rf表示。3)齒厚:任意圓周上量得的齒輪兩側(cè)間的弧長,用sk表示。4)齒槽寬:任意圓周上量得的相鄰兩齒齒廓間的弧長,用ek表示。5)齒距:任意圓周上量得的相鄰兩齒同側(cè)齒廓間的弧長,用pk表示。pk=sk+ek6)分度圓:計(jì)算基準(zhǔn)圓,用d和r表示。7)齒頂高:介于分度圓與齒頂圓之間的輪齒部分的徑向高度,用ha表示。8)齒根高:介于分度圓與齒根圓之間的輪齒部分的徑向高度,用hf表示。9)齒全高:齒頂圓與齒根圓之間的輪齒部分的徑向高度,用h表示。h=ha+hf2、基本參數(shù)1)齒數(shù):用z表示。2)模數(shù):用m表示?!叻侄葓A周長=zp=πd∴d=zp/π設(shè)m=p/π單位:mm。于是,有d=zmm是決定齒輪尺寸的基本參數(shù),已標(biāo)準(zhǔn)化。3)分度圓壓力角:用α表示。αk=arccos(rb/rk)由上式可見,對(duì)于同一漸開線齒廓,rk不同,αk也不同,基圓上的壓力角為零。通常所說的齒輪壓力角是指齒輪在分度圓上的壓力角,用α表示,于是有α=arccos(rb/r)或rb=rcosα壓力角也是決定齒輪尺寸的基本參數(shù),國標(biāo)規(guī)定的標(biāo)準(zhǔn)值,α=20°。有時(shí)也用α=14.5°、15°、22.5°、25°。3、各部分尺寸的計(jì)算公式1)分度圓直徑d=mz2)齒頂高h(yuǎn)a=h*am3)齒根高h(yuǎn)f=(h*a+c*)m4)齒全高h(yuǎn)=ha+hf=(2h*a+c*)m5)齒頂圓直徑da=d+2ha=(z+2h*a)m6)齒根圓直徑df=d-2hf=mz-2(h*a+c*)m=(z-2h*a-2c*)m式中,h*a——齒頂高系數(shù)、c*——頂隙系數(shù)。其標(biāo)準(zhǔn)值為:h*a=1、c*=0.257)基圓直徑db=dcosα=mzcosα8)齒距p=πm9)基圓上的齒距∵任意圓周長=zpk=πdk∴pk=πdk/z故pb=πdb/z==πmcosα=pcosα10)法向齒距——相鄰兩齒同側(cè)齒廓沿公法線方向量得的距離,用pn表示。而根據(jù)漸開線的第一個(gè)性質(zhì)可知pn=pb標(biāo)準(zhǔn)齒輪——m、α、h*a、c*均為標(biāo)準(zhǔn)值,且s=e的齒輪。漸開線直齒圓柱齒輪的嚙合傳動(dòng)一、一對(duì)漸開線齒廓正確嚙合條件由圖知,要使齒輪能正確嚙合,必須有pn1=pn2由上節(jié)知pn=pb所以,要使齒輪能正確嚙合,必須有pb1=pb2又因pb=πmcosα所以πm1cosα1=πm2cosα2故m1cosα1=m2cosα2要滿足上式,則應(yīng)m1=m2=m,α1=α2=α所以,漸開線齒輪正確嚙合的條件是:兩輪的模數(shù)和壓力角應(yīng)分別相等。二、齒輪傳動(dòng)的中心距和嚙合角1、外嚙合傳動(dòng)1)齒輪正確安裝的條件a、齒側(cè)間隙為零,即而標(biāo)準(zhǔn)齒輪有、根據(jù)正確嚙合條件有:m1=m2所以:由以上分析知,要使齒側(cè)間隙為零,則必須使其分度圓與節(jié)圓重合。b、具有標(biāo)準(zhǔn)頂隙c=c*m2)標(biāo)準(zhǔn)中心距當(dāng)頂隙為標(biāo)準(zhǔn)值時(shí),設(shè)兩輪的中心距為a,則:a=ra1+c+rf2=r1+h*am+c*m+r2-(h*am+c*m)=r1+r2=m(z1+z2)/2即兩輪的中心距a應(yīng)等于兩輪分度圓半徑之和,我們把這種中心距稱為標(biāo)準(zhǔn)中心距。3)嚙合角嚙合角——兩輪傳動(dòng)時(shí)其節(jié)點(diǎn)C的圓周速度方向與嚙合線N1N2之間所夾的銳角,其值等于節(jié)圓壓力角。故用α'表示。當(dāng)兩輪實(shí)際中心距a'>a時(shí),r'1>r1、r'2>r2及α'>α因?yàn)閞b1=r1cosα=r'1cosα'、rb2=r2cosα=r'2cosα'所以rb1+rb2=(r1+r2)cosα=acosα=(r'1+r'2)cosα'=a'cosα'故a'cosα'=acosα2、齒輪與齒條嚙合傳動(dòng)α'≡α、r'≡r三、漸開線齒輪連續(xù)傳動(dòng)條件1、一對(duì)齒輪的嚙合過程實(shí)際嚙合線B1B2理論嚙合線N1N2嚙合極限點(diǎn)N1和N22、漸開線齒輪連續(xù)傳動(dòng)條件為了保證連續(xù)傳動(dòng),則。通常將用εα表示,稱為重合度。于是可得連續(xù)傳動(dòng)條件為:實(shí)際εα≥[εα]式中:[εα]——許用重合度。機(jī)構(gòu)建模過程從這一章開始,真正進(jìn)入了采用關(guān)鍵技術(shù)實(shí)現(xiàn)即定功能的過程。機(jī)構(gòu)的建模,是實(shí)現(xiàn)虛擬演示的第一步,采用最合理的技術(shù)手段,構(gòu)建出對(duì)象的逼真模型,是這一章討論的核心內(nèi)容。5.1機(jī)構(gòu)建模的基本思想與關(guān)鍵技術(shù)應(yīng)用OpenGL進(jìn)行三維實(shí)體的建模過程,實(shí)際上是一個(gè)對(duì)實(shí)體進(jìn)行分析、描述和繪制的過程?,F(xiàn)實(shí)世界中的三維實(shí)體,都可以由點(diǎn)-線-面的方式描述出其表面。針對(duì)這一點(diǎn),OpenGL基本庫提供了大量方法繪制各種類型圖元,包括點(diǎn)、直線、多邊形等,輔助庫也提供了不少描述復(fù)雜三維圖形的函數(shù)。利用這些圖元繪制方法,就可以建立比較復(fù)雜的模型了。OpenGL圖元是抽象的幾何概念,不是真實(shí)世界中的物體,因此須用相關(guān)的數(shù)學(xué)模型來描述。下面羅列出本系統(tǒng)中使用較多的OpenGL建模函數(shù)和重要技術(shù),這些技術(shù)貫穿于整個(gè)系統(tǒng)設(shè)計(jì)的始終:繪制基本圖元:調(diào)用glBegin(mode:Glenum)和glEnd函數(shù)對(duì),參數(shù)mode可為GL_POINT、GL_LINES、GL_POLYGON、GL_TRIANGLES、GL_QUADS等,用以繪制點(diǎn)、線段、多邊形、填充三角形、四邊形等諸多圖元。利用頂點(diǎn)數(shù)組優(yōu)化性能:此功能將頂點(diǎn)數(shù)據(jù)放入預(yù)定義的數(shù)組中,從而更有效地使用頂點(diǎn)數(shù)據(jù),并可以多次調(diào)用,這種方式省卻了一次繪制一個(gè)圖元的繁瑣,使頂點(diǎn)數(shù)據(jù)在OpenGL執(zhí)行中的速度明顯加快。使用頂點(diǎn)(顏色)數(shù)組,首先要執(zhí)行以下函數(shù)以啟動(dòng)功能glEnableClientState(GL_VERTEX_ARRAY);//啟動(dòng)頂點(diǎn)數(shù)組glEnableClientState(GL_COLOR_ARRAY);//啟動(dòng)顏色數(shù)組在建模時(shí),就可以調(diào)用函數(shù)glDrawArrays()函數(shù),方便地使用數(shù)組中的數(shù)據(jù)繪制出多個(gè)基本圖元。利用顯示列表功能:顯示列表由一組預(yù)先存儲(chǔ)起來留待以后調(diào)用的OpenGL函數(shù)語言組成,它在物理存在上是一種高速緩存,而不是動(dòng)態(tài)數(shù)據(jù)庫緩存。這種設(shè)計(jì)能優(yōu)化程序運(yùn)行性能,尤其可以大大提高網(wǎng)絡(luò)性能,即當(dāng)通過網(wǎng)絡(luò)發(fā)出繪圖命令時(shí),由于顯示列表駐留在服務(wù)器中,從而使網(wǎng)絡(luò)的負(fù)擔(dān)減輕到最小。而且顯示列表可以嵌套。使用方法如下glNewList(1,GL_COMPILE);//建立新列表1… //列表代碼 glEndList;//結(jié)束列表 glCallList(1);//執(zhí)行列表1NURBS曲線曲面:應(yīng)用NURBS(非均勻有理樣條)可以非常容易的生成參數(shù)曲線或曲面,在構(gòu)造復(fù)雜的表面時(shí),不僅可以大大減少計(jì)算頂點(diǎn)的工作量,而且精度、光滑度都大大提高。使用過程:用gluNewNurbsRenderer函數(shù)建立NURBS對(duì)象的指針,然后調(diào)用gluBeginCurve或gluBeginSurface函數(shù)開始繪制,之后調(diào)用gluNurbsCurve或gluNurbsSurface生成繪制曲線或曲面。凸輪的構(gòu)建凸輪的構(gòu)建相對(duì)簡(jiǎn)單,與桿結(jié)構(gòu)類似,可以在凸輪上用若干控制點(diǎn)描述其輪廓曲線,再用連續(xù)填充三角形的方法繪制,如圖5.1。將輪廓曲線上的控制點(diǎn)預(yù)先求出并存入頂點(diǎn)數(shù)組Pedge[0..n-1,0..2],并循環(huán)繪制填充三角形得到凸輪的表面,下面分別給出繪出上下表面的源碼:VarPedge:array[0..n-1,0..1]ofglfloat;//n為控制點(diǎn)個(gè)數(shù)圖5.1glnewlist(1,GL_COMPILE);//構(gòu)造上表面顯示列表1fori:=0ton-2dobeginglbegin(GL_TRIANGLES);glnormal3f(0,0,1);glvertex2f(0,0);glvertex2f(Pedge[i,0],pedge[i,1]);glvertex2f(Pedge[i+1,0],pedge[i+1,1]);glend;end;glendlist;glnewlist(2,GL_COMPILE);//構(gòu)造下表面顯示列表2fori:=0ton-2dobeginglbegin(GL_TRIANGLES);glnormal3f(0,0,-1);glvertex3f(0,0,-depth);//depth為凸輪厚度glvertex3f(Pedge[i,0],pedge[i,1],-depth);glvertex3f(Pedge[i+1,0],pedge[i+1,1],-depth);glend;end;glendlist;glnewlist(3,GL_COMPILE);//構(gòu)造凸輪側(cè)面的列表3fori:=0ton-2dobeginglbegin(GL_QUADS);glnormal3f(pedge[i,0],pedge[i,1],0);glvertex3f(pedge[i,0],pedge[i,1],0);glvertex3f(pedge[i,0],pedge[i,1],-depth);glvertex3f(pedge[i+1,0],pedge[i+1,1],-depth);glvertex3f(pedge[i+1,0],pedge[i+1,1],0);glend;end;glendlist;下面就可以調(diào)用建立好的列表,完成整個(gè)凸輪的建模:glnewlist(4,GL_COMPILE);//構(gòu)造整個(gè)凸輪的顯示列表4glpushmatrix;glcalllist(camlist+1);glcalllist(camlist+2);glcalllist(camlist+3);glpopmatrix;glendlist;圖5.2至此,完整的凸輪已經(jīng)構(gòu)建完成,圖5.2為一個(gè)凸輪實(shí)例,經(jīng)過一定的顏色光照處理后,具有逼真的效果。機(jī)構(gòu)空間運(yùn)動(dòng)的模擬6.1運(yùn)動(dòng)模擬的基本思想與關(guān)鍵技術(shù)OpenGL提供了雙緩存用來制作動(dòng)畫。也就是說,在顯示前臺(tái)緩存內(nèi)容中的一幀畫面時(shí),后臺(tái)緩存正在繪制下一幀畫面,當(dāng)繪制完畢,則后臺(tái)緩存內(nèi)容便在屏幕上顯示出來,而前臺(tái)正好相反,又在繪制下一幀畫面內(nèi)容。這樣循環(huán)反復(fù),屏幕上顯示的總是已經(jīng)畫好的圖形,于是看起來所有的畫面都是連續(xù)的?;陔p緩存技術(shù),我們可以實(shí)現(xiàn)對(duì)機(jī)構(gòu)運(yùn)動(dòng)和傳動(dòng)的模擬。在此我們引入Delphi6.0中的timer控件,這個(gè)組件以用戶定義的時(shí)鐘頻率觸發(fā)事件,在它的消息處理函數(shù)Timer1Timer(Sender:TObject)中,通過對(duì)該時(shí)刻特定機(jī)構(gòu)在空間內(nèi)制約關(guān)系的計(jì)算得到相應(yīng)的位置參數(shù),并根據(jù)此參數(shù)將該機(jī)構(gòu)平以及旋轉(zhuǎn)以擺放到正確的位置上。然后調(diào)用系統(tǒng)的窗體重繪函數(shù)Invalidate(FALSE),這樣系統(tǒng)就會(huì)刷新并重繪窗體,隨時(shí)間控件不斷觸發(fā)重繪函數(shù),用戶就可以看到流暢的運(yùn)動(dòng)畫面了。不斷觸發(fā)重繪函數(shù)對(duì)系統(tǒng)來講是一筆不小的開支,因?yàn)檫@里涉及到大量的建模、矩陣運(yùn)算、光照處理等計(jì)算。所以,代碼的優(yōu)化和計(jì)算量的縮減就顯得尤為重要。譬如前面章節(jié)中提到的顯示列表功能,在模擬運(yùn)動(dòng)時(shí)就大大減少了的系統(tǒng)開銷。另外在動(dòng)畫的實(shí)現(xiàn)過程中,還會(huì)應(yīng)用到如下技術(shù):深度檢驗(yàn):對(duì)于屏幕上的每個(gè)像素,深度緩存保持對(duì)視點(diǎn)和像素所在對(duì)象之間距離的跟蹤。然后當(dāng)所指定的深度檢驗(yàn)通過時(shí),輸入的深度值替換深度緩存中的值。剪裁檢驗(yàn):定義窗口中的一個(gè)矩形部分,利用glScissor函數(shù)可以限制繪圖發(fā)生在這個(gè)矩形內(nèi)。當(dāng)片段值在該矩形內(nèi)時(shí),即通過剪裁檢驗(yàn)。6.2各種機(jī)構(gòu)運(yùn)動(dòng)的具體計(jì)算及過程四連桿傳動(dòng)從桿類中派生出四個(gè)桿對(duì)象,并分別進(jìn)行參數(shù)的初始化,形成四桿結(jié)構(gòu)中的機(jī)架、曲柄、連桿、搖桿:varbar1,bar2,bar3,bar4:bar;bar1:=bar.Create;bar2:=bar.Create;bar3:=bar.Create;bar4:=bar.Create;下面開始傳動(dòng)過程的模擬,其中涉及到一些容錯(cuò)設(shè)計(jì)和變位擴(kuò)展。1.在進(jìn)行演示以前,首先對(duì)四個(gè)桿的長度作合理性判斷,因?yàn)楦鶕?jù)“桿長條件”,最短桿與最長桿的長度和應(yīng)小于或等于其他兩桿的長度和。實(shí)現(xiàn)代碼如下:showmessage('輸入數(shù)據(jù)無效!請(qǐng)重新輸入'+chr(13)+'提示:曲柄長必須為最短,且曲柄長與最長桿之和應(yīng)小于其它兩桿長度之和。'+chr(13)+'軸半徑應(yīng)小于桿寬半徑。2.將四根桿按正確位置擺放。之前建立好的桿類的顯示列表,是以桿中心落在坐標(biāo)原點(diǎn),并與x軸重合的方式建立的。所以正確擺放桿的位置,就要首先確定特定桿在某一時(shí)刻的中心位置和與x軸的相對(duì)偏移角度,然后調(diào)用相應(yīng)桿的顯示列表。機(jī)架和曲柄:這里我們首先假定機(jī)架是放置于水平位置且不作運(yùn)動(dòng)的,由曲柄牽動(dòng)整個(gè)連桿結(jié)構(gòu)的傳動(dòng)。那么首先以曲柄繞機(jī)架的轉(zhuǎn)動(dòng)角度確定曲柄的擺放位置,:glcalllist(bar1.barlist+4);//調(diào)用機(jī)架的構(gòu)造列表gltranslatef((-l1/2+x1)/2,y1/2,bar1.depth);glrotatef(angr+90,0,0,1);//angr為曲柄的轉(zhuǎn)動(dòng)角度glcalllist(bar2.barlist+4);//調(diào)用曲柄的構(gòu)造列表連桿和搖桿:如圖6.1,在任意時(shí)刻,只要B點(diǎn)即曲柄端點(diǎn)的位置確定,那么在由BD和連桿、搖桿組成的三角形中,C點(diǎn)的位置就唯一確定,也由此確定了連桿和搖桿的位置。因此,對(duì)連桿和搖桿的位置計(jì)算,就轉(zhuǎn)化成在三角形BCD中對(duì)C點(diǎn)坐標(biāo)的求解,經(jīng)計(jì)算,將B、C、D點(diǎn)的坐標(biāo)分別賦予變量(x1,y1)、(x2,y2)、(x3,y3),而連桿和搖桿的偏移角度分別為a2、a3,代碼如下:glpushmatrix;//畫連桿gltranslatef((x1+x2)/2,(y1+y2)/2,2*(bar1.depth));glrotatef(a2*180/pi,0,0,1);glcalllist(bar3.barlist+4);圖6.1glpopmatrix;glpushmatrix;//畫搖桿gltranslatef((x2+l1/2)/2,y2/2,3*(bar1.depth));glrotatef(a3*180/pi,0,0,1);glcalllist(bar4.barlist+4);glpopmatrix;至此,系統(tǒng)成功實(shí)現(xiàn)將四個(gè)桿正確連接以演示四連桿傳動(dòng)的功能。3.四連桿傳動(dòng)效果的實(shí)現(xiàn):在時(shí)間控件所觸發(fā)的響應(yīng)函數(shù)Timer1Timer(Sender:TObject)中,調(diào)用重繪函數(shù)并將曲柄的轉(zhuǎn)動(dòng)角度angr增加步長:step,隨時(shí)間控件不斷觸發(fā),不斷增加的angr就帶動(dòng)了四連桿機(jī)構(gòu)的傳動(dòng)。procedureTForm1.Timer1Timer(Sender:TObject);beginInvalidate(FALSE);angr:=angr+step;end;6.2.2首先討論一對(duì)漸開線直齒輪的外嚙合傳動(dòng)。漸開線齒輪正確嚙合的條件是:兩輪的模數(shù)和壓力角應(yīng)分別相等。而在確定了中心距之后,兩齒輪還應(yīng)該滿足以下條件:1)保證兩輪的齒側(cè)間隙為零,主要是為了減小或減免輪齒間的沖擊。2)保證兩輪的頂隙c為標(biāo)準(zhǔn)值。取頂隙為標(biāo)準(zhǔn)值c=c*m,兩輪的中心距a為兩輪分度圓半徑之和,即標(biāo)準(zhǔn)中心距。一對(duì)滿足正確嚙合條件的漸開線齒輪的嚙合情況如圖6.2.1,設(shè)主動(dòng)輪以角速度ω1順時(shí)針方向回轉(zhuǎn),從動(dòng)輪以角速度ω2逆時(shí)針方向回轉(zhuǎn)。兩輪輪齒在嚙合起始點(diǎn)B2(嚙合線N1N2與從動(dòng)輪齒頂圓的交點(diǎn))開始嚙合,這時(shí)主動(dòng)輪的齒根與從動(dòng)輪的齒頂接觸。隨傳動(dòng)進(jìn)行,兩齒廓的嚙合點(diǎn)將沿著嚙合線N1N2移動(dòng),而同時(shí)嚙合點(diǎn)將分別沿著主動(dòng)輪的齒廓,由齒根逐漸走向齒頂,并且沿著從動(dòng)輪的齒廓由齒頂逐漸移向齒根。當(dāng)嚙合進(jìn)行到主動(dòng)輪的齒頂圓與嚙合線的交點(diǎn)B1時(shí),兩輪齒即將脫離接觸,故點(diǎn)B1為兩輪輪齒的嚙合終止點(diǎn)。由此可知,兩輪輪齒嚙合的過程中,輪齒的齒廓圖6.2.1并非全部都能參加工作,而只限于從齒頂?shù)洱X根的一段齒廓-實(shí)際工作段。傳動(dòng)的實(shí)現(xiàn):首先調(diào)用齒輪類的構(gòu)造函數(shù),構(gòu)造兩個(gè)齒輪對(duì)象:vargear1,gear2:gear;gear1:=gear.Create;gear2:=gear.Create;為了正確擺放兩個(gè)齒輪以達(dá)到嚙合的效果,我們將兩個(gè)齒輪的間距設(shè)定為標(biāo)準(zhǔn)中心距,同時(shí)將齒輪gear2轉(zhuǎn)動(dòng)一個(gè)角度angf來與gear1正確交錯(cuò)。angf是每個(gè)齒在齒根圓上的角度,即angf:=360/z。而在傳動(dòng)過程中,二齒輪的角速度ω1:ω2=Z2:Z1。實(shí)現(xiàn)代碼如下:glpushmatrix;gltranslatef(-(gear1.r+gear2.r)/2,0,0);//齒輪一glrotatef(j,0,0,1);glcalllist(gear1.gearlist+4);glpushmatrix;glpushmatrix;//齒輪二gltranslatef((gear1.r+gear2.

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論