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

Bài tập lớn giữa kì môn kĩ thuật lập trình Đề tài Đồ họa trong ngôn ngữ lập trình c:c++

18 0 0
Tài liệu đã được kiểm tra trùng lặp

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

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Đồ Họa Trong Ngôn Ngữ Lập Trình C/C++
Tác giả Nguyễn Tất Cường
Người hướng dẫn TS. Nguyễn Thị Thanh Huyền
Trường học Đại Học Bách Khoa Hà Nội
Chuyên ngành Kỹ Thuật Lập Trình
Thể loại Bài Tập Lớn
Năm xuất bản 2024
Thành phố Hà Nội
Định dạng
Số trang 18
Dung lượng 838,87 KB

Nội dung

1 Khái niệm và lịch sử về đồ họa máy tính1.1 Khái niệm Đồ họa máy tính là một lĩnh vực của khoa học máy tính và kỹ thuật mà nó nghiên cứu và áp dụng các phương pháp để tạo ra và xử lý hì

Trang 1

ĐẠI HỌC BÁCH KHOA HÀ NỘI

KHOA TOÁN - TIN

—–o0o—–

BÀI TẬP LỚN GIỮA KÌ

MÔN KĨ THUẬT LẬP TRÌNH

ĐỀ TÀI

ĐỒ HỌA TRONG NGÔN NGỮ LẬP TRÌNH

C/C++

Sinh viên thực hiện: Nguyễn Tất Cường

MSSV:20227090 Giảng viên hướng dẫn: TS Nguyễn Thị Thanh Huyền

Hà Nội , 5/2024

Trang 2

Lời nói đầu

Lời đầu tiên, em xin gửi lời cảm ơn đến Khoa Toán -Tin, Đại học Bách khoa Hà Nội đã tạo cơ hội cho em thực hiện báo cáo bài tập lớn trong một môi trường tốt nhất nhằm đáp ứng yêu cầu hoàn thành báo cáo của em

Đặc biệt, em xin bày tỏ lòng biết ơn sâu sắc đến giảng viên TS.Nguyễn Thị Thanh Huyền, người đã giảng dạy, hướng dẫn và hỗ trợ em rất nhiều trong suốt thời gian qua

Cuối cùng, em xin gửi lời cảm ơn tới các anh chị cựu sinh viên Khoa Toán - Tin, sự hỗ trợ, hợp tác của bạn

bè đã giúp đỡ và truyền đạt những kinh nghiệm quý báu cho quá trình học tập của em

Do kiến thức còn hạn chế nên báo cáo của em hoàn toàn không thể tránh khỏi nhứng thiếu sót và sai sót

Vì vậy, em rất mong nhận được một số ý kiến đóng góp của cô giáo

Trân trọng cảm ơn Người báo cáo Nguyễn Tất Cường

Trang 3

Mục lục

1 Khái niệm và lịch sử về đồ họa máy

1.1 Khái niệm 3

1.2 Lịch sử 3

2 Đồ họa trong ngôn ngữ lập trình 4 2.1 Khái niệm 4

2.2 Giới thiệu một số các thư viện/API đồ họa 4

3 Khái quát ngôn ngữ lập trình C 5 3.1 Khái niệm 5

3.2 Đặc trưng 5

4 Lập trình đồ họa với OpenGL và Glut trong C/C++ 6 4.1 Tổng quan về OpenGL và Glut 6

4.2 Giới thiệu phần mềm Dev C++ 6

4.3 Hướng dẫn cài đặt Dev C++ và Glut 7

4.4 Hệ màu RGB trong đồ họa máy tính 8

4.5 Tọa độ vẽ 9

4.6 Chương trình C++ sử dụng OpenGL và Glut 10

4.7 Các hàm trong thư viện OpenGL 11

4.8 Thực hành 14

Trang 4

1 Khái niệm và lịch sử về đồ họa máy tính

1.1 Khái niệm

Đồ họa máy tính là một lĩnh vực của khoa học máy tính và kỹ thuật mà nó nghiên cứu và áp dụng các phương pháp để tạo ra và xử lý hình ảnh và đối tượng

