1. Trang chủ
  2. » Công Nghệ Thông Tin

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

8 858 13

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

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 8
Dung lượng 173,08 KB

Nội dung

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

w