1. Trang chủ
  2. » Luận Văn - Báo Cáo

xây dựng giải thuật và vẽ các hình trụ đứng và nón

10 947 0

Đ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 10
Dung lượng 866,12 KB

Nội dung

Nội dung :1.Giới thiệu OpenGL 2.Mô tả các hàm sử dụng trong bài 3.Code vẽ thuật toán 4.Mô phỏng hình ảnh... 1.Giới thiệu sơ về OPENGLOpenGL là 1 bộ thự viện đồ họa có khoảng 150 hàm giúp

Trang 1

XÂY DỰNG GIẢI THUẬT VÀ VẼ CÁC HÌNH TRỤ ĐỨNG VÀ NÓN

Nhóm gồm :

- Trần Hoàng Anh – N102104134

- Lê Nguyễn Nhật Trung – N102104181

Trang 2

Nội dung :

1.Giới thiệu OpenGL

2.Mô tả các hàm sử dụng trong bài

3.Code vẽ thuật toán

4.Mô phỏng hình ảnh

Trang 3

1.Giới thiệu sơ về OPENGL

OpenGL là 1 bộ thự viện đồ họa có khoảng 150 hàm giúp xây dựng các đối tượng và giao tác cần thiết trong các ứng dụng tương tác 3D

OpenGl không có sãn các hàm cấp cao để giúp xây dựng các đối tượng, thay vào đó người dung sẽ tự phải xây dụng :

1 Điểm

2.Đoạn thẳng

3.Đa giác

OpenGl hỗ trọ các hàm đồ họa :

- Xây dựng các đối tượng phức tạp từ các thành phần hình học cơ bản

- Sắp xêp đối tượng trong 3D và chọn điểm thuận lợi để quan sát

- Tính toán màu sắc của các đối tượng

- Biến đối những mô tả toán học và thông tin màu sắc thành các pixel trên màn hình

Trang 4

2.Mô tả các hàm sử dụng trong bài

• Sử dụng các hàm sau để vẽ các hình khối cơ bản:

o gluCylinder: vẽ hình trụ rỗng.

o gluDisk: vẽ mặt đĩa (sử dụng kết hợp với gluCylinder để vẽ hình nón, hình trụ đặc).

o gluNewQuadric: tạo đối tượng GLUquadric dùng để xác định các thông số vẽ cần thiết khi sử dụng hàm gluCylinder, gluDisk.

o glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT): hàm ox pixel, dựng lại cửa sổ ảnh.

o glViewport( 0, 0, w, h ): góc nhìn toàn cảnh.

o gluPerspective(GLdouble fovy , GLdouble aspect , GLdouble near , GLdouble far): Thiết lập khung nhìn phối cảnh, Aspect: tỉ lệ w/h chiều rộng/ chiều cao; Fovy: góc quan sát trong mp XOZ.

o glutInit(&argc, argv): Khởi tạo thư viện Glut, thiết lập phiên làm việc với hệ thống

Trang 5

• Sử dụng các hàm sau để thực hiện các phép biến đổi hình học:

o glTranslatef: (bản chất) nhân ma trận ModelView với ma trận biểu diễn phép tịnh tiến.

o glRotatef: (bản chất) nhân ma trận ModelView với ma trận biểu diễn phép quay.

o glLoadIdentity: kết hợp với hàm glMatrixMode(GL_MODELVIEW) để ma trận ModelView thành ma trận đơn vị.

o glEnable(GL_CULL_FACE), glDisable(GL_CULL_FACE): bật/tắt hiệu ứng quan sát cho các hình khối.

o glMatrixMode( GL_MODELVIEW ): Ma trận hiện tại ảnh hưởng đến vị trí của vật(ma trận nhân với tọa độ của đối tượng để tạo ra ảnh mới)

o glPushMatrix(),glPopMatrix(): đẩy ma trận và lấy ma trận ra khỏi bộ nhớ.

o glColor3f(R,G,B) : hàm tô màu cho ảnh vẽ, với 3 thông số Red, Green, Blue dùng các con số để tạo ra các màu cần thiết.

Trang 6

color buffer: buffer chứa màu của các pixel cần được thể hiện

depth buffer (hay còn gọi là z-buffer): buffer chứa chiều sâu của pixel, được đo bằng

khoảng cách đến mắt Mục đích chính của buffer này là loại bỏ phần đối tượng nằm sau

đối tượng khác

o glutSwapBuffers(): hoán đổi bộ nhớ đệm sao khi đẩybộ nhớ đệm ra.

o glPolygonMode ( GL_FRONT_AND_BACK, GL_LINE ), glPolygonMode ( GL_FRONT_AND_BACK, GL_FILL ): vẽ hình đa giác bằng các đường hoặc tô màu đa giác.

o glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH ): khởi tạo chế độ vẽ single buffer và hệ màu RGB.

o glutInitWindowSize (250, 250): khởi tạo window kích thước 250 x 250.

o glutInitWindowPosition (100, 100): khởi tạo window tại ví trí (100,100) trên screen.

Trang 7

glDisable( GL_CULL_FACE) glPushMatrix();

glTranslatef( 1.5, 0.0, 0.0

glRotatef( -90.0, 1.0, 0.0, 0.0 );

glColor3f( 1.0, 0.2, 0.2 );

drawGluCylinder(2.0, 0.75, 8, 10 );

glPopMatrix();

void drawGluCylinder( double height, double radius, int slices, int stacks )

{

drawGluSlantCylinder( height, radius, slices, stacks );

}

Trang 8

glEnable( GL_CULL_FACE );

glPushMatrix();

glTranslatef( -1.5, 0.0, 0.0 );

glRotatef( -90.0, 1.0, 0.0, 0.0 );

glColor3f( 0.2, 1.0, 0.2 );

drawGluSlantCylinderWithCaps( 3.0, 1.0, 0, 2, 2 );

glPopMatrix();

void drawGluCylinderWithCaps

( double height, double radius, int slices, int stacks )

{

drawGluSlantCylinderWithCaps( height, radius, radius, slices, stacks );

}

Ngày đăng: 25/11/2014, 09:58

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w