Tải bản đầy đủ (.pdf) (22 trang)

BÁO CÁO CHUYÊN đề HỌC PHẦN đồ HỌA MÁY TÍNH đề TÀI mô phỏng sự di chuyển của hành tinh

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.13 MB, 22 trang )

TRƯỜNG ĐẠI HỌC ĐIỆN LỰC
KHOA CÔNG NGHỆ THÔNG TIN

BÁO CÁO CHUN ĐỀ HỌC PHẦN
ĐỒ HỌA MÁY TÍNH

ĐỀ TÀI:

Mơ phỏng sự di chuyển của hành tinh

Sinh viên thực hiện
Chuyên ngành
Lớp

: Đặng Cao Minh
: CÔNG NGHỆ PHẦN MỀM
: D14CNPM4

Hà Nội, tháng 6 năm 2022


PHIẾU CHẤM ĐIỂM
Sinh viên thực hiện:

Họ và tên

Chữ ký

Ghi chú

Chữ ký



Ghi chú

Giảng viên chấm:

Họ và tên
Giảng viên chấm 1 :

Giảng viên chấm 2 :

1|Page


0|Page


MỤC LỤC
LỜI CẢM ƠN
LỜI MỞ ĐẦU
CHƯƠNG 1. THUẬT TOÁN CƠ BẢN TRONG ĐỒ HỌA 2D
1.1 Thuật toán vẽ đoạn thẳng
1.1.1 Thuật toán DDA (Digital Defferencial Analyzer) hay thuật toán tăng dần (Basic
Incremental Algorithm)
1.1.2 Thuật toán Bresenham vẽ đường thẳng
1.1.3 Thuật toán trung điểm vẽ đường thẳng
1.1.4 Thuật toán vẽ đường trịn ,elip
1.1.4.1 Thuật tốn Bresenham vẽ đường trịn
1.1.4.2 Thuật tốn trung điểm vẽ đường trịn
1.1.4.3 Thuật tốn trung điểm vẽ elip
CHƯƠNG 2. PHÁT TRIỂN ỨNG DỤNG 3D

2.1 Mô tả bài tốn
2.2 Mơ tả chuyển động của hai hành tinh.
2.2.1 Phép biến đổi
2.2.2 Phép vẽ hình cơ bản
2.3 Kết quả thực nghiệm
KẾT LUẬN
Tài Liệu Tham Khảo

1|Page


2|Page


LỜI MỞ ĐẦU
Đồ họa máy tính là một lĩnh vực của khoa học máy tính nghiên cứu về cơ sở toán
học, các thuật toán cũng như các kĩ thuật để cho phép tạo, hiển thị và điều khiển
hình ảnh trên màn hình máy tính.
Đồ họa máy tính ngày nay được ứng dụng rất rộng rãi trong nhiều lĩnh vực khoa
học, kĩ thuật, nghệ thuật, kinh doanh, quản lí, … Các ứng dụng đồ họa rất đa dạng,
phong phú và phát triển liên tục không ngừng. Ngày nay, hầu như không có
chương trình ứng dụng nào mà khơng sử dụng kĩ thuật đồ họa để làm tăng tính hấp
dẫn của mình.
Việc mơ tả dữ liệu thơng qua các hình ảnh và màu sắc đa dạng của nó, các chương
trình đồ họa thường thu hút người sử dụng bởi tính thân thiện, dễ dùng,… kích
thích khả năng sang tạo và nâng cao năng suất làm việc
Là sinh viên chúng em được tìm hiểu và làm quen với một số kĩ thuật đồ họa trên
máy tính thơng qua tài liệu, bài giảng do thầy Ngô Trường Giang giảng dạy. Với
những kiến thức đã học em quyết định chọn đề tài: Xây dựng mô hình mơ phỏng
chuyển động 2 hành tinh bằng OpenGL hiện đại.


3|Page


CHƯƠNG 1. THUẬT TOÁN CƠ BẢN TRONG
ĐỒ HỌA 2D
1.1 Thuật toán vẽ đoạn thẳng
1.1.1 Thuật toán DDA (Digital Defferencial Analyzer) hay thuật toán tăng
dần (Basic Incremental Algorithm)
Input: Điểm đầu(x1,y1), điểm cuối(x2,y2), màu tô C
Output: Đoạn thẳng nối 2 điểm (x1,y1) (x2,y2) với
màu C.
Phương trình đoạn thẳng đi qua 2 điểm

Chuyển đổi đường quét (Rasterization)
Biến đổi đường liên tục thành rời rạc(Sampling)
Scan conversion = Sampling

Yêu cầu chất lượng đường vẽ
-Hình dạng liên tục
-Độ dày và độ sáng đều
-Các pixel gần đường”lí tưởng “ được hiển thị
-Vẽ nhanh
DDA- Digital Differential Analyzer = Finite defferences
Cho giá trị bước nhảy trên một trục tính giá trị bước nhảy trên trục kia theo phương
trình y=ax+b
4|Page


Với hệ số góc a nằm trong khoảng [0,1]

