




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、實驗二 基本圖元的生成算法一、實驗?zāi)康?、初步了解顯示窗口與視區(qū)的關(guān)系2、掌握OpengGL點、直線、多邊形的繪制3、掌握DDAft線生成算法。4、掌握Bresenham直線生成算法二、實驗環(huán)境硬件要求:PC機,主流配置,最好為獨立顯卡,顯存 512M以上。軟件環(huán)境:操作系統(tǒng):Windows XR語言開發(fā)工具:VC6.0O三、實驗內(nèi)容與要求1、調(diào)出實驗一的源代碼運行,調(diào)整修改使得顯示窗口大小改變時,繪制的矩形大小隨之改變。如圖2-1所示。提示:(1)在main函數(shù)里添加注冊窗口變化函數(shù)glutReshapeFunc(myreshape); (放在 glutMainLoop()之前)(2)在程序
2、中添加窗口改變子函數(shù),參數(shù) w,h為當前顯示窗口的寬和高 void myreshape(GLsizei w, GLsizei h)glViewport(0,0,w,h); /設(shè)置視區(qū)位置glMatrixMode(GL_PROJECTION);設(shè)置投影變換模式glLoadIdentity(); /調(diào)單位矩陣,清空當前矩陣堆棧if(w=h)gluOrtho2D(0,300,0,300*(GLfloat)h/(GLfloat)w); /設(shè)置裁剪窗口大小 elsegluOrtho2D(0,300*(GLfloat)w/(GLfloat)h,0,300);a)顯示窗口改變前b)顯示窗口變大后圖2-1未修
3、改前的初始源程序參考如下:/*my first program.cpp*/#include void display(void) glClear(GL_COLOR_BUFFER_BIT); / 刷新顏色緩沖區(qū)glRectf(0,0,0.5,0.5);glFlush(); /用于刷新命令隊列和緩沖區(qū),使所有尚未被執(zhí)行的OpenG命令得到執(zhí)行void main(int argc, char* argv)glutInit(&argc, argv); /初始化 GLU1WglutInitDisplayMode(GLUT_SINGLE|GLUT_RGB); /設(shè)置顯示模式glutInitWindowSi
4、ze(100, 200);glutCreateWindow(hello); /創(chuàng)建窗口,標題為 “ hello ”glutDisplayFunc(display); /用于繪制當前窗口glutMainLoop(); /表示開始運行程序,用于程序的結(jié)尾 2、自己參照講義或教材按照自己的構(gòu)思畫二維平面圖形,修改樣本程序circle-algorithm.cpp將上面的矩形替換成自己構(gòu)思的二維平面圖形。注意頂點的順序。參考函數(shù):(1)、點繪制舉例glPointSize(2.0) /點的大小設(shè)置glBegin(GL_POINTS);glColor3f(1.0,1.0,1.0);glVertex2f(-0
5、.5,-0.5); /頂點glColor3f(1.0,0.0,1.0);glVertex2f(-0.5,0.5);glColor3f(0.0,1.0,1.0);glVertex2f(0.5,0.5);glColor3f(1.0,1.0,0.0);glVertex2f(0.5,-0.5);glEnd()(2)、直線/三角形/四邊形繪制舉例glLineWidth(2.0);glBegin(GL_LINES);/ glBegin(GL_LINE_STRIP);/ glBegin(GL_LINE_LOOP);/ glBegin(GL_TRIANGLES);/ glBegin(GL_TRIANGLE_S
6、TRIP);/ glBegin(GL_TRIANGLE_FAN);/ glBegin(GL_QUADS);/ glBegin(GL_TRIANGLE_STRIP);glVertex2f(-0.5,0.5);glVertex2f(-0.5,-0.5);glColor3f(1.0,1.0,1.0);glVertex2f(-0.5,0.5);glColor3f(1.0,1.0,0.0);glVertex2f(0.5,-0.5);glEnd();(3)、多邊形舉例glBegin(GL_POLYGON);glVertex2f(-0.5,0.5);glVertex2f(-0.5,-0.5);glColor
7、3f(1.0,1.0,1.0);glVertex2f(0,-0.5);glColor3f(1.0,1.0,0.0);glVertex2f(0.5,-0.5);glVertex2f(0.5,0.5);glEnd();3、讀懂DDAft線生成算法偽代碼,并修改偽代碼,使之變成可行的OpenGL 代碼,驗證DDAft線生成算法。DDAft線生成偽代碼/x0,y0表示直線的起始點,x1,y1表示直線的終止點,color表示直線的繪制顏色void DDA_line(int x0, int y0, int x1, int y1,int color)int dx = x1 - x0, dy = y1 - y
8、0, k;float xIncrement , yIncrement ,steps, x = x0, y = y0; if (abs (dx) abs (dy)steps = abs (dx);else steps = abs (dy);xIncrement = (float) (dx) /steps;yIncrement = (float) (dy) /steps;for (k =0; k=1的情況,又有斜率|k|1的情況,你可 以使用學過的畫直線方法,如DD序法。閱讀樣本程序,參見circle-algorithm.cpp :附:樣本程序 circle-algoritm.cpp#includ
9、e #include #include #include / set some initial parameters, such as the center of the circle(cx,cy), the radius of the circle,int cx=150,cy=150,radius=80;void DDA_Line(int x1,int y1,int x2,int y2);void Bresenham_DrawLine(int x1,int y1,int x2,int y2);void NSidedPolygon( int n, int cx, int cy, int rad
10、ius);void Display( void );void Reshape( int w, int h);int main( int argc, char * argv)(glutInit(&argc, argv);glutInitWindowPosition(0, 0);glutInitWindowSize(window_width, window_height);glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB);glutCreateWindow(Circle Generation Algorithm);glutDisplayFunc(Display);glutReshapeFunc(Reshape);glutMainLoop();return 0;)void Display( void )(/* YOUR CODE HERE */glutSwapBuffers();)void Reshape( int w, int h)glMatrixMode(GL_PROJECTION);glLoadIdentity();glViewport(0, 0, w, h);gluOrtho2D(0, w, 0, h);/ glutPostRedisplay();void DDA_Line(int x1,int y1,int x2,int y2
溫馨提示
- 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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- DB3709T 038-2025泰山茶 山地低產(chǎn)茶園提升改造技術(shù)規(guī)程
- 海南九樂再生資源回收與利用有限公司水穩(wěn)站項目環(huán)評報告表
- 項目資金評分表
- 海航技術(shù)附件維修事業(yè)部??趶?fù)材車間新租賃廠房及APU新試車臺項目環(huán)評報告表
- 店鋪硅酸鈣板施工方案
- 隔墻板做磚胎膜的施工方案
- 福建省泉州市2025屆高中畢業(yè)班質(zhì)量監(jiān)測 (三)物理試題(含答案)
- 地板磚鋪設(shè)施工方案
- 2024-2025學年下學期高二語文第三單元A卷
- 數(shù)控加工工藝與編程技術(shù)基礎(chǔ) 教案 模塊一 任務(wù)2 初識數(shù)控加工工藝
- 基于PLC的電梯控制系統(tǒng)設(shè)計
- 北京某商貿(mào)大廈空調(diào)工程設(shè)計畢業(yè)設(shè)計
- 口腔科急救預(yù)案培訓課件
- 弗洛姆異化理論
- 園林噴灌工程施工方案(精編版)
- 碳納米管_ppt課件
- 【課件】第2課如何鑒賞美術(shù)作品課件-高中美術(shù)人教版(2019)美術(shù)鑒賞
- [康熙字典9畫五行屬金的字加解釋] 康熙字典五行屬金的字
- 托盤操作評分表
- 關(guān)于老年癡呆癥及其智能陪護設(shè)備的調(diào)查報告
- 椴木靈芝栽培技術(shù)
評論
0/150
提交評論