đồ họa trên máy tính

1.2 Lịch sử

Vào thời kì sơ khai của máy tính, con người chỉ có thể giao tiếp với máy tính thông qua các dòng lệnh, được gọi là Command line interface hoặc Text-base interface vì màn hình chỉ hiển thị các kí tự Những năm 1970, một cuộc cách mạng đã diễn ra làm thay đổi cách thức con người sử dụng máy tính từ môi trường dòng lệnh sang môi trường đồ họa Máy tính lúc này có thể hiển thị hình ảnh, màu sắc Nhiều khái niệm đã được sinh ra như Icon, Window, Mouse,

và đó cũng chính là kỷ nguyên của đồ họa máy tính Chương trình đồ họa hiện diện khắp mọi nơi và thúc đấy ngành công nghiệp máy tính cá nhân Ứng dụng phổ biến mà ta có thể thấy đó là đồ họa trong game

Trang 5

2 Đồ họa trong ngôn ngữ lập trình

2.1 Khái niệm

Đồ họa trong ngôn ngữ lập trình thường được định nghĩa là việc tạo ra và điều khiển hình ảnh, đồ vật,

và hiệu ứng trực quan trên màn hình máy tính hoặc các thiết bị khác Điều này thường bao gồm việc sử dụng các thư viện hoặc frameworks để vẽ hình, thực hiện chuyển động, và tương tác với người dùng Đồ họa trong lập trình có thể bao gồm việc vẽ các hình học cơ bản như đường thẳng, hình tròn, hình chữ nhật, cũng như vẽ hình ảnh phức tạp hơn như các đối tượng 3D, hiệu ứng đặc biệt và giao diện người dùng đồ họa (GUI)

2.2 Giới thiệu một số các thư viện/API đồ họa

•OpenGL

•Vulkan

•Graphics

•Pygame

•Three.js

Trang 6

3 Khái quát ngôn ngữ lập trình C

3.1 Khái niệm

C là một ngôn ngữ mệnh lệnh được phát triển từ đầu thập niên 1970 bởi Dennis Ritchie để dùng trong hệ điều hành UNIX Từ đó, ngôn ngữ này đã lan rộng

ra nhiều hệ điều hành khác và trở thành một những ngôn ngữ phổ dụng nhất C là ngôn ngữ rất có hiệu quả và được ưa chuộng nhất để viết các phần mềm hệ thống, mặc dù nó cũng được dùng cho việc viết các ứng dụng Ngoài ra, C cũng thường được dùng làm phương tiện giảng dạy trong khoa học máy tính mặc

dù ngôn ngữ này không được thiết kế dành cho người nhập môn

3.2 Đặc trưng

•Đơn giản và có cấu trúc

•Tính linh động trên nhiều nền tảng

•Hiệu suất cao

•Hỗ trợ hàm

•Cộng đồng lớn

Trang 7

4 Lập trình đồ họa với OpenGL và Glut trong C/C++

4.1 Tổng quan về OpenGL và Glut

-OpenGL là một bộ thư viện đồ họa để xây dựng các đối tượng và thao tác cần thiết trong các ứng dụng đồ họa 2D, 3D

-OpenGL không có chức năng cho các hoạt động cửa

sổ, ví dụ như tạo, thay đổi kích thước, nên OpenGL không hoạt động một mình mà phải liên kết với các thư viện khác như Glut, Glew

4.2 Giới thiệu phần mềm Dev C++

-Dev-C++ là một môi trường phát triển tích hợp (IDE) đầy đủ tính năng miễn phí được phân phối theo Giấy phép Công cộng GNU để lập trình trong C và C++ Dev-C++ được đóng gói và sử dụng MinGW hoặc TDM-GCC 64bit của GCC làm trình biên dịch nên người dùng có thể dễ dàng sử dụng ngay khi tải về -Phần mềm Dev C++ đã được tích hợp thư viện OpenGL nên muốn lập trình đồ họa người dùng cần tải và liên kết các file của thư viện Glut để dễ dễ dàng thao tác