-dy=a.dx
-Nếu dx = 1 thì y(i+1)=y(i)+a
-Làm trịn vì số a bất kì
-Ý tưởng thuật tốn: với mỗi bước hãy tính số gia trên cơ sở bước trước đó

Nhận xét thuật tốn DDA:
-Khơng có phép nhân
-Có phép chia và làm trịn số -->chậm
Qui tắc tổng quát khi vẽ đồ họa
-Cộng và trừ nhanh hơn nhân
-Nhân nhanh hơn chia
-Sử dụng bảng để đánh giá hàm rời rạc nhanh hơn tính tốn
-Tính tốn số ngun nhanh hơn số thực
-Tránh các tính tốn khơng cần thiết nhờ nhận ra các trường hợp đặc biệt của
đường vẽ
1.1.2 Thuật toán Bresenham vẽ đường thẳng
Giả sử vừa vẽ điểm tại (xi,yi) bây giờ phải xác định điểm sẽ vẽ thuộc 1 trong 8
pixel liền kề (xi+1,yi),(xi-1,yi),(xi,yi-1),(xi,yi+1),....

5|Page


Hình dạng đoạn thẳng phụ thuộc vào các giá trị dx và dy

-dx=0  đường thẳng song song trục y
-dy=0 đường thẳng song song trục x
-dx>0 tọa độ x biến thiên tăng dần
-dx<0 tọa độ x biến thiên giảm dần
-Xét tương tự với dy
-Nếu abs(dx)>abs(dy) : y=f(x)

- Nếu abs(dx)
Xét đoạn thẳng có hệ số góc 0≤m≤1.
6|Page


Điểm vừa chọn là (x,y) ->
điểm tiếp theo sẽ vẽ là (x+1,y)
hay (x+1, y+1). Việc lựa chọn
sẽ phụ thuộc vào khoảng cách
d: d=d1-d2

-Nếu d>0 ó d1>d2 chọn NE xi+1,yi
-Nếu d<0 ó d1+d1=yi+1-y=yi+1-a(xi+1)-b
+d2=y-yi=a(xi+1)+b-yi
+d=d1-d2=-2a(xi+1)+2yi-2b+1
-Nếu chọn E => dnewE= d(xi+1,yi+1 )
=-2a(xi+1)+2yi-2b+1 +2-2a= d+2-2a=d+ ∆E
-Nếu chọn NE => dnewNE= d(xi+1,yi)
=-2a(xi+1)+2yi-2b+1 -2a= d-2a=d+ ∆NE
-Tìm dstart
-Giả sử điểm khởi đầu là xi,yi
dstart= -2a(xi+1)+2yi-2b+1
-Mà ta có yi=axi+b => axi=yi-b

dstart =-2a+1
Ta có a=dy/dx. Nhân các vế với dx ta có
7|Page



dstart=-2dy+dx
∆E= -2dy+2dx
∆NE= -2dy

1. Chọn vị trí vẽ đầu tiên là x1,y1
2. Tính tham số thứ nhất d=-2dy+dx
Nếu d >0 vị trí vẽ tiếp theo là xi+1,yi
Ngược lại vị trí vẽ tiếp theo là xi+1,yi+1

3. Tiếp tục tăng x để tính d tiếp theo từ d trước đó
Nếu trước đó di >0 thì di+1=di-2dy
Ngược lại thì di+1=di-2dy+2dx n Nếu di+1 vị trí vẽ tiếp theo là xi+2,yi
Ngược lại vị trí vẽ tiếp theo là xi+2,yi+2

4. Lặp lại bước 3 cho đến khi x= x2
1.1.3 Thuật toán trung điểm vẽ đường thẳng
Pitteway công bố năm 1967 , Van Aken cải tiến năm 1984
Giả sử ta đã chọn P để vẽ , xác định pixel tiếp theo tại N hay NE
-Giao của đường thẳng với Xp+1 tại Q, M là trung điểm của NE và E
Ý tưởng : M nằm phía nào của đưởng thẳng ,nếu M phía trên đường thẳng thì chọn
E,ngược lại chọn NE
Nhiệm vụ : Xác định M ở đâu
Phương trình đường thẳng F(x,y) = ax+by+c

a = dy ,b=-dx,c=B.dx
8|Page


Giá trị hàm tại M: F(M) = F(xp+1,yp+1/2)=d

Nếu d>0 ,M nằm dưới đường thẳng chọn NE
Nếu d<0 M nằm phía trên chọn E
Nếu d=0 chọn E hay NE tùy ý

9|Page


1.1.4 Thuật tốn vẽ đường trịn ,elip
Một số tính chất của đường trịn

1.1.4.1 Thuật tốn Bresenham vẽ đường trịn
10 | P a g e


1.1.4.2 Thuật tốn trung điểm vẽ đường trịn
t

11 | P a g e


1.1.4.3 Thuật toán trung điểm vẽ elip

12 | P a g e


13 | P a g e


14 | P a g e



