Tải bản đầy đủ (.docx) (37 trang)

BÁO cáo CHUYÊN đề học PHẦN đồ họa máy TÍNH đề tài CHƯƠNG TRÌNH mô PHỎNG bàn cờ 2d

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 (859.05 KB, 37 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: CHƯƠNG TRÌNH MÔ PHỎNG BÀN CỜ 2D.

Sinh viên thực hiện:

NGUYỄN ĐỨC LONG (NT)
LÃ QUỐC NGHỊ
CAO HOÀI NAM
PHẠM QUANG ÁNH

Giảng viên hướng dẫn:

THẦY. NGÔ TRƯỜNG GIANG

Ngành:

CÔNG NGHỆ THÔNG TIN

Chuyên ngành:

CÔNG NGHỆ PHẦN MỀM

Lớp:

D13CNPM1 (NHÓM 12)

HÀ NỘI, 06/2020.




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: CHƯƠNG TRÌNH MÔ PHỎNG BÀN CỜ 3D.

Sinh viên thực hiện:

NGUYỄN ĐỨC LONG (NT)
LÃ QUỐC NGHỊ
CAO HOÀI NAM
PHẠM QUANG ÁNH

Giảng viên hướng dẫn:

THẦY. NGÔ TRƯỜNG GIANG

Ngành:

CÔNG NGHỆ THÔNG TIN

Chuyên ngành:

CÔNG NGHỆ PHẦN MỀM

Lớp:


D13CNPM1 (NHÓM 12)

HÀ NỘI, 06/2020


Sinh viên thực hiện:
STT

Họ và tên

1

Nguyễn Đức Long

2

Phạm Quang Ánh

3

Lã Quốc Nghị

4

Cao Hồi Nam

Gíao viên chấm điểm:
Họ và tên

Giáo viên 1:


Giáo viên 2:

Chữ ký

Ghi chú


Mục Lục
A.

MỞ ĐẦU..................................................................................................

B.

NỘI DUNG..............................................................................................

Chương I: ĐỒ HỌA HAI CHIỀU..............................................................
1.

Vẽ đường thẳng.............

2.

Vẽ đường trịn...............

3.

Thuật Tốn Tơ Màu Trà


4.

Thuật tốn tơ màu theo

Chương II: Phát Triển Ứng dụng Đồ Họa 2D...........................................

C.

1.

Phát biểu bài toán..........

2.

Các bước giải quyết.......

3.

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

Kết Luận................................................................................................


A. MỞ ĐẦU
Sự phát triển của khoa học, kĩ thuật, nghệ thuật, kinh doanh và công nghệ luôn
luôn phụ thuộc vào khả năng truyền đạt thông tin của chúng ta, hoặc thông qua các
bit dữ liệu lưu trữ trong microchip hoặc thơng qua giao tiếp bằng tiếng nói. Câu
châm ngơn từ xa xưa “một hình ảnh có giá trị hơn cả vạn lời” hay “trăm nghe
không bằng một thấy” cho thấy ý nghĩa rất lớn của hình ảnh trong việc truyền tải
thơng tin. Hình ảnh bao giờ cũng được cảm nhận nhanh và dễ dàng hơn, đặc biệt là

trong trường hợp bất đồng về ngơn ngữ. Do đó khơng có gì ngạc nhiên khi mà ngay
từ khi xuất hiện máy tính, các nhà nghiên cứu đã cố gắng sử dụng nó để phát sinh
các hình ảnh trên màn hình. Trong suốt gần 50 năm phát triển của máy tính, khả
năng phát sinh hình ảnh bằng máy tính của chúng ta đã đạt tới mức mà bây giờ hầu
như tất cả các máy tính đều có khả năng đồ họa.
Đồ họa máy tính là một trong những lĩnh vực lý thú nhất và phát triển nhanh nhất
của tin học. Nó cịn là sự kết hợp giữa phương pháp và công nghệ dùng trong việc
chuyển đổi qua lại giữa dữ liệu và hình ảnh bằng máy tính. Đồ 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ề ở 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ị, điều khiển hình ảnh trên màn hình máy tính. Đồ họa
máy tính có liên quan ít nhiều đến một số lĩnh vực như đại số, hình học giải tích, hình
học họa hình,...và kỹ thuật máy tính, đặc biết là chế tạo phần cứng.

Chúng ta có thể vẽ ra những hình ảnh khơng chỉ là ảnh tĩnh mà cịn có thể
biến đổi thành những hình ảnh sinh động qua phép tịnh tiến, phép biến đổi,... Do
vậy, qua thời gian tìm hiểu nhóm em đã quyết định chọn đề tài “Viết Chương trình
mơ phỏng bàn cờ 3D.” nhằm giúp mọi người có thể hiểu rõ hơn về các phép biến
đổi hình học trong khơng gian thực.

5


B. NỘI DUNG
Chương I: ĐỒ HỌA HAI CHIỀU
Vẽ đường thẳng

1.

a. Thuật toán Bressenham
Thuật toán

Thuật toán Bresenham đưa ra cách chọn yi + 1 là yi hay yi + 1 theo một
hướng khác. Đó là so sánh khoảng cách giữa điểm thực y với 2 điểm gần kề nó nhất.
Nếu điểm nào nằm gần điểm thực hơn thì sẽ được chọn làm điểm vẽ tiếp theo.

Hình 1.1
Xét trường hơp 0 < m < 1
Gọi y là giá trị thực (giá trị chính xác) của đường thẳng tại x ở bước thứ i +
1

là:
y = m(xi

+ 1) + b

Gọi d1 là khoảng cách từ y đến yi
Gọi d2 là khoảng cách từ y đến yi
Ta có:
d1 = y – yi
d2

= yi

= m(xi

+ 1

+ 1) + b - yi

+ 1 – y = yi


+ 1 – [m(xi

+ 1) + b]
6

Ta xét

(d1

– d2):


d1

– d2

> 0

Ngược lại:


d1

=

[m(xi

=

m(xi


+ 1) + b – yi

=

2m(xi

+ 1) – 2yi

+ 1) + b - yi] – [yi
– yi

+ 1 – m(xi

– 1 + m(xi

– d2
+ 1) - b]

+ 1) + b

+ 2b - 1

Dễ thấy d1 – d2 tồn tại phép toán với số thực m = . Và để tuân thủ

theo đúng ý tưởng thuật toán chỉ thực hiện các phép
toán trên số nguyên, ta khử phân số bằng cách nhân 2 vế
với dx:
Đặt Pi


= dx(d1

– d2)
m =



Pi

= dx[2m(xi

+ 1) + 2b – 2yI

- 1]

Thay
Pi = 2dyxi – 2dxyi + c
Mặt khác dx ≥ 0 với mọi trường hợp
⇨ dấu của Pi cùng dấu với d1



Pi

Pi

≤ 0

> 0
Pi


Ta lại có:

Pi

+ 1



= 2dyxi

– 2dxyi
Pi

+ c
+ 1

– Pi


= 2dy – 2dx(yi

Pi

+ 1

+ 1

= Pi
7


Nếu Pi

< 0

Pi


dx)

Ngược lại
Ta có: Pi

= 2x1dy – 2y1dx + c

=

2x1dy – 2(x1

=

2dy – dx

+ b)dx + 2dy + (2b – 1)dx

Hình 1.2
Giả sử khoảng cách từ điểm thực yi

so với yi là p. Do việc phải xét nên


+ 1.

chọn điểm trên hay điểm dưới gần với điểm thực hơn, mà mỗi lần x tăng thêm 1
đơn vị thì khoảng cách p lại cộng thêm một giá trị c nào đó. Tuy nhiên, khoảng
cách p khơng tăng lên một cách tuyến tính , nên chúng ta phải đi tìm cơng thức
tổng qt cho các trường hợp , đó là Pi

+ 1

= ? Pi
8


Lưu đồ giải thuật

Hình 1.3

9


Kết quả thử nghiệm

Hình 1.4

10


Hình 1.5

11



b.

Thuật tốn Midpoint

Thuật tốn
Xét 0 < hệ số góc < 1

Hình 1.6
Thuật tốn Midpoint đưa ra cách chọn điểm yi
cách so sánh điểm thực Q(xi

+ 1

là yi hay yi

+ 1

bằng

, y) với điểm Midpoint là trung điểm của S và

+ 1

P. Nếu điểm Q nằm dưới điểm Midpoint thì ta chọn điểm S là điểm vẽ tiếp theo.
Ngược lại, nếu điểm Q nằm trên điểm Midpoint thì ta chọn P. Ta có dạng tổng
quát của PT đường thẳng:
Ax + By + C = 0
Với A = y0 – y1; B = - (x2 – x1); C = x2y1 –

x1y2 Đặt F(x, y) = Ax + By + C
Ta có nhận xét:
Vị trí tương đối của điểm Midpoint (x, y) với đường thẳng:
+ F(x, y) < 0 nếu (x, y) nằm phía trên đường thẳng
+ F(x, y) = 0 nếu (x, y) thuộc về đường thẳng
12


+ F(x, y) > 0 nếu (x, y) nằm phía dưới của đường thẳng Lúc
này việc chọn các điểm S, P ở trên được đưa về việc xét dấu của
pi

+ 1

– pi

= 2F(xi

+ 1

+ 1, yi

+ 1

+ ) – 2F(xi



2[A(x


⇨ pi

i

+ 1, yi

p

+ 1 + B(yi

+ )

+ ) + C]

+ 1



Vậy
pi

= pi

+ 1

pi + 1
Ta tính giá trị p1 ứng với điểm ban đầu (x1, y1) với nhận xét rằng điểm

= pi


(x1, y1) là điểm thuộc đường thẳng, tức là có Ax1 + By1 + C = 0
p⇨1 = 2F(x1 + 1, y1 + ) = 2[A(x1 + 1) + B(y1 + ) + C] ⇨

p = 2A + B

p1

= 2(Ax1 + By1 + C) + 2A + B

1
⇨ p1

= 2Dy – Dx

Ta thấy kết quả của thuật toán Midpoint tương tự thuật tốn Bresenham như đã

nói ở trên.
Lưu đồ thuật toán
Giống của thuật toán Bresenham

13


Hình 1.7

14


Kết quả thử nghiệm


Hình 1.8

Hình 1.9
1
5


2.

Vẽ đường trịn
a. Thuật tốn Bressenham

Thuật tốn
Giả sử (xi, yi) đã vẽ được, điểm kế tiếp là (xi + 1, yi) hoặc (xi +1, yi -1)

Từ phương trình: x2

là:

y2 = R2 - (xi + 1)2
Đặt: d1
d2 = y 2
Suy ra:
pi

- (yi

- 1)2

= R2


- (xi + 1)2

+ 1

(2)

Từ
- 2(yi

(4)

+ 1

- (y

= d1
pi



=



- yi)

⇒ pi

+ 1


16


Nếu

pi

Nếu
pi
yi) + 10. Ta chọn điểm đầu tiên cần vẽ (0, R),

2R
Tóm lại: Ta có thuật tốn vẽ đường trịn:
• Bước 1: Chọn điểm đầu tiên cần vẽ (x1, y1) = (0, R)
• Bước 2: Tính P đầu tiên: p1 = 3 - 2R Nếu p < 0: chọn điểm kế
tiếp là (xi +1, yi). Ngược lại chọn ñiểm (xi + 1,yi - 1)
• Bước 3: x:=x + 1, tính lại p: Nếu pi < 0: pi

Ngược lại: pi

+ 1

điểm kế tiếp là(xi


+ 1

= pi + 4xi + 6.


= pi + 4(xi - yi) + 10 Khi đó: Nếu pi
, yi

+ 1

). Ngược lại chọn điểm (xi

+ 1

Bước 4: Lặp lại bước 3 cho đến khi x = y.

, yi

+ 1

+ 1

+ 1

< 0: chọn

-1)


17


Lưu đồ giải thuật

Hình 1.11


18


Kết quả thử nghiệm

Hình 1.12
19


Hình 1.13

20


b.

Thuật tốn Midpoint

Thuật tốn
Đường trịn có tâm O(xc, yc) = (0, 0), bán kinh r có phương trình:
x2 + y2 = r2 => x2 + y2 - r2 = 0
Đặt f(x, y) = x2 + y2 - r2
Với mọi điểm P(x, y) nằm trong hệ tọa độ Oxy, ta có:
P(x, y) nằm trên đường tròn O nếu f(x, y) = 0
P(x, y) nằm ngồi đường trịn O nếu f(x, y) > 0
P(x, y) nằm trong đường tròn O nếu f(x, y)< 0

Hình 1.14
Do đường trịn có tính đối xứng qua các cũng 1/8, nghĩa là ứng với một

điểm có tọa độ (x, y) thuộc 1 cung nào đó, ta có thể hồn tồn xác định được tọa
độ 7 điểm cịn lại bằng cách lấy đối xứng qua các cung.
Từ tính chất đó nên chúng ta chỉnh cần vẽ 1/8 đường trịn là đủ, sau đó sẽ
lấy đối xứng để được đường trịn hồn chỉnh.
Điểm đầu tiên ta vẽ là điểm (x = 0, y = R)
21


Trong cung 1/8 thứ nhất do khoảng biến thiên của x lớn hơn khoảng biến thiên
của y, nên xi+1 = xi + 1.
Giả sử ta đã vẽ được (Xi, Yi) ở bước thứ i, ta cần xác định (Xi+1, Yi+1) ở
bước thứ i + 1.
Như vậy ta có:

Ta có hình như sau:

Hình 1.15
Tính Fi
Đặt Fi = F(X, Y - 1/2), ta hình có cơng thức:

Nếu Fi < 0 <=> (Xi + 1, Y) gần với Yi => Yi+1 = Yi
22


Nếu Fi >= 0 <=> (Xi + 1, Y) gần với Yi - 1 => Yi + 1 = Yi -1
Tính Fi +1 theo Fi
Fi + 1 - Fi = 2Xi + 3 + (Yi+12 - Yi2) + (Yi+1 - Yi) (*)
Nếu Fi < 0 thì Fi + 1 = Fi + 2Xi + 3, do ta thay thế Yi+1 = Yi vào (*)
Nếu Fi >= 0 thì Fi + 1 = Fi + 2(Xi - Yi) + 5, do thay thế Yi+1 = Yi -1 vào (*)
Tính giá trị F đầu tiên

Ta có:

Thay Xi = 0 và Yi = R trong cơng thức trên ta có được: F = 5/4 - R

23


Lưu đồ giải thuật

Hình 1.16

24


×