Trang 8

4.3 Hướng dẫn cài đặt Dev C++ và Glut

-Bước 1 : Tải file Dev C++.exe trên trang chủ Dev C++, sau đó cài đặt trên máy tính

-Bước 2 : Tìm kiếm và tải xuống folder zip của Glut trên trang chủ OpenGL, sau đó giải nén

-Bước 3: Thực hiện copy các tệp tin glut.h, libglut32.a, glut32.dll theo thứ tự và paste lần lượt vào các thư mục GL trong folder Dev C++, thư mục lib trong folder Dev C++, thư mục SysWOW64 trong folder Window

-Bước 4: Tạo 1 project trên Dev C++ và liên kết đến các file cần thiết : libopengl32.a, libglu32.a, libglut32.a (Tất cả các flie này đều nằm trong folder lib của Dev C++)

-Bước 5 : Kiểm thử chương trình và thu kết quả

Hình 1: Kết quả thu được

Trang 9

4.4 Hệ màu RGB trong đồ họa máy tính

-Màu trong đồ họa máy tính được phối từ 3 màu cơ bản là Đỏ,Xanh lá,Xanh dương được kí hiệu lần lượt

là R,G,B

-Các giá trị R,G,B đều có khoảng giá trị là [0,255] Khi muốn tạo ra 1 màu sắc khác, máy tính sẽ thực hiện việc "pha trộn" bằng cách lấy các giá trị R,G,B khác nhau để phối thành 1 màu

-Ví dụ: (R,G,B)=(255,0,0) là màu đỏ

(R,G,B)=(85,85,85) là màu xám

-Để tạo ra các khung hình/hình ảnh có nhiều màu, máy tính cần ghép rất nhiều các pixel lại với nhau, mỗi pixel là một cách phối màu

Hình 2: Hệ màu RGB

Trang 10

4.5 Tọa độ vẽ

Khái niệm trong tọa độ vẽ

-Là hệ tọa độ để vẽ lên các hình hoặc vật thể gồm

3 trục x,y,z là các trục theo chiều dài, chiều rộng và chiều cao của vật thể

Sự ảnh hưởng của tọa độ vẽ

Hình 3: Ảnh hưởng của tọa độ vẽ

Trang 11

4.6 Chương trình C++ sử dụng OpenGL và Glut

Hình 4: Cấu trúc chương trình

Hình 5: Chương trình mẫu

Trang 12

4.7 Các hàm trong thư viện OpenGL

Một số hàm quản lý cửa sổ của Glut

glutInit(int *argc, char **argv):Cấu hình môi trường đồ họa cho chương trình

int *argc: Con trỏ tới một biến kiểu số nguyên, đại diện cho số lượng đối số được truyền từ dòng lệnh khi chạy chương trình

char **argv: Một mảng con trỏ tới các chuỗi ký

tự, đại diện cho các đối số được truyền từ dòng lệnh khi chạy chương trình

gluInitDisplayMode(unsigned int mode):Thiết lập các chế độ hiển thị cửa sổ

unsigned int mode:Một số nguyên không dấu (unsigned int) đại diện cho các chế độ hiển thị muốn được thiết lập

GLUT RGB:Sử dụng không gian màu RGB cho cửa sổ đồ họa

GLUT RGBA:Sử dụng không gian màu RGBA (bao gồm kênh alpha) cho cửa sổ đồ họa

GLUT SINGLE:Sử dụng cửa sổ đồ họa với một

bộ đệm đơn

GLUT DOUBLE:Sử dụng cửa sổ đồ họa với hai

bộ đệm, cho phép vẽ kép (double buffering)

GLUT DEPTH:Sử dụng kích thước đệm sâu để hiển thị không gian 3D

Trang 13

glutInitWindowPosition(int x, int y):Thiết lập vị trí ban đầu của cửa sổ đồ họa

x: Hoành độ của cửa sổ trên màn hình

y: Tung độ của cửa sổ trên màn hình