CHƯƠNG 2. PHÁT TRIỂN ỨNG DỤNG 3D
2.1 Mô tả bài toán
Vũ trụ là một khái niệm khá trừu tượng , ngay cả trên trái đất cũng có q nhiều
bí ẩn mà con người chưa khám phá đc , tuy nhiên con người vẫn không ngừng phát
triển các công cụ để khai thác đc những thơng tin mà họ có được từ vũ trụ , từ
khơng gian hay địa hình , tất cả những điểu đó góp phần tạo ra 1 bản mơ phỏng
cung cấp nhiều thơng tin và cái nhìn trực quan hơn về vũ trụ
Với những công nghệ và thơng tin mà chúng ta đã có , những mơ hình 3d được
dựng lên, mơ hình hoạt động , hay mơ hình bề mặt , khi có những thứ này con
người sẽ tận hưởng được nhiều lợi ích như:
- Hiểu được kích thước thực tế của 1 hành tinh , cách hoạt động , chu kì quay
- Kích thích khả năng khám phá và tự học hỏi của con người.
- Có thể sử dụng làm cơng cụ dạy học hay dùng để dự báo địa chấn , dự báo thời
tiết , thiên tai .
- Sử dụng trong lĩnh vực thiên văn học , giúp con người có thể chạm tới những vì
sao
Chuyển động của các hành tinh ln được mọi người chú ý vì nó có thể coi là hoạt
động cơ bản của một tinh cầu , tuy nhiên , mỗi hành tinh có 1 các chuyển động
khác nhau , mà thông qua việc quan sát các thức hoạt động cùng vs đo đường kính
, diện thích , khối lượng và căn cứ vào số lượng khống chất có trong hành tinh m
nta đã xây dựng 1 công thức chuyển động vô cùng phức tạp cho mỗi hành tinh , do
đó việc tái dựng lại mơ hình chuyển động này sẽ không được ứng dụng công thức
quay chuẩn xác mà chỉ là công thức gần đúng .
2.2 Mô tả chuyển động của 2 hành tinh.
 Em tiến hành mô tả 2 hoạt động phổ biến nhất trong chuyển động của hành
tinh là :
- Hành có thể quay theo quỹ đạo 360o.
- Hành tinh có thể quay quanh trục của chính nó .
 Mơ tả chi tiết từng chuyển động

Hành tinh ở trục tọa độ đc coi là trái đất , hành tinh cịn lại là mặt trăng .
Hiện tại thì chuyển động của chúng đc vận hành bởi hàm timer
Cụ thể như sau :
Trái đất dẽ đc đánh dấu màu vàng , nếu kích chuột vào sẽ đổi thành màu tìm , nó sẽ
quay quanh chính nó , cụ thể là quay quanh trục Y
Mặt trăng màu xanh , nó sẽ quay quang chính nó và quay theo quỹ đạo quanh trái
đất
Tuy nhiên cũng có thể sử dụng keyboard để điều khiển chuyển động của hành tinh.
15 | P a g e


2.2.1 Phép biến đổi
- Phép quay.
+ Phép quay quanh trục OX.
+ Phép quay quanh trục OY.
+ Phép quay quanh trục OZ.
- Phép biến đổi tỉ lệ..
- Góc nhìn (view).
2.2.2 Phép vẽ hình cơ bản
- Vẽ hình cầu.

2.3 Kết quả thực nghiệm

16 | P a g e


KẾT LUẬN
17 | P a g e



Trên đây là toàn bộ nội dung báo cáo thực hiện những vấn đề nêu lên ở phần đầu.
Đó là minh chứng rõ rệt cho sự cố gắng, quyết tâm cũng như đánh giá khả năng
hiểu biết, kiến thức của em trong việc tìm hiểu đồ họa hiện tại và xây dựng đồ họa
mới nhằm đáp ứng nhu cầu thực tiễn.
Đồng thời, qua bài báo cáo trên cũng đã giúp cho chúng em học hỏi được thêm
nhiều kiến thức mới mẻ, nâng cao tính tự giác, tinh thần đồn kết và nâng cao khả
năng làm việc nhóm. Giúp có thêm kinh nghiệm đi khảo sát thực tế và được trau
dồi khả năng phân tích, đánh giá về nhiều khía cạnh, tiếp cận với người dùng,
người dùng. Thêm vào đó, là giúp cho em hiểu rõ hơn về ngôn ngữ lập trình, cơng
cụ mà mình đang sử dụng, cũng như lý thuyết, phương pháp tìm hiểu về tính đặc
trù của lập trình đồ họa
Trong quá trình tìm hiểu và làm bài, em đã cố gắng hoàn thiện bài làm và hoàn
thiện mình hơn về mặt kiến thức. Nhưng cũng khơng thể tránh khỏi những sai sót,
mong thầy cơ và các bạn góp ý để bài của nhóm hồn thiện hơn.
Em xin chân thành cảm ơn!

18 | P a g e


Tài Liệu Tham Khảo
1.Slide bài giảng thầy Ngô Trường Giang
2.OpenGL_Basic.PDF

19 | P a g e



×