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 860 13
Tài liệu đã được kiểm tra trùng lặp

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

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Bài Tập 2
Trường học Faculty of Computer Science and Engineering
Chuyên ngành Computer Science
Thể loại Bài tập
Định dạng
Số trang 8
Dung lượng 173,08 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

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

Trang 1

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();

Trang 2

// 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);

Trang 3

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);

Trang 4

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);

Trang 5

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);

Trang 6

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){

Trang 7

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( );

Trang 8

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

🧩 Sản phẩm bạn có thể quan tâm

w