glutInitWindowSize(int width, int height):Thiết lập kích thước ban đầu của cửa sổ đồ họa

width: Chiều rộng của cửa sổ đồ họa(pixel)

height: Chiều cao của cửa sổ đồ họa(pixel)

glutCreateWindow(const char *title):Tạo

1 cử sổ đồ họ và đặt tên của nó

title: Tên của cửa sổ đồ họa

Một số hàm quản lý sự kiện của Glut

glutKeyboardFunc()(*):Gọi hàm xử lý sự kiện khi nhấn trên bàn phím

glutMouseFunc()(*):Gọi hàm xử lý sự kiện khi kick chuột

glutIdleFunc()(*):Gọi hàm xử lý sự kiện khi không có sự kiện xảy ra

glutDisplayFunc()(*):Gọi hàm xử lý sự kiện khi hiển thị cửa sổ

glutReshapeFunc()(*):Gọi hàm xử lý sự kiện khi kích thước cửa sổ thay đổi

(*):Hàm có tham số truyền vào là hàm

Trang 14

Một số hàm quan trọng trong chương trình

•glClearColor(GLfloat red, GLfloat green,

GLfloat blue, GLfloat alpha):Thiết lập màu nền cho cửa sổ

red, green, blue, alpha: Các giá trị màu trong phạm vi từ 0.0 đến 1.0

•glOrtho(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top,

GLdou-ble nearVal, GLdouGLdou-ble farVal)): Thiết lập tọa độ vẽ

left, right, bottom, top, nearVal, farVal: Cận trái, cận phải, cận dưới, cận trên, giới hạn trước, giới hạn sau của khối hộp để vẽ vật thể

glClear(GLbitfield mask): Xóa nội dung vùng đệm

GLbitfield mask: Chỉ định vùng đệm cần xóa

•glViewport(GLint x, GLint y, GLsizei width,

GLsizei height): Thiết lập kích thước,vị trí view-port trên cửa sổ của OpenGL

x, y: Tọa độ góc dưới bên trái của viewport

width, height: Chiều rộng và chiều cao của view-port

glBegin(GLenum mode): Bắt đầu 1 chuỗi các lệnh vẽ hình

mode: Chỉ định loại hình vẽ

Trang 15

4.8 Thực hành

Chương trình vẽ đường thẳng

Hình 6: Chương trình vẽ đường thẳng

-Đoạn code trên viết thuật toán vẽ đường thẳng thông qua hàm LineMidPoint với 2 điểm đầu và điểm cuối, hàm glBegin chọn chế độ vẽ là GL POINTS-vẽ đường thẳng Kết hợp với hàm gl.Vertex2i để hiển thị các điểm vẽ, cuối cùng thuật toán vẽ được gọi trong hàmmydisplay để hiển thị đường thẳng

Trang 16

Chương trình vẽ hình vuông

Hình 7: Chương trình vẽ hình vuông

-Trong hàmmydisplay chọn màu vẽ thông qua hàm glCorlor3f, sau đó chọn chế độ vẽ đa giác trong hàm glBegin là GL POLYGON và vẽ hình vuông theo tọa

độ 4 điểm

Trang 17

Hình 9: Chương trình vẽ hình elip

Trang 18

5 Kết luận

-Đồ họa trong C/C++ là một lĩnh vực rộng, đã có rất nhiều thư viện được tạo ra để phát triển lĩnh vực này giúp người dùng dễ dàng sử dụng và ứng dụng trong công việc lập trình

-Trong khuôn khổ bài báo cáo này, em đã tìm hiểu và viết báo cáo về thư viện OpenGL và Glut, qua quá trình tìm hiểu bản thân em đã học được nhiều kiến thức bổ ích và tổng hợp trong những phần trên, em mong cô sau khi đọc sẽ có những góp ý để em có thể hoàn thiện để có được bài báo cáo tốt nhất Em xin chân thành cảm ơn!

Ngày đăng: 12/02/2025, 16:01

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

TÀI LIỆU LIÊN QUAN