Tải bản đầy đủ (.docx) (43 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 (517.13 KB, 43 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


PHIẾU CHẤM ĐIỂM
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 Hoài Nam

Nội dung thực hiện

Điểm

Chữ ký


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.
B.


A. MỞ ĐẦU
C.
D.
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.

E.
Đồ 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.
F.
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
G.
H. Chương I: ĐỒ HỌA HAI CHIỀU
I.
1.Vẽ đường thẳng
a. Thuật tốn Bressenham


Thuật tốn
J.


Thuật tố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.
K.
L.

P.

Hình 1.1

M.
N.

Xét trường hơp 0 < m < 1

O.

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à:
Q.

y = m(xi + 1) + b

R.

Gọi d1 là khoảng cách từ y đến yi


S.

Gọi d2 là khoảng cách từ y đến yi + 1

T.

Ta có:


U.

d1 = y – yi = m(xi + 1) + b - yi

V.

d2 = yi + 1 – y = yi + 1 – [m(xi + 1) + b]


W.

Ta xét (d1 – d2):

X.

d1 – d2 > 0 ⇨

d1 > d2 ⇨yi

Y.


Ngược lại: d1 – d2 ≤ 0 ⇨ d1 ≤ d2 ⇨ yi

+ 1

+ 1

= yi + 1

= yi

⇨ d1 – d2
Z.

= [m(xi + 1) + b - yi] – [yi + 1 – m(xi + 1) - b]

AA.

= m(xi + 1) + b – yi – yi – 1 + m(xi + 1) + b

AB.

= 2m(xi + 1) – 2yi + 2b - 1

AC. 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:
AD.


Đặt Pi = dx(d1 – d2)

⇨ Pi = dx[2m(xi + 1) + 2b – 2yI - 1]
AE.

Thay m =

vào phương trình trên ta được:

AF.
= 2dy + (2b - 1)dx
AG.

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 – d2
⇨ Pi > 0 ⇨ yi

AH.

+ 1 Pi ≤ 0 ⇨ yi
AI.
+ 1

Ta lại có: Pi

+ 1


+ 1

+ 1

= yi

= yi

= 2dyxi

+ 1

– 2dxyi

+ c Pi = 2dyxi – 2dxyi + c

⇨ Pi

+ 1

– Pi = 2dy(xi

+ 1

– xi) – 2dx(yi

+ 1

– yi


với c


AJ.

= 2dy – 2dx(yi

– y i)

với (xi+

Pi

+ 1

= Pi + 2dy – 2dx(yi+1 – yi)

1

+ 1

– x i) = 1


AK. AO.
AL.
AM. AP.
AN.
dx)
AR.


Nếu Pi < 0 ⇨ yi

= yi ⇨ Pi

+ 1

Ngược lại Pi > 0 ⇨ yi
AQ.

+ 1

+ 1

= Pi + 2dy

= yi + 1 ⇨ Pi

+ 1

= Pi + 2(dy –

Ta có: Pi = 2x1dy – 2y1dx + c

AS. = 2x1dy – 2(x1 + b)dx + 2dy + (2b – 1)dx
AT.

= 2dy – dx
AU.
AV.

AW.

AX.
AY.
AZ.
BA.
BB.

Hình 1.2

Giả sử khoảng cách từ điểm thực yi + 1 so với yi là p. Do
.

việc phải xét nên 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


c
h
ú
n

g ta phải đi tìm cơng thức tổng qt cho các trường hợp , đó là Pi
Pi

+ 1

= ?



• Lưu đồ giải thuật
BC.

BD.
BE.

Hình 1.3


• Kết quả thử nghiệm
BF.
BG.

BH.
BI.

Hình 1.4


BJ.
BK.
BL. Hình 1.5


b. Thuật tốn Midpoint
• Thuật tốn
BM. Xét 0 < hệ số góc < 1
BN.


BO.
BP.
BQ.

Hình 1.6

Thuật tốn Midpoint đưa ra cách chọn điểm yi

bằng cách so sánh điểm thực Q(xi

+ 1

+ 1

là yi hay yi

+ 1

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

S và 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 qt của PT đường thẳng:
BR.

Ax + By + C = 0

BS.

Với A = y0 – y1; B = - (x2 – x1); C = x2y1 – x1y2


BT.

Đặt F(x, y) = Ax + By + C

BU.

Ta có nhận xét:

BV.

Vị trí tương đối của điểm Midpoint (x, y) với đường thẳng:

BW. + F(x, y) < 0 nếu (x, y) nằm phía trên đường thẳng
BX.

+ F(x, y) = 0 nếu (x, y) thuộc về đường thẳng


BY.

+ 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
BZ.
)

pi


+ 1

– pi = 2F(xi

+ 1

+ 1, yi

⇨ pi + 1 – pi = 2[A(xi + 1 + 1) + B(yi
2[A(xi + 1 + B(yi + ) + C]
⇨ pi

+ 1

– pi = 2A + 2B(yi

⇨ pi

+ 1

– pi = 2Dy – 2Dx(yi

+ 1

+ 1

+ 1

+ ) – 2F(xi + 1, yi +


+ ) + C] –

– y i)

+ 1

– y i)

CA.

Vậy

CB.

pi

+ 1

= pi + 2Dy nếu pi < 0 do ta chọn yi

CC.

pi

+ 1

= pi + 2Dy – 2Dx nếu pi ≥ 0 do ta chọn yi

CD.


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

+ 1

= yi
+ 1

= yi + 1

CE. (x1, y1) là điểm thuộc đường thẳng, tức là có Ax1 + By1 + C = 0
CF.

p1 = 2F(x1 + 1, y1 + ) = 2[A(x1 + 1) + B(y1 + ) + C]

⇨ p1 = 2(Ax1 + By1 + C) + 2A + B
⇨ p1 = 2A + B
⇨ p1 = 2Dy – Dx
CG. 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
CH.

Giống của thuật toán Bresenham


CI.
CJ.
CK.

Hình 1.7



• Kết quả thử nghiệm
CL.

CM.
CN. Hình 1.8
CO.

CP. Hình 1.9


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

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

CS.
CT.
CX. Hìn
CU.
h 1.10
CV.
2
2
2
CW. CY. Từ phương trình: x + y = R ta tính được giá trị y thực ứng với xi + 1

CZ.
là:
DA. y2 = R2 - (xi + 1)2
DB. Đặt: d1 = yi2 - y2 =
i y

2

- R2 + (xi + 1)2

DC. d2 = y2 - (yi - 1)2 = R2 - (xi + 1)2 - (yi - 1)2
DD. Suy ra:
DE.pi = d1 - d2 = 2(xi + 1)2 + yi2 + (yi - 1)2 - 2R2 (2)
DF. ⇒ pi

+ 1

= 2(xi + 1 + 1)2 + y2i+1 + (yi

DG.
ta có: pi + 1 - pi = 4xi + 6 + 2(y2
DH. - 2(yi
DI.
2(y2

+ 1

+ 1

- 1)2 - 2R2 (3)

i + 1

Từ (2)
và (3)
i
2
- y
)

- y i)
i + 1

⇒ pii + 1 = pi + 4xi + 6 +
- y 2 ) - 2(yi + 1 - yi)


DJ. (4)


DK.

Nếu pi < 0: chọn yi

DL.

Nếu pi ≥ 0: chọn yi

= yi (4) ⇒ pi + 1 = pi + 4xi + 6

+ 1

+

1

= yi – 1 (4) ⇒ pi

+

1

= pi +

4(xi - yi) + 10. Ta chọn điểm đầu tiên cần vẽ (0, R), theo (2) ta có: p1
= 3 - 2R
DM. 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à
DN. (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
lại: pi

+

1

+

1

= pi + 4xi + 6. Ngược


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

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

+ 1

, yi

+ 1

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

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

+ 1

+

1

, yi

< 0: chọn
+ 1

-1)


• Lưu đồ giải thuật

DO.

DP.
DQ. Hình 1.11


• Kết quả thử nghiệm

DR.


DS. Hình 1.12


DT.
DU.
DV. Hình 1.13


×