




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、精選優(yōu)質(zhì)文檔-傾情為你奉上 蘇州大學(xué)文正學(xué)院計算機(jī)圖形學(xué)實驗報告實驗名稱 馬的設(shè)計 姓名 _許志杰_ 學(xué)號 _ 專業(yè)班級 _信計_實驗日期 _2011_年_12_月_16_日 上課教師 _王平_實驗成績 _一、 實驗的目的掌握VC+程序開發(fā)環(huán)境下,控制臺框架下OpenGL基本程序結(jié)構(gòu);編程實現(xiàn)平面圖形的平移、旋轉(zhuǎn)和放縮變換。二、 實驗的內(nèi)容與步驟(可提供屏幕抓圖)a. VC+ 6.0控制臺程序框架下的OpenGL繪圖環(huán)境的設(shè)置b. VC+ 6.0控制臺對于實現(xiàn)馬的程序的運行的操作c. 調(diào)用實驗一中自己中文姓名,從而獲取字符的坐標(biāo)信息,利用這些坐標(biāo)基于OpenGL中的線段或者多邊形繪制自己的姓名
2、于馬的下方,并設(shè)計上學(xué)號。程序設(shè)計程序修改程序調(diào)試三、 實驗結(jié)果與分析(可提供屏幕抓圖)中文名字的調(diào)用上有待提高,試了很多次還是只能放在左腳下,對于馬的運行上面的調(diào)用還是要細(xì)心。其他結(jié)果正常,無明顯偏差。四、 實驗的使用說明和測試的數(shù)據(jù)無五、 實驗中的問題總結(jié)與心得體會1、中文名字的調(diào)用還不是很熟悉,對于名字位置的導(dǎo)入對于我來說還是有點難度的,還沒能掌握;2、在學(xué)號的設(shè)計上,顯得有點繁瑣,雖然最后是出來了,但是可以看出寫了很多的程序,顯得十分累贅;3、調(diào)試測試方面有待提高,對于錯誤的把握方面不能做到一看就知道。六、 源代碼清單:#include "stdafx.h"#inc
3、lude <GL/glut.h>#include <iostream>#include <fstream>#include <vector>#include <string>#include "point.h"#include "trans.h"#define PI 3.14159#define D 4float alpha=0;using namespace std;vector<POINT> vertices;vector<vector<int> > tr
4、iangles;vector<int> _trans;int v_num,tri_num;void unify_data(void);void read_data(const string &filename);void myinit(void);void normal_key(unsigned char key, int x, int y);void special_key(int key, int x, int y);void reshape(int w, int h);void transformation();void read_data(const string
5、&filename)ifstream fp;fp.open(filename.c_str();POINT tmp;int i0,i1,i2;vector<int> ind;vertices.clear();triangles.clear();int i;fp>>v_num>>tri_num;for(i=0;i<v_num;i+)fp>>tmp.x>>tmp.y>>tmp.z;vertices.push_back(tmp);unify_data();/cout<<tri_num<<end
6、l;for(i=0;i<tri_num;i+) fp>>i0>>i1>>i2;ind.push_back(i0); ind.push_back(i1); ind.push_back(i2);triangles.push_back(ind);ind.clear();fp.close();cout<<"ready"<<endl;void unify_data(void)double minx,maxx,miny,maxy,minz,maxz;minx=maxx=vertices0.x;miny=maxy=vert
7、ices0.y;minz=maxz=vertices0.z;int i;for(i=1;i<v_num;i+) if(minx>verticesi.x) minx=verticesi.x;if(maxx<verticesi.x) maxx=verticesi.x;if(miny>verticesi.y) miny=verticesi.y;if(maxy<verticesi.y) maxy=verticesi.y;if(minz>verticesi.z) minz=verticesi.z;if(maxz<verticesi.z) maxz=vertice
8、si.z;double midx=0.5*(minx+maxx), midy=0.5*(miny+maxy), midz=0.5*(minz+maxz);for(i=0;i<v_num;i+) verticesi.x-=midx;verticesi.y-=midy;verticesi.z-=midz;double widx=maxx-minx, widy=maxy-miny, widz=maxz-minz;if(widz<widy) widz=widy;if(widz<widx) widz=widx;for(i=0;i<v_num;i+) verticesi/=widz
9、;void myinit(void) glClearColor(1.0, 1.0, 1.0, 1.0); /* white background */ glColor3f(1.0, 0.0, 0.0); /* draw in red */ glMatrixMode(GL_PROJECTION); glLoadIdentity(); glOrtho(-1, 1.0, -1.0, 1, -10, 10); glMatrixMode(GL_MODELVIEW); GLfloat diffuseMaterial4 = 0.5, 0.5, 0.5, 1.0 ; GLfloat mat_specular
10、= 1.0, 1.0, 1.0, 1.0 ; GLfloat light0_position = 1.0, 1.0, -1.0, 0.0 ; GLfloat light0_ambient = 0.5,0.5,0.5,1.0; /The following codes will be clear after we learn lighting glShadeModel(GL_SMOOTH); glEnable(GL_DEPTH_TEST); glMaterialfv(GL_FRONT, GL_DIFFUSE, diffuseMaterial); glMaterialfv(GL_FRONT, GL
11、_SPECULAR, mat_specular); glMaterialf(GL_FRONT, GL_SHININESS, 25.0); glLightfv(GL_LIGHT0, GL_POSITION, light0_position); glLightfv(GL_LIGHT0, GL_AMBIENT, light0_ambient); glEnable(GL_LIGHTING); glEnable(GL_LIGHT0); glColorMaterial(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE); glEnable(GL_COLOR_MATERIA
12、L); /Read data string filename("horse.tri"); read_data(filename);void draw(void)int i;POINT tmp;glBegin(GL_TRIANGLES);for(i=0;i<tri_num;i+)tmp = verticestrianglesi0;glVertex3d(tmp.x,tmp.y,tmp.z);tmp = verticestrianglesi1;glVertex3d(tmp.x,tmp.y,tmp.z);tmp = verticestrianglesi2;glVertex3d
13、(tmp.x,tmp.y,tmp.z);glEnd();void xuehao()glMatrixMode(GL_MODELVIEW);glLoadIdentity();glScaled(1,1,1);glBegin(GL_LINE_LOOP);glColor3f(1.0,0.5,1.0);glVertex2f(0.01,-0.9);glVertex2f(0.01,-0.8);glVertex2f(0.05,-0.8);glVertex2f(0.05,-0.9);glEnd();glBegin(GL_LINE_STRIP);glColor3f(1.0,0.5,1.0);glVertex2f(0
14、.11,-0.85);glVertex2f(0.07,-0.85);glVertex2f(0.07,-0.8);glVertex2f(0.11,-0.8);glVertex2f(0.11,-0.9);glVertex2f(0.07,-0.9);glEnd();glBegin(GL_LINE_STRIP);glColor3f(1.0,0.5,1.0);glVertex2f(0.17,-0.9);glVertex2f(0.17,-0.8);glEnd();glBegin(GL_LINE_STRIP);glColor3f(1.0,0.5,1.0);glVertex2f(0.19,-0.82);glV
15、ertex2f(0.19,-0.8);glVertex2f(0.23,-0.8);glVertex2f(0.23,-0.9);glEnd();glBegin(GL_LINE_STRIP);glColor3f(1.0,0.5,1.0);glVertex2f(0.25,-0.8);glVertex2f(0.25,-0.85);glVertex2f(0.29,-0.85);glEnd();glBegin(GL_LINE_STRIP);glColor3f(1.0,0.5,1.0);glVertex2f(0.29,-0.8);glVertex2f(0.29,-0.9);glEnd();glBegin(G
16、L_LINE_STRIP);glColor3f(1.0,0.5,1.0);glVertex2f(0.35,-0.8);glVertex2f(0.35,-0.9);glEnd();glBegin(GL_LINE_STRIP);glColor3f(1.0,0.5,1.0);glVertex2f(0.37,-0.82);glVertex2f(0.37,-0.8);glVertex2f(0.41,-0.8);glVertex2f(0.41,-0.9);glEnd();glBegin(GL_LINE_LOOP);glColor3f(1.0,0.5,1.0);glVertex2f(0.43,-0.9);g
17、lVertex2f(0.43,-0.8);glVertex2f(0.47,-0.8);glVertex2f(0.47,-0.9);glEnd();glBegin(GL_LINE_LOOP);glColor3f(1.0,0.5,1.0);glVertex2f(0.49,-0.9);glVertex2f(0.49,-0.8);glVertex2f(0.53,-0.8);glVertex2f(0.53,-0.9);glEnd();glBegin(GL_LINE_STRIP);glColor3f(1.0,0.5,1.0);glVertex2f(0.59,-0.8);glVertex2f(0.59,-0
18、.9);glEnd();/glFlush();void xingming()glMatrixMode(GL_MODELVIEW);glLoadIdentity();glScaled(0.0005,0.0005,0.0005);glTranslatef(100.5,-1500.12,100.12); glColor3f(1.0,0.0,1.0); glBegin(GL_POLYGON);/點 glVertex2i (10, 100); glVertex2i (20, 100);glVertex2i (10, 120);glVertex2i (15, 100);glVertex2i (20, 10
19、0); glVertex2i (10, 20);glVertex2i (10, 20);glVertex2i (18, 30);glVertex2i (25, 100);glVertex2i (41, 100);glVertex2i (30, 120);glVertex2i (24, 90);glVertex2i (25, 60);glVertex2i (41, 60);glVertex2i (33, 100);glVertex2i (33, 20);glVertex2i (45, 100);glVertex2i (61, 100);glVertex2i (53, 120);glVertex2
20、i (53, 60);glVertex2i (49, 60);glVertex2i (57, 60);glVertex2i (45, 40);glVertex2i (43, 20);glVertex2i (47, 40);glVertex2i (47, 20);glVertex2i (47, 20);glVertex2i (59, 20);glVertex2i (59, 20);glVertex2i (59, 40);glVertex2i (49, 40);glVertex2i (57, 30);glVertex2i (60, 40);glVertex2i (62, 20);glVertex2
21、i (67, 100);glVertex2i (87, 100);glVertex2i (77, 120);glVertex2i (77, 50);glVertex2i (77, 100);glVertex2i (68, 50);glVertex2i (77, 100);glVertex2i (86, 50);glVertex2i (65, 20);glVertex2i (69, 40);glVertex2i (72, 40);glVertex2i (76, 20);glVertex2i (79, 40);glVertex2i (83, 20);glVertex2i (85, 40);glVe
22、rtex2i (89, 20); glFlush();/* Handle window resize */void reshape(int w, int h) GLsizei wh=w;if(h<w) wh=h; glViewport(0, 0, (GLsizei) wh, (GLsizei) wh); glMatrixMode(GL_PROJECTION); glLoadIdentity(); glOrtho(-1,1,-1,1,-10,10); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); /gluLookAt(0, 0, 2, 0, 0
23、, 0, 0, 1, 0);void special_key(int key, int x, int y)switch(key)case GLUT_KEY_UP:_trans.push_back(TRANYP);glutPostRedisplay();break;case GLUT_KEY_DOWN:_trans.push_back(TRANYM);glutPostRedisplay();break;case GLUT_KEY_LEFT:_trans.push_back(TRANXM);glutPostRedisplay();break;case GLUT_KEY_RIGHT:_trans.p
24、ush_back(TRANXP);glutPostRedisplay();break;case GLUT_KEY_PAGE_UP:_trans.push_back(TRANZP);glutPostRedisplay();break;case GLUT_KEY_PAGE_DOWN:_trans.push_back(TRANZM);glutPostRedisplay();break;void transformation()int num=_trans.size();double px=0,py=0,pz=0;int i;glLoadIdentity();for(i=num-1;i>=0;i
25、-)switch(_transi)case TRANXP:px+=_delpos;break;case TRANXM:px-=_delpos;break;case TRANYP:py+=_delpos;break;case TRANYM:py-=_delpos;break;case TRANZP:pz+=_delpos;break;case TRANZM:pz-=_delpos;break;default:break;glRotated(45,px,py,pz);glTranslatef(px,py,pz);/光照·void init()GLfloat lightposition =
26、 0.0, 0.0, 3.0, 1.0 ;glClearColor(1.0,1.0,1.0,0.0);glShadeModel(GL_SMOOTH);glEnable(GL_DEPTH_TEST);glEnable(GL_LIGHTING);glEnable(GL_LIGHT0);GLfloat lightambient = 1.0,1.0,1.0,1.0;/環(huán)境光GLfloat lightdiffuse = 1.0,1.0,1.0,1.0;/漫反射GLfloat lightspecular = 1.0,1.0,1.0,1.0 ;/鏡面反射光glLightfv(GL_LIGHT0,GL_AMB
27、IENT,lightambient);glLightfv(GL_LIGHT0,GL_DIFFUSE,lightdiffuse);glLightfv(GL_LIGHT0,GL_SPECULAR,lightspecular);glLightModelf(GL_LIGHT_MODEL_AMBIENT, (0.0, 0.0, 0.0);GLfloat emission = 0.0, 0.0, 0.0, 1.0;/發(fā)射光GLfloat ambient =0.2,0.2,0.2,0.0;/環(huán)境光GLfloat diffuse =1.0,0.5,0.5,0.5;/漫反射特性GLfloat specular =0.5,0.5,0.5,0.0 ;/鏡面反射光色GLfloat shininess =100.0; /鏡面反射的光亮度glMaterialfv(GL_FRONT,GL_AMBIENT,ambient);glMaterialfv(GL_FRONT,GL_DIFFUSE,diffuse);
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 存量房買賣居間合同書
- 地坪夯實施工方案
- 活動預(yù)算及支出明細(xì)報表
- 中介房屋買賣三方合同
- 慈溪車庫地坪施工方案
- 防機(jī)械傷害專項排查實施方案
- 重慶專業(yè)固銹底漆施工方案
- 成人專升本課程數(shù)學(xué)試卷
- 填埋場總體施工方案范本
- 地形地貌修復(fù)工程施工方案
- 勞務(wù)派遣勞務(wù)外包項目方案投標(biāo)文件(技術(shù)方案)
- 2025年安全員C證(專職安全員)考試題庫
- 地理-天一大聯(lián)考2025屆高三四省聯(lián)考(陜晉青寧)試題和解析
- 2024年吉安職業(yè)技術(shù)學(xué)院單招職業(yè)技能測試題庫附答案
- 2024年蘇州市職業(yè)大學(xué)單招職業(yè)適應(yīng)性測試題庫完整版
- 2024年廣州港集團(tuán)有限公司招聘筆試沖刺題(帶答案解析)
- 2024年國家社會科學(xué)基金年度項目申請書;2024年國家社會科學(xué)基金重大項目投標(biāo)書
- 小學(xué)生主題班會 傳承雷鋒精神 爭做時代新人 課件
- 產(chǎn)品尺寸檢測報告
- 柑橘種植示范園項目可行性研究報告-用于立項備案
- IPC-A-610E培訓(xùn)教材(完整版)
評論
0/150
提交評論