Bài giải bài tập Đồ họa máy tính 02

8 858 13
Bài giải bài tập Đồ họa máy tính 02

Đang tải... (xem toàn văn)

Thông tin tài liệu

Bài giải bài tập Đồ họa máy tính

Faculty of Computer Science and Engineering Department of Computer Science Bài tập 2 1/ a) // left top setViewport(0, 320, 320, 640); setCamera(0, 1, 0, 1); drawFigure(); // left bottom setViewport(0, 320, 0, 320); setCamera(1, 0, 0, 1); drawFigure(); // right bottom setViewport(320, 640, 0, 320); setCamera(0, 1, 0, 1); drawFigure(); // right top setViewport(320, 640, 320, 640); setCamera(1, 0, 0, 1); drawFigure(); b) // left top setViewport(0, 320, 320, 640); setCamera(0, 1, 0, 1); drawFigure(); // left bottom setViewport(0, 320, 0, 320); setCamera(1, 0, 0, 1); drawFigure(); // right bottom setViewport(320, 640, 0, 320); setCamera(0, 1, 0, 1); drawFigure(); Faculty of Computer Science and Engineering Department of Computer Science // right top setViewport(320, 640, 320, 640); setCamera(1, 0, 0, 1); drawFigure(); // left top setViewport(160, 320, 320, 480); setCamera(0, 1, 0, 1); drawFigure(); // left bottom setViewport(160, 320, 160, 320); setCamera(1, 0, 0, 1); drawFigure(); // right bottom setViewport(320, 480, 160, 320); setCamera(0, 1, 0, 1); drawFigure(); // right top setViewport(320, 480, 320, 480); setCamera(1, 0, 0, 1); drawFigure(); c) // left top setViewport(0, 320, 320, 640); setCamera(0, 1, 0, 1); drawFigure(); setViewport(0, 320, 320, 640); setCamera(1, 0, 0, 1); drawFigure(); // left bottom setViewport(0, 320, 0, 320); setCamera(1, 0, 0, 1); Faculty of Computer Science and Engineering Department of Computer Science drawFigure(); setViewport(0, 320, 0, 320); setCamera(0, 1, 0, 1); drawFigure(); // right bottom setViewport(320, 640, 0, 320); setCamera(0, 1, 0, 1); drawFigure(); setViewport(320, 640, 0, 320); setCamera(1, 0, 0, 1); drawFigure(); // right top setViewport(320, 640, 320, 640); setCamera(1, 0, 0, 1); drawFigure(); setViewport(320, 640, 320, 640); setCamera(0, 1, 0, 1); drawFigure(); // left top setViewport(160, 320, 320, 480); setCamera(0, 1, 0, 1); drawFigure(); // left bottom setViewport(160, 320, 160, 320); setCamera(1, 0, 0, 1); drawFigure(); // right bottom setViewport(320, 480, 160, 320); setCamera(0, 1, 0, 1); drawFigure(); // right top setViewport(320, 480, 320, 480); Faculty of Computer Science and Engineering Department of Computer Science setCamera(1, 0, 0, 1); drawFigure(); 2/ void drawPlatonic( ){ GLfloat t = 0.618; GLfloat v0[3] = {0,1,t}; GLfloat v1[3] = {0,1,-t}; GLfloat v2[3] = {1,t,0}; GLfloat v3[3] = {1,-t,0}; GLfloat v4[3] = {0,-1,-t}; GLfloat v5[3] = {0,-1,t}; GLfloat v6[3] = {t,0,1}; GLfloat v7[3] = {-t,0,1}; GLfloat v8[3] = {t,0,-1}; GLfloat v9[3] = {-t,0,-1}; GLfloat v10[3] = {-1,t,0}; GLfloat v11[3] = {-1,-t,0}; glBegin(GL_TRIANGLE_FAN); glVertex3fv(v0); glVertex3fv(v1); glVertex3fv(v2); glVertex3fv(v6); glVertex3fv(v7); glVertex3fv(v10); glVertex3fv(v1); glEnd( ); glBegin(GL_TRIANGLE_FAN); glVertex3fv(v4); glVertex3fv(v8); glVertex3fv(v3); glVertex3fv(v5); glVertex3fv(v11); glVertex3fv(v9); glVertex3fv(v8); glEnd( ); glBegin(GL_TRIANGLE_STRIP); glVertex3fv(v1); Faculty of Computer Science and Engineering Department of Computer Science glVertex3fv(v8); glVertex3fv(v2); glVertex3fv(v3); glVertex3fv(v6); glVertex3fv(v5); glVertex3fv(v7); glVertex3fv(v11); glVertex3fv(v10); glVertex3fv(v9); glVertex3fv(v1); glVertex3fv(v8); glEnd( ); } 3/ #include <iostream.h> #include <stdio.h> #include <math.h> #include <GL/glut.h> #define M_PI 3.1415926 int nSlice, nStack; float deltaPhi, deltaTheta; void display(void){ glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); float c = M_PI/180.0; float phir, phir20, thetar; float x, y, z; for(float phi = -90+deltaPhi; phi<90 - deltaPhi; phi+=deltaPhi){ phir = c*phi; phir20 = c*(phi+deltaPhi); glBegin(GL_QUAD_STRIP); for(float theta = -180; theta<=180; theta+=deltaTheta){ thetar = c*theta; x = sin(thetar)*cos(phir); z = cos(thetar)*cos(phir); y = sin(phir); glVertex3d(x, y, z); Faculty of Computer Science and Engineering Department of Computer Science x = sin(thetar)*cos(phir20); z = cos(thetar)*cos(phir20); y = sin(phir20); glVertex3d(x, y, z); } glEnd(); } float c80; glBegin(GL_TRIANGLE_FAN); glVertex3d(0, 1, 0); c80 = c*(90-deltaPhi); y = sin(c80); for(float theta = 180; theta>=-180; theta-=deltaTheta){ thetar = c*theta; x = sin(thetar)*cos(c80); z = cos(thetar)*cos(c80); glVertex3d(x, y, z); } glEnd(); glBegin(GL_TRIANGLE_FAN); glVertex3d(0, -1, 0); c80 = c*(90-deltaPhi); y = -sin(c80); for(theta = -180; theta<=180; theta+=deltaTheta){ thetar = c*theta; x = sin(thetar)*cos(c80); z = cos(thetar)*cos(c80); glVertex3d(x, y, z); } glEnd(); glFlush(); } void myinit(){ glClearColor (1.0, 1.0, 1.0, 1.0); glColor3f (0.0, 0.0, 0.0); glPolygonMode(GL_FRONT_AND_BACK, GL_LINE); glFrontFace(GL_CW); glEnable(GL_CULL_FACE); } void main(int argc, char **argv){ Faculty of Computer Science and Engineering Department of Computer Science cout << "Input number of Stack: "; cin >> nStack; cout << "Input number of Slice: "; cin >> nSlice; deltaPhi = 180.0/nStack; deltaTheta = 360.0/nSlice; glutInit(&argc, argv); glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB | GLUT_DEPTH); glutInitWindowSize(500, 500); glutCreateWindow("sphere"); myinit(); glutDisplayFunc(display); glutMainLoop(); } 4/ /* * nSlice: số lượng các tam giác tạo ra 2 mặt đáy hình tròn * r : bán kính hình tròn đáy * height: chiều cao hình trụ * */ void DrawCylinder(int nSlice,GLfloat r,GLfloat height){ GLfloat a = PI*2/nSlice; glBegin(GL_TRIANGLE_FAN); glVertex3f(0,0,0); for(int i = 0;i < nSlice;i++){ glVertex3f(r*cos(i*a),0,r*sin(i*a)); glVertex3f(r*cos((i+1)*a),0,r*sin((i+1)*a)); } glEnd( ); glBegin(GL_TRIANGLE_FAN); glVertex3f(0,height,0); for(int i = 0;i < nSlice;i++){ glVertex3f(r*cos(i*a),height,r*sin(i*a)); glVertex3f(r*cos((i+1)*a),height,r*sin((i+1)*a)); } glEnd( ); Faculty of Computer Science and Engineering Department of Computer Science glBegin(GL_QUAD_STRIP); for(int i = 0;i < nSlice;i++){ glVertex3f(r*cos(i*a),0,r*sin(i*a)); glVertex3f(r*cos(i*a),height,r*sin(i*a)); } glEnd( ); }

Ngày đăng: 24/02/2014, 21:16

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan