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

ĐỀ CƯƠNG ôn tập môn đồ họa máy TÍNH

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.21 MB, 28 trang )

Nhóm biên soạn: Nhóm #05
#8521006
Người đại diện: Cao Văn Tú


Mã Ticket tài liệu:
Skype: caotu_95 – Yahoo: bigme_caotu – Email:

ĐỀ CƯƠNG ÔN TẬP MÔN ĐỒ HỌA MÁY TÍNH
I. CẤU TRÚC ĐỀ THI.
Đề thi giữa kỳ gồm 02 câu. Trong đó:
+ 01 câu lý thuyết (Ôn theo mục II) – gồm 10 câu hỏi.
+ 01 câu bài tập (Ôn theo mục III)
 Thuật toán DDA.
 Thuật toán Bresanham.
 Thuật toán Midpoint.
II. PHẦN LÝ THUYẾT.
Câu 1: Hệ toạ độ thế giới thực? Hệ tọa độ thiết bị? Hệ tọa độ chuẩn?
Hướng dẫn
 Hệ toạ độ thế giới thực (WCS: World Coordinate System)
+) Hệ tọa độ thế giới thực (hay hệ tọa độ thực) là hệ tọa độ được dùng mô tả các đối
tượng thế giới thực.
+) Một trong các hệ tọa độ thực thường được dùng nhất đó là hệ tọa độ Descartes.
+) Với hệ tọa độ này, bất kì một điểm nào trong mặt phẳng cũng được mô tả bằng
một cặp tọa độ (x, y) trong đó x, y ∈ R. Gốc tọa độ là điểm O có tọa độ (0, 0). Ox, Oy
lần lượt được gọi là trục hoành, trục tung; x là khoảng cách từ điểm đến trục hoành hay
còn được gọi là hoành độ, y là khoảng cách từ điểm đến trục tung hay còn được gọi là
tung độ.
+) Các tọa độ thế giới thực cho phép người dùng sử dụng bất kì một thứ nguyên
(dimension) quy ước như foot, cm, mm, km, inch, ... nào và có thể lớn nhỏ tùy ý.
 Hệ toạ độ thiết bị (DCS: Device Coordinate System)


+) Hệ tọa độ thiết bị là hệ tọa độ được dùng bởi một thiết bị xuất cụ thể nào đó như máy
in, màn hình, ... Đặc điểm chung của các hệ tọa độ thiết bị đó là :
o

Các điểm trong hệ tọa độ thiết bị cũng được mô tả bởi một cặp tọa độ (x, y), tuy
nhiên điểm khác với hệ tọa độ thực là x, y ∈ N. Điều này cho thấy các điểm

Website: www.bigme.vn |


1

BIGME.VN – Siêu thị trực tuyến hàng
đầu


Nhóm biên soạn: Nhóm #05
Mã Ticket tài liệu:
#8521006
Người đại diện: Cao Văn Tú
Skype: caotu_95 – Yahoo: bigme_caotu – Email:

trong hệ tọa độ thực được định nghĩa liên tục, còn các điểm trong các hệ tọa độ
thiết bị là rời rạc do tính chất của tập các số tự nhiên.
o Các tọa độ x, y của hệ tọa độ thiết bị không thể lớn tùy ý mà đều bị giới hạn
trong một khoảng nào đó. Một số thiết bị chỉ cho x chạy trong đoạn[0,639], y
chạy trong đoạn [0,479]. Khoảng giới hạn các tọa độ x, y là khác nhau đối với
từng loại thiết bị khác nhau.
 Hệ tọa độ thiết bị chuẩn (Normalized device coordinates)
+) Do cách định nghĩa các hệ tọa độ thiết bị khác nhau nên một hình ảnh hiển thị

được trên thiết bị này là chính xác thì chưa chắc hiển thị chính xác trên thiết bị khác.
+) Người ta xây dựng một hệ tọa độ thiết bị chuẩn đại diện chung cho tất cả các thiết
bị để có thể mô tả các hình ảnh mà không phụ thuộc vào bất kỳ thiết bị nào.
+) Trong hệ tọa độ chuẩn, các tọa độ x, y sẽ được gán các giá trị trong đoạn từ [0,1].
+) Như vậy, vùng không gian của hệ tọa độ chuẩn chính là hình vuông đơn vị có góc
trái dưới (0, 0) và góc phải trên là (1, 1).
Quá trình mô tả các đối tượng thực như sau:

Hình 1: Hệ tọa độ chuẩn
Câu 2: Nguyên lý chung vẽ đoạn thẳng.
Hướng dẫn
Nguyên lý chung là cho một thành phần tọa độ x hay nguyên biến đổi theo từng
đơn vị và tính tọa độ nguyên còn lại sao cho gần với tọa độ thực nhất.
Việc quyết định chọn x hay y biến đổi phụ thuộc vào dáng điệu của đoạn thẳng để ta
có thể thu được đoạn thẳng xấp xỉ tốt nhất của đoạn thẳng thực tế.
Website: www.bigme.vn |


2

BIGME.VN – Siêu thị trực tuyến hàng
đầu


Nhóm biên soạn: Nhóm #05
Mã Ticket tài liệu:
#8521006
Người đại diện: Cao Văn Tú
Skype: caotu_95 – Yahoo: bigme_caotu – Email:


Nếu |dx| >|dy|, x biến đổi theo từng đơn vị, tính thành phần y tương ứng
Nếu |dx| < |dy|, y biến đổi theo từng đơn vị, tính thành phần x tuơng ứng
Do các đường thẳng được mô tả trong hệ tọa độ thực nhưng khi hiển thị trong máy tính, hệ
tọa độ chính là lưới nguyên nên bản chất của quá trình vẽ các đường thẳng chính là sự
nguyên hóa các tọa độ các điểm thuộc đường thẳng và vẽ các pixel tương ứng.

Câu 3: Thuật toán DDA vẽ đoạn thẳng
Hướng dẫn
Với thuật toán DDA, việc quyết định chọn
của đoạn thẳng
thực. Tiếp đó,

y = mx + b .

y i +1

y i +1



yi

hay

yi + 1 ,

Nghĩa là, ta sẽ tính tọa độ của điểm ( xi

dựa vào phương trình


+ 1, y)

thuộc về đoạn thẳng

sẽ là giá trị sau khi làm tròn giá trị tung độ y.

y = m( x i + 1) + b

Như vậy :

yi+1 = Round( y)

Nếu tính trực tiếp giá trị thực y ở mỗi bước từ phương trình

y = mx + b thì

phải cần một

phép toán nhân và một phép toán cộng số thực. Để cải thiện tốc độ, người ta tính giá trị thực
của y ở mỗi bước theo cách sau để khử phép tính nhân trên số thực :
Nhận xét rằng :

y sau = mx i +1 + b = m( x i + 1) + b
y tröôùc = mx i + b
⇒ y sau = y tröôùc + m

Nhận xét:
+) Việc sử dụng công thức

y sau = y tröôùc + m


để tính giá trị y tại mỗi bước đã giúp cho

thuật toán DDA nhanh hơn hẳn so với cách tính y từ phương trình

y = mx + b

do khử được

phép nhân trên số thực. Tuy nhiên, việc cộng dồn giá trị thực m vào y có thể sẽ tích lũy sai
số làm cho hàm làm tròn có kết quả sai dẫn tới việc xác định vị trí của điểm vẽ ra bị chệch
hướng so với đường thẳng thực. Điều này chỉ xảy ra khi vẽ đoạn thẳng khá dài.
Website: www.bigme.vn |


3

BIGME.VN – Siêu thị trực tuyến hàng
đầu


Nhóm biên soạn: Nhóm #05
Mã Ticket tài liệu:
#8521006
Người đại diện: Cao Văn Tú
Skype: caotu_95 – Yahoo: bigme_caotu – Email:

+) Tuy đã khử được phép nhân số thực nhưng thuật toán DDA vẫn còn bị hạn chế về
mặt tốc độ do vẫn còn phép toán cộng số thực và làm tròn. Có thể khắc phục thao tác cộng
số thực m và làm tròn trong thuật toán bằng cách nhận xét


Dy
Dx

m=

với Dy, Dx là các số

nguyên
Câu 4. Thuật toán Breshenham vẽ đoạn thẳng
Hướng dẫn
Thuật toán Bresenham đưa ra cách chọn

y i +1



yi

hay

yi + 1

theo một hướng khác

sao cho có thể tối ưu hóa về mặt tốc độ so với thuật toán DDA. Vấn đề mấu chốt ở đây là
làm thế nào để hạn chế tối đa các phép toán trên số thực trong thuật toán.
Gọi ( xi

+ 1, y)


là điểm thuộc đoạn thẳng. Ta có:

y = m( x i + 1) + b .

d1 = y − yi

d 2 = ( y i + 1) − y

Đặt

Xét tất cả các vị trí tương đối của y so với

yi



hay P phụ thuộc vào việc so sánh d1 và d2 hay dấu của
d1 − d2 < 0 ,



Nếu



Ngược lại, nếu
Xét

ta sẽ chọn điểm S, tức là

d1 − d2 ≥ 0 ,

yi + 1 ,

d1 − d2

việc chọn điểm ( xi+1 , yi+1 ) là S

:

yi +1 = yi .

ta sẽ chọn điểm P, tức là

y i +1 = y i + 1 .

pi = Dx ( d1 − d2 ) = Dx ( 2 y − 2 yi − 1)

⇒ pi = Dx[ 2( m( x i + 1) + b) − 2 yi − 1]

Thay

m=

Dy
Dx

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

pi = 2 Dyx i − 2 Dxy i + c ,


với

pi .

Hay

c = 2 Dy + ( 2b − 1) Dx .

Nhận xét rằng do

Dx > 0

nên dấu của biểu thức

d1 − d2

cũng chính là dấu của

nói một cách khác, nếu tại bước thứ i ta xác định được dấu của

pi

thì xem như ta xác định

được điểm cần chọn ở bước (i+1). Vấn đề còn lại là làm thế nào để tính được

pi tại

mỗi


bước thật nhanh.
Website: www.bigme.vn |


4

BIGME.VN – Siêu thị trực tuyến hàng
đầu


Nhóm biên soạn: Nhóm #05
#8521006
Người đại diện: Cao Văn Tú

Ta có :

Mã Ticket tài liệu:
Skype: caotu_95 – Yahoo: bigme_caotu – Email:

pi+1 − pi = ( 2 Dyx i+1 − 2 Dxy i+1 + c) − ( 2 Dyx i − 2 Dxy i + c)
⇔ pi +1 − pi = 2 Dy( x i +1 − x i ) − 2 Dx ( yi+1 − yi )
⇔ pi +1 − pi = 2 Dy − 2 Dx ( y i+1 − yi ), do x i+1 = x i + 1

Từ đây ta có thể suy ra cách tính
pi < 0

pi+1 = pi + 2 Dy




Nếu

thì



Ngược lại, nếu
Giá trị

pi ≥ 0 ,

p0

thì

do ta chọn

p i +1

pi

từ

như sau :

yi+1 = yi .

pi +1 = pi + 2 Dy − 2 Dx ,


do ta chọn

y i +1 = y i + 1 .

được tính từ điểm vẽ đầu tiên ( x 0 , y0 ) theo công thức :

p0 = 2 Dyx 0 − 2 Dxy 0 + c = 2 Dyx 0 − 2 Dxy 0 + 2 Dy − ( 2b − 1) Dx

Do ( x 0 , y0 ) là điểm nguyên thuộc về đoạn thẳng nên ta có
vào phương trình trên ta suy ra :

y0 = mx 0 + b =

Dy
x0 + b
Dx
.

Thế

p0 = 2 Dy − Dx .

Nhận xét.
+) Thuật toán Bresenham chỉ thao tác trên số nguyên và chỉ tính toán trên phép cộng
và phép nhân 2 (phép dịch bit). Điều này là một cải tiến làm tăng tốc độ đáng kể so với
thuật toán DDA. Ý tưởng chính của thuật toán này là ở chỗ xét dấu Pi để quyết định điểm
kế tiếp, và sử dụng công thức truy hồi Pi +1 - Pi để tính Pi bằng các phép toán đơn giản trên
số nguyên. Tuy nhiên, việc xây dựng trường hợp tổng quát cho thuật toán Bresenham có
phức tạp hơn thuật toán DDA.
+) Thuật toán này cho kết quả tương tự như thuật toán DDA.

Câu 5. Thuật toán trung điểm vẽ đoạn thẳng (Midpoint)
Hướng dẫn
Thuật toán MidPoint đưa ra cách chọn
thực Q ( xi

+ 1, y)

y i +1



yi

hay

yi + 1

bằng cách so sánh điểm

với điểm MidPoint là trung điểm của S và P. Ta có :

Website: www.bigme.vn |


5

BIGME.VN – Siêu thị trực tuyến hàng
đầu



Nhóm biên soạn: Nhóm #05
Mã Ticket tài liệu:
#8521006
Người đại diện: Cao Văn Tú
Skype: caotu_95 – Yahoo: bigme_caotu – Email:

• Nếu điểm Q nằm dưới điểm MidPoint, ta chọn S.
Ngược lại nếu điểm Q nằm trên điểm MidPoint ta chọn P.



Ta có dạng tổng qt của phương trình đường thẳng :
Ax + By + C = 0

với
Đặt

F ( x, y) = Ax + By + C ,

A = y2 − y1 , B = −( x 2 − x1 ) , C = x 2 y1 − x1 y 2

ta có nhận xét :

< 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
> 0, nế u ( x, y ) nằ m phía dướ i đườ 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

1

pi = 2 F ( MidPoint ) = 2 F  x i + 1, y i + 
2

.



Nếu

pi < 0 ,

điểm MidPoint nằm phía trên đoạn thẳng. Lúc này điểm thực Q

nằm dưới điểm MidPoint nên ta chọn S, tức là yi+1


Ngược lại, nếu

pi ≥ 0 ,

= yi .

điểm MidPoint nằm phía dưới đoạn thẳng. Lúc này

điểm thực Q nằm trên điểm MidPoint nên ta chọn P, tức là yi+1

= yi + 1 .


Mặt khác :
1
1


pi+1 − pi = 2 F  x i+1 + 1, yi+1 +  − 2 F  x i + 1, yi + 
2
2







1
1


⇔ pi+1 − pi = 2 A( xi+1 + 1) + B yi +1 +  + C  − 2 A( xi + 1) + B yi +  + C 
2
2






⇔ pi +1 − pi = 2 A + 2 B( yi +1 − yi ) = 2 Dy − 2 Dx ( yi +1 − y i )


Vậy :


pi+1 = pi + 2 Dy ,



pi +1 = pi + 2 Dy − 2 Dx ,

Website: www.bigme.vn |


nếu

pi < 0

nếu

do ta chọn
pi ≥ 0

yi+1 = yi .

do ta chọn

6

y i +1 = y i + 1 .

BIGME.VN – Siêu thị trực tuyến hàng

đầu


Nhóm biên soạn: Nhóm #05
Mã Ticket tài liệu:
#8521006
Người đại diện: Cao Văn Tú
Skype: caotu_95 – Yahoo: bigme_caotu – Email:

Ta tính giá trị p0 ứng với điểm ban đầu ( x 0 , y0 ) , với nhận xét rằng ( x 0 , y0 ) là điểm
thuộc về đoạn thẳng, tức là có : Ax 0 + By 0 + C = 0


1
1


p0 = 2 F  x 0 + 1, y0 +  = 2 A( x 0 + 1) + B y0 +  + C 
2
2




⇒ p0 = 2( Ax 0 + By 0 + C ) + 2 A + B = 2 A + B = 2 Dy − Dx

Nhận xét rằng thuật toán MidPoint cho kết quả tương tự như thuật toán Bresenham.
Câu 6. Trình bày nguyên lý chung vẽ đường tròn?
Hướng dẫn
+) Trong hệ tọa độ Descartes, phương trình đường tròn bán kính R có dạng:

o Với tâm O(0,0) : x2 + y2 = R2
o Với tâm C(xc, yc): (x-xc)2+ (y-yc)2=R2
+) Trong hệ tọa độ cực :
o x = xc+ R.cosθ, y = yc + Y.sinθ ,với θ ∈ [0, 2π].
+) Do tính đối xứng của đường tròn C nên ta chỉ cần vẽ 1/8 cung tròn, sau đó lấy đối
xứng qua 2 trục tọa độ và 2 đường phân giác thì ta vẽ được cả đường tròn.

+) Với đường tròn tâm (xc, yc) ta có thể vẽ đường tròn tâm (0,0) sau đó tịnh tiến theo
vecto (xc, yc).
Cho x = 0, 1, 2, ..., int(R x sqrt(2)/2) với R>1.
Website: www.bigme.vn |


7

BIGME.VN – Siêu thị trực tuyến hàng
đầu


Nhóm biên soạn: Nhóm #05
Mã Ticket tài liệu:
#8521006
Người đại diện: Cao Văn Tú
Skype: caotu_95 – Yahoo: bigme_caotu – Email:

- Tại mỗi giá trị x, tính int(y = sqrt(R2-x2)).
- Vẽ điểm (x,y) cùng 7 điểm đối xứng của nó.
+) Một cách tiếp cận khác là vẽ các điểm (R cos (θ), R sin (θ)), với θ chạy từ 00 đến
900.
Cách này sẽ khắc phục hạn chế đường không liền nét của thuật toán trên, tuy nhiên

điểm hạn chế chính của thuật toán này đó là chọn bước nhảy cho θ như thế nào cho phù hợp
khi bán kính thay đổi.
Câu 7. Trình bày thuật toán MidPoint vẽ đường tròn?
Hướng dẫn
+) Do tính đối xứng của đường tròn (C) nên ta chỉ cần vẽ cung (C1/8) là cung 1/8
đường tròn, sau đó lấy đối xứng.
(-x,y)

(x,y)
(y,x)

(-y,x)
R

(-y,-x)

2

(-x,-y)

(y,-x)

(x,-y)

xám trong hình vẽ) :

+) Cung (C1/8) được mô tả như sau (cung của phần tô


2

0 ≤ x ≤ R

2

2

R
≤ y≤ R

 2

Các vị trí đối xứng trên đường tròn (C) tương ứng với (x,y)
+) Như vậy nếu có (x, y) ∈ (C1/8) thì các điểm : (y, x), (y,-x), (x,-y), (-x,-y), (-y,-x), (y,x), (-x,y) sẽ thuộc (C).

Website: www.bigme.vn |


8

BIGME.VN – Siêu thị trực tuyến hàng
đầu


Nhóm biên soạn: Nhóm #05
Mã Ticket tài liệu:
#8521006
Người đại diện: Cao Văn Tú
Skype: caotu_95 – Yahoo: bigme_caotu – Email:

+) Chọn điểm bắt đầu để vẽ là điểm (0,R). Dựa vào hình vẽ, nếu ( x i , yi ) là điểm

ngun đã tìm được ở bước thứ i, thì điểm ( x i+1 , yi+1 ) ở bước thứ (i+1) là sự lựa chọn giữa S
và P.
 x i +1 = x i + 1

y ∈ { yi , yi − 1}
Như vậy :  i+1

+) Tương tự như thuật tốn MidPoint vẽ đoạn thẳng, việc quyết định chọn một trong
hai điểm S và P sẽ được thực hiện thơng qua việc xét dấu của một hàm nào đó tại điểm
MidPoint là điểm nằm giữa chúng.
+) Đặt

F ( x, y) = x 2 + y 2 − R 2

, ta có :

< 0, nế u ( x, y ) nằ m trong đườ ng trò n

F ( x, y) = 0, nế u ( x, y ) nằ m trê n đườ ng trò n
> 0, nế u ( x, y ) nằ m ngoà i đườ ng trò n.


Xét

1

pi = F ( MidPoint ) = F  x i + 1, yi − 
2

.




Nếu

pi < 0 ,

điểm MidPoint nằm trong đường tròn. Lúc này điểm thực Q gần S

hơn nên ta chọn S, tức là yi+1


Ta có :

Ngược lại, nếu

pi ≥ 0 ,

= yi .

điểm MidPoint nằm ngồi đường tròn. Lúc này điểm

thực Q gần P hơn nên ta chọn P, tức là yi+1

= yi − 1 .

Mặt khác :
1
1



pi+1 − pi = F  x i+1 + 1, y i+1 −  − F  x i + 1, yi − 
2
2




⇔ pi +1

2
2

 

1
1


2
2
2
− pi = ( xi+1 + 1) +  yi+1 −  − R  − ( xi + 1) +  yi −  − R2 
2
2



 



⇔ pi+1

2
2

 

1
1


2
2
2
− pi = ( xi + 2) +  yi +1 −  − R  − ( xi + 1) +  yi −  − R2 
2
2



 


(

)

⇔ pi+1 − pi = 2 xi + 3 + yi2+1 − yi2 − ( yi +1 − yi )


Website: www.bigme.vn |


9

BIGME.VN – Siêu thị trực tuyến hàng
đầu


Nhóm biên soạn: Nhóm #05
#8521006
Người đại diện: Cao Văn Tú

Vậy :

Mã Ticket tài liệu:
Skype: caotu_95 – Yahoo: bigme_caotu – Email:



p i +1 = p i + 2 x i + 3 ,



p i +1 = p i + 2 x i − 2 y i + 5 ,

Ta tính giá trị

p0


nếu

pi < 0

nếu

do ta chọn

pi ≥ 0

yi+1 = yi .

do ta chọn

y i +1 = y i − 1 .

ứng với điểm ban đầu ( x 0 , y0 ) = ( 0, R) .
1
1 5


p0 = F  x 0 + 1, y0 −  = F  1, R −  = − R
2
2 4




Câu 8. Trình bày nguyên lý, thuật toán trung điểm vẽ đường elip?
Hướng dẫn

Nguyên lý chung:
+) Cho elip tâm (h, k), độ dài trục chính là a, độ dài trục phụ là b
+) Phương trình đường elip được xác định như sau : (x-h)2/a2+(y-k)2/b2=1.
+) Phưuơng trình elip với tâm tại gốc tọa độ: x2/b2+y2/b2=1
+) Elip được chia thành 4 phần đối xứng qua 2 trục tọa độ, do vậy ta chỉ cần vẽ cung ¼
elip sau đó thực hiện lấy đối xứng để thu được các phần còn lại.
+) Để vẽ elip tâm (h, k) ta có thể thực hiện vẽ elip tâm tại gốc tọa độ sau đó tịnh tiến
theo véc tơ (h, k).
+) Tại mỗi bước ta cho x tăng từ 0 đến a sau đó tính giá trị y tương ứng qua biểu thức
trên, sau đó lấy giá trị nguyên gần với giá trị y thực nhất.
Thuật toán trung điểm (MidPoint) vẽ elip:
+) Xét elip tâm tại gốc tọa độ. Phương trình đường elip: F(x,y)=b2x2+a2y2−a2b2=0
+) Xét vẽ cung ¼ elip, sau đó lấy đối xứng để thu được các phần còn lại: 0 ≤ x ≤ a;
0≤ y≤b.

Chia cung ¼ elip này thành 2 vùng với điểm chia P là tiếp điểm của tiếp tuyến có hệ số
góc là -1.
+) Véc tơ gradient vuông góc với tiếp tuyến tại tiếp điểm được xác định như sau:
GradF(x,y) = (∂F/∂x)i+(∂F/∂y)j=2b2x.i+2a2y.j
Website: www.bigme.vn |


10

BIGME.VN – Siêu thị trực tuyến hàng
đầu


Nhóm biên soạn: Nhóm #05
Mã Ticket tài liệu:

#8521006
Người đại diện: Cao Văn Tú
Skype: caotu_95 – Yahoo: bigme_caotu – Email:

Ta có tiếp tuyến với cung tròn (độ dốc) = -1
+) Vector gradient có độ dốc là 1, do đó tại P các thành phần i và j của vecto gradient
có cùng độ lớn.
+) Trong mỗi vùng thành phần nào của vecto gradient lớn hơn thì xác định trung điểm
theo hướng đó. Thành phần nhỏ hơn sẽ biến thiên theo từng đơn vị.
+) Trong vùng 1 thành phần j lớn hơn thành phần i của gradient: a2(yp-0.5)>b2(xp+1).
Trong vùng 2 thì ngược lại.
+ Xét trên phần 1:Bắt đầu từ (0,b),
o Tại mỗi bước x tăng lên một đơn vị, y biến đổi theo x
o Bước thứ i (xi,yi), Ở bước i+1 chọn tiếp A(xi+1, yi) hoặc B(xi+1,yi-1). Chọn
điểm gần với đường elip nhất dựa trên việc xét dấu của hàm F tại trung điểm M
của AB.
o Tham số quyết định:
pi =F(M)= F(xi+1,yi-1/2) = b2(xi+1)2 + a2(yi-1/2)2 -a2b2
pi+1 = F(xi+1+1,yi+1-1/2) = b2(xi+1+1)2 + a2(yi+1-1/2)2–a2b2
- Nếu pi <0 chọn A. Suy ra: xi+1=xi+1; yi+1=yi
pi+1 = b2(xi+1+1)2 + a2(yi+1-1/2)2–a2b2 = b2(xi+2)2 + a2(yi-1/2)2–a2b2
= pi + b2(2xi +3)
- Nếu pi >=0 chọn B. Suy ra: xi+1=xi+1; yi+1=yi -1
pi+1 = b2(xi+2)2 + a2(yi-1.5)2–a2b2 = pi + b2(2xi +3) + a2(-2yi +2)
- Tính P1 khởi tạo tại (0,b)
p1 = F(1,b-1/2) = b2 + a2(b-1/2)2–a2b2 ;p1 = b2–a2b +a2/4
+Xét trên phần 2:
+) Ta lấy toạ độ của Pixel sau cùng trong phần 1 của đƣờng cong để tính giá trị ban
đầu cho phần 2.
+) Tại mỗi bước y giảm từng đơn vị, x biến đổi theo y.

+) Tại bước j ta có điểm (xj,yj).
+) Pixel ở bước kế tiếp j+1 có thể là: C(xj,yj-1) hoặc D(xj+1, yj-1).
+) Chúng ta sẽ lựa chọn điểm gần với đường elip nhất. Để quyết định chọn điểm nào
chúng ta có thể dựa vào dấu của hàm F tại trung điểm M của đoạn CD .
Tham số quyết định: (Tương tự như trên)
Website: www.bigme.vn |


11

BIGME.VN – Siêu thị trực tuyến hàng
đầu


Nhóm biên soạn: Nhóm #05
Mã Ticket tài liệu:
#8521006
Người đại diện: Cao Văn Tú
Skype: caotu_95 – Yahoo: bigme_caotu – Email:

Câu 9. Trình bày các mô hình màu RGB, CMY, CMYK?
Hướng dẫn
Mô hình màu RGB (Red, Green, Blue - đỏ, lục, lam):
+) Mô hình màu thể hiện trong màn hình CRT xác định bằng những đặc tính của hiện
tượng phát quang các chất phốt pho trong màn hình CRT. Mô hình không gian màu RGB
được sắp xếp theo khối lập phương đơn vị. Đường chéo chính của khối lập phương với sự
cân bằng về số lượng từng màu gốc tương ứng với các mức độ xám với đen là (0,0,0) và
trắng (1,1,1).
+) Đây là mô hình màu cộng tính.
+) C = rR + gG + bB

Trong đó C = màu hoặc ánh sáng kết quả. (r,g,b) = toạ độ màu trong miền [0 1],
(R,G,B) = các màu cơ bản đỏ, lục và lam.
+) Nếu hai màu tạo ra cùng một giá trị kích thích thì chúng ta không thể phân biệt
được hai màu. Không gian màu RGB dựa theo chuẩn ITU-R BT.709, với gama = 2.2 và
điểm trắng của mô hình là 6500 degrees K.
Một số thuận lợi khi dùng không gian RGB:
+ Không gian RGB là chuẩn công nghiệp cho các thao tác đồ họa máy tính
+ Có thể chuyển đổi qua lại giữa không gian RGB với các không gian màu khác như
CIE, CMY, HSL, HSV, ...
+ Các thao tác tính toán trên không gian RGB thường đơn giản hơn.
Một số bất lợi:
+ Các giá trị RGB của một màu là khác nhau đối với các màn hình khác nhau : Nghĩa
là các giá trị RGB của màu tim trên màn hình màu này sẽ không sinh ra đúng màu đó trên
một màn hình khác.
+ Sự mô tả các màu trong thế giới thực đối với không gian RGB còn nhiều hạn chế bởi
vì không gian RGB không hoàn toàn phù hợp với sự cảm nhận màu sắc của con người.
Mô hình màu CMY (Cyan, Magenta, Yellow - xanh tím, Đỏ tươi, vàng)
Website: www.bigme.vn |


12

BIGME.VN – Siêu thị trực tuyến hàng
đầu


Nhóm biên soạn: Nhóm #05
Mã Ticket tài liệu:
#8521006
Người đại diện: Cao Văn Tú

Skype: caotu_95 – Yahoo: bigme_caotu – Email:

+) Mô hình này có ba màu cơ sở là Cyan, Magenta, Yellow. đây là 3 màu bù của 3
màu Red, Green, Blue.
+) Đây là mô hình màu bù (Subtractive color models) hiển thị ánh sáng và màu sắc
phản xạ từ mực in. Bổ xung thêm mực đồng nghĩa với ánh sáng phản xạ càng ít.
+) Khi bề mặt không phủ mực thì ánh sáng phản xạ là ánh sáng trắng - white.
Khi 3 màu có cùng giá trị cho ra màu xám. Khi các giá trị đạt max cho màu đen.
Color = cC + mM + yY
+) Ta có Red +Cyan = Black ; Green +Magenta = Black ; Blue + Yellow = Black
+) Đây là mô hình màu trừ tính.
Mô hình màu CMY- K
+) Mô hình mở rộng của CMY ứng dụng trong máy in màu. Giá trị đen bổ xung vào
thay thế cho hàm lượng màu bằng nhau của 3 màu cơ bản.
+) Công thức chuyển đổi:
K = min(C, M, Y) ; C = C - K ; M = M - K; Y = Y - K ;
C-Cyan, M-Magenta, Y-Yellow; K-blacK
Câu 10. Trình bày các mô hình màu HSV, HSL?
Hướng dẫn
Mô hình màu HSV.
Các yếu tố xác định màu sắc trong mô hình này gồm:
-Hue - sắc màu: dùng để phân biệt sự khác nhau giữa các màu như xanh, đỏ, vàng...
- Saturation - độ bão hoà: chỉ ra mức độ thuần của một màu hay khoảng cách của màu
tới điểm có cường độ cân bằng(màu xám)
- Lightness - độ sáng: hiện thân về mô tả cường độ sáng từ ánh sáng phản xạ nhận
được từ đối tượng.
-Vualue(Brightness) - độ phát sáng: cường độ ánh sáng mà tự đối tượng phát ra chứ
không phải do phản xạ từ các nguồn sáng khác.
Website: www.bigme.vn |



13

BIGME.VN – Siêu thị trực tuyến hàng
đầu


Nhóm biên soạn: Nhóm #05
Mã Ticket tài liệu:
#8521006
Người đại diện: Cao Văn Tú
Skype: caotu_95 – Yahoo: bigme_caotu – Email:

+) HSV là mô hình định hướng người sử dụng dựa trên cơ sở về trực giác về tông
màu, sắc độ và sắc thái mỹ thuật.Mô hình màu HSV được Alvey Ray Smith đưa ra 1978.
+) Cách xác định giá trị của các yếu tố trong mô hình CMY:
o Hue: có giá trị 00-3600 được đo bởi góc quay xung quanh trục đứng với màu đỏ
ở 00, màu lục là 1200, màu lam là 2400. Các màu bù cho hình chóp ở 1800 đối
diện với màu khác.
o Value-Brightness:có giá trị thuộc[0,1] ứng đường cao V với đỉnh là các điểm
gốc toạ độ (0,0). Điểm ở đỉnh là màu đen và giá trị V=0, tại các điểm này giá trị
của H và S không liên quan đến nhau. Khi điểm có S=0 và V=1 là điểm màu
trắng, những giá trị trung gian của V đối với S=0 (trên đường thẳng qua tâm) là
các màu xám. Khi S=0 giá trị của H phụ thuộc được gọi bởi các qui ước không
xác định. Ngược lại khi S khác 0 giá trị H sẽ là phụ thuộc.
o Saturation: có giá trị thuộc [0,1], giá trị của S là khoảng cách từ điểm trong hình
chóp đến đường trục tâm (trục V) .
Một số thuận lợi của không gian HSV:
+Không gian HSV dễ dàng đáp ứng các màu sắc của các chương trình đồ họa do được
xây dựng dựa trên sự bắt chước luật trộn màu của người họa sĩ.

+ Do không cần sử dụng các phép biến đổi lượng giác khi muốn chuyển sang không
gian RGB nên không gian HSV có nhiều thuận lợi về mặt tính toán .
Một số bất lợi:
+ Cần có các phép hiệu chỉnh gamma.
Mô hình màu HSL (Hue, Lightness, Saturation Model) – không gian màu trực quan
+) Mô hình màu HLS là không gian màu trực quan. Mô hình này thường được dùng
trong kỹ thuật đồ hoạ.
+) Ưu điểm là rất trực giác

Website: www.bigme.vn |


14

BIGME.VN – Siêu thị trực tuyến hàng
đầu


Nhóm biên soạn: Nhóm #05
Mã Ticket tài liệu:
#8521006
Người đại diện: Cao Văn Tú
Skype: caotu_95 – Yahoo: bigme_caotu – Email:

+) Nhược điểm là khi chuyển đổi với không gian màu RGB sẽ có sai số (cube stood on
end) thay đổi trên các loại màn hình khác nhau, rõ ràng không cảm nhận đều các màu giống
nhau
+) Độ sáng (Lightness)=0 cho màu đen (tại điểm mút thấp nhất của hình chóp sáu cạnh
đôi) và bằng 1 cho màu trắng (tại đầu mút cao nhất).
Một số thuận lợi của không gian HSL:

+ Không gian HSL gần với sự cảm nhận các thuộc tính màu sắc của con người hơn
không gian RGB (tuy cách tiếp cận đã đơn giản hóa đi nhiều). Các màu được xác định dễ
dàng hơn chẳng hạn do H quay quanh trục đứng nên các màu bù được xác định một cách dễ
dàng, đối với các giá trị lightness cũng vậy.
+ Việc kiểm soát các màu cơ sở HSL dễ hơn cho những người mới làm quen với các
chương trình đồ họa.
Một số bất lợi:
+ Việc thêm vào một vector không thể thực hiện đơn giản như không gian RGB (chỉ
thêm vào các thành phần màu). Các thao tác lượng giác khi biến đổi sẽ ảnh hưởng đáng kể
đến tốc độ của chương trình.
+ Cần phải qua hiệu chỉnh gamma trước khi hiển thị (giống như các không gian khác).

Website: www.bigme.vn |


15

BIGME.VN – Siêu thị trực tuyến hàng
đầu


Nhóm biên soạn: Nhóm #05
#8521006
Người đại diện: Cao Văn Tú


Mã Ticket tài liệu:
Skype: caotu_95 – Yahoo: bigme_caotu – Email:

III. PHẦN BÀI TẬP

Dạng 1: Thuật toán DDA (Digital Differential Analyzer)
 Cơ sở lý thuyết
+ Thuật toán DDA là một thuật toán tính toán các điểm vẽ dọc theo đường thẳng dựa vào
hệ số góc của phương trình đường thẳng y = mx + b.
+ Lưu đồ thuật toán DDA.
Bắt đầu

Dy
; x = x1 ; y = y1 ;
Dx
Putpixel ( x, Round ( y ), c );

m=

x < x2

No

Yes

x = x + 1; y = y + m;
Putpixel ( x, Round ( y ), c );

Kết thúc
 Lưu ý một số công thức của đường thẳng.

Website: www.bigme.vn |


16


BIGME.VN – Siêu thị trực tuyến hàng
đầu


Nhóm biên soạn: Nhóm #05
#8521006
Người đại diện: Cao Văn Tú


Mã Ticket tài liệu:
Skype: caotu_95 – Yahoo: bigme_caotu – Email:

y = mx + b
y b
x= −
m m
y -y
∆y
m= 2 1 =
x 2 - x1 ∆x

b = y1 - mx1

 Ví dụ, bài tập mẫu.
Ví dụ 1: Áp dụng thuật toán DDA vẽ đoạn thẳng đi qua 2 điểm A(3, 4); B(9, 7).
Hướng dẫn (Trường hợp 0 < m < 1)
 Xác định:
+) Dx = x2 − x1 = 4; Dy = y2 − y1 = 3
+)


m=

Dy 3
= = 0, 75
Dx 4
(Thuộc vào trường hợp 0 < m < 1)

 x0 = 3

y =4
 Xác định điểm đầu tiên:  0



Vẽ điểm (3, 4).

 Xác định những điểm tiếp theo:
x = 3
y1 = y0 + m = 4 + 0, 75 = 4, 75 ⇒  1
 y1 = 4
+)



Vẽ điểm (3, 5).

 x1 = 4
y2 = y1 + m = 4, 75 + 0, 75 = 5,5 ⇒ 
 y1 = 5

+)



 x1 = 5
y3 = y2 + m = 5,5 + 0, 75 = 6, 25 ⇒ 
 y1 = 6
+)



Vẽ điểm (4, 5).

Vẽ điểm (5, 6).

x = 6
y4 = y3 + m = 6, 25 + 0, 75 = 7 ⇒  1
 y1 = 7
+)



 x1 = 7
y5 = y4 + m = 7 + 0, 75 = 7, 75 ⇒ 
 y1 = 8
+)



Website: www.bigme.vn |



17

Vẽ điểm (6, 7).

Vẽ điểm (7, 8).
BIGME.VN – Siêu thị trực tuyến hàng
đầu


Nhóm biên soạn: Nhóm #05
#8521006
Người đại diện: Cao Văn Tú


Mã Ticket tài liệu:
Skype: caotu_95 – Yahoo: bigme_caotu – Email:

x = 8
y6 = y5 + m = 7, 75 + 0, 75 = 8,5 ⇒  1
 y1 = 8
+)



x = 9
y7 = y7 + m = 8,5 + 0, 75 = 9, 25 ⇒  1
 y1 = 9
+)




 Hình vẽ minh họa.

Vẽ điểm (8, 8).

Vẽ điểm (9, 9).

9
8
7
6

5
Ví dụ 2: Áp dụng thuật toán DDA vẽ đoạn thẳng đi qua 2 điểm A(5, 10); B(10, 15).
4
Hướng dẫn (Trường hợp m > 1)
3 0 1 2 3 4 5 6 7 8 9 10
 Xác định:
2
Dx
=
x

x
=
5;
Dy
= y2 − y1 = 5

2
1
+)
1
+)

m=

Dy 5
= =1
Dx 5
(Thuộc vào trường hợp m > 1)

 x0 = 5

y = 10
 Xác định điểm đầu tiên:  0



Vẽ điểm (5, 10).

 Xác định những điểm tiếp theo:

+)

+)

x1 = x0 +


 x1 = 6
1
= 5 +1 = 6 ⇒ 
m
 y1 = 11



x2 = x1 +

 x1 = 7
1
= 6 +1 = 7 ⇒ 
m
 y1 = 12



x3 = x2 +

x = 8
1
= 7 +1 = 8 ⇒  1
m
 y1 = 13



 x1 = 9
1

= 8 +1 = 9 ⇒ 
m
 y1 = 14



+)

+)

x4 = x3 +

Website: www.bigme.vn |


Vẽ điểm (6, 11).

Vẽ điểm (7, 12).

Vẽ điểm (8, 13).

Vẽ điểm (9, 14).

18

BIGME.VN – Siêu thị trực tuyến hàng
đầu


Nhóm biên soạn: Nhóm #05

#8521006
Người đại diện: Cao Văn Tú

+)

x5 = x4 +

Mã Ticket tài liệu:
Skype: caotu_95 – Yahoo: bigme_caotu – Email:

 x = 10
1
= 9 + 1 = 10 ⇒  1
m
 y1 = 15



Vẽ điểm (10, 15).

Điểm (10, 15) có x = x2 nên thuật toán dừng.
 Hình vẽ minh họa. (Bạn đọc tự vẽ)
Ghi nhớ:
+) Đối với trường hợp (0 < m < 1):
o Luôn tăng x lên 1 đơn vị ( x = x + 1), ySau = yTrước + m
+) Đối với trường hợp (m > 1):
o Luôn tăng y lên 1 đơn vị ( y = y + 1), xSau = xTrước + 1/m

Dạng 2:Bắt
Thuật

đầu toán Bresenham
 Cơ sở lý thuyết
+ Gọi (xi+1,y) là điểm thuộc đoạn thẳng thực.
Dx+=b.x2 −(0x1<; Dy
= y2 − y1 ;
Ta có: y = m( xi+1)
m <1)
+ Xét các hiệu khoảng
tung
tung
P cách
= 2 Dycủa
− Dx
; c1độ
= 2thực
Dy; cy2 so
= 2với
( Dycác− Dx
) ; độ nguyên yi và yi+1 để
chọn một điểm là S(xi +1, yi) hay P( xi + 1,yi + 1) gần với điểm thực nhất.
x = x1 ; y = y1 ; Putpixel ( x, y, color);
+ Đặt d1 = y - yi
d2 = (yi + 1) - y
- Nếu d1- d2 < 0: Chọn điểm S, tức là yi + 1 = yi.
- Nếu d1- d2 ≥ 0: Chọn điểm P, tức là yi +1 = yi + 1.
No
+ Lưu đồ thuật toán Bresenham.
2

x


Yes

x < x2

Yes

P = P + c1
Website: www.bigme.vn |


P = P + c2 ;

y = y +1
x = x + 1;
BIGME.VN – Siêu thị trực tuyến hàng
đầu );
Putpixel (19
x, y , color

Kết thúc

No


Nhóm biên soạn: Nhóm #05
#8521006
Người đại diện: Cao Văn Tú



Mã Ticket tài liệu:
Skype: caotu_95 – Yahoo: bigme_caotu – Email:

x < x2

No

 Các bước vẽ thuật toán Bresanham
+) Bước 1: Nhập các điểm đầu mút. Điểm đầu mút bên trái chứa tọa độ (x1,y1), điểm đầu
mút bên phải chứa tọa độ (x2,y2).
+) Bước 2: Tính các đại lượng:
Dx = x2 − x1 ; Dy = y2 − y1 ;

(
1
2

• Chọn điểm xuất phát (x, y) = (x1, y1)
• Vẽ điểm (x1, y1).

P = 2 Dy − Dx; c = 2 Dy; c = 2 Dy − Dx ) ;

+) Bước 3: Nếu x < x2 thì x = x + 1

• Nếu P < 0 : P = P + 2 Dy = P + c1

(
)
• Ngược lại:
• Vẽ điểm (x, y) mới.

+) Bước 4: Lặp lại Bước 3 cho đến khi x = x2.
+) Bước 5: Vẽ hình (nếu đề bài yêu cầu)

P < 0 : P = P + 2 Dy − Dx = P + c2

Website: www.bigme.vn |


20

và y = y + 1

BIGME.VN – Siêu thị trực tuyến hàng
đầu


Nhóm biên soạn: Nhóm #05
Mã Ticket tài liệu:
#8521006
Người đại diện: Cao Văn Tú
Skype: caotu_95 – Yahoo: bigme_caotu – Email:

 Ví dụ, bài tập mẫu: Áp dụng thuật toán Bresenham vẽ đường thẳng đi qua 2 điểm A(4,
5) và B(9, 6).
Hướng dẫn
 Xác định:
+) Dx = x2 − x1 = 5; Dy = y2 − y1 = 1;
+) P = 2 Dy − Dx = 2.1 − 5 = −3;
+)


c1 = 2 Dy = 2.1 = 2; c2 = 2 ( Dy − Dx ) = 2 ( 1 − 5 ) = −8

 x0 = 4

y =5
 Xác định điểm đầu tiên:  0

.



Vẽ điểm (4, 5).

 Xác định những điểm tiếp theo:

+)

P0 = −3 < 0

 x1 = 5
⇒
 y1 = 5



Vẽ điểm (5, 5).

⇒ P1 = P0 + 2 Dy = P0 + c1 = − 3 + 2 = −1

+)


P1 = −1 < 0

 x2 = 6
⇒
 y2 = 5



Vẽ điểm (6, 5).

⇒ P2 = P1 + 2 Dy = − 1 + 2 = 1

+)

P2 = 1 > 0

 x3 = 7
⇒
 y3 = 6



Vẽ điểm (7, 6).

⇒ P3 = P2 + 2 ( Dy − Dx ) = P2 + c2 = 1 − 8 = −7

+)

P3 = −1 < 0


 x4 = 8
⇒
 y4 = 6



Vẽ điểm (8, 6).

⇒ P4 = P3 + c1 = − 5

+)

P4 = −5 < 0

 x5 = 9
⇒
 y5 = 6



Vẽ điểm (9, 6).

Điểm (9, 6) có x = x2 nên thuật toán dừng.
Website: www.bigme.vn |


21

BIGME.VN – Siêu thị trực tuyến hàng

đầu


Nhóm biên soạn: Nhóm #05
Mã Ticket tài liệu:
#8521006
Người đại diện: Cao Văn Tú
Skype: caotu_95 – Yahoo: bigme_caotu – Email:

 Hình vẽ minh họa. (Bạn đọc tự vẽ)
Ghi nhớ:
Đối với thuật toán Bresanham thì tọa độ của x luôn luôn tăng nên 1 đơn vị (x = x + 1)
Dạng 3: Thuật toán Midpoint vẽ đường thẳng và đường tròn
 Cơ sở lý thuyết của thuật toán Midpoint vẽ đường thẳng.
+) Thuật toán MidPoint đưa ra cách chọn yi + 1 là yi hay yi +1 bằng cách so sánh điểm
thực Q với điểm MidPoint là trung điểm của S và P.
+) Ta có:
Nếu điểm Q nằm dưới điểm MidPoint, ta chọn S.
Ngược lại nếu điểm Q nằm trên điểm MidPoint ta chọn P.
+) Ta có dạng tổng quát của phương trình đường thẳng là :
Ax + By + C = 0 với A = y2 –y1; B = -(x2 – x1) ; C = x2y1 -x1y2
+) Đặt F(x,y)=Ax + By + C thì ta có nhận xét 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) nằm thuộc đường thẳng
- F(x,y) > 0 nếu (x,y)nằm phía dưới đường thẳng
+) Lúc này việc chọn điểm S hay P được đưa về việc xét dấu của
1

pi = 2 F ( MidPo int) = 2 F  x1 + 1; yi + ÷
2



 Cơ sở lý thuyết của thuật toán Midpoint vẽ đường tròn.
+) Do tính đối xứng của đường tròn (C) nên ta chỉ cần vẽ cung (C1/8) là cung 1/8 đường
tròn, sau đó lấy đối xứng. Cung (C1/8) được mô tả như sau (cung của phần tô xám trong

hình vẽ) :


2
0 ≤ x ≤ R

2

2

R
≤ y≤R

 2

+) Như vậy nếu có (x, y) ∈ (C1/8) thì các điểm : (y, x), (y,-x), (x,-y), (-x,-y), (-y,-x), (No
Website: www.bigme.vn |


22

BIGME.VN – Siêu thị trực tuyến hàng
đầu



Nhóm biên soạn: Nhóm #05
Mã Ticket tài liệu:
#8521006
Người đại diện: Cao Văn Tú
Skype: caotu_95 – Yahoo: bigme_caotu – Email:

y,x), (-x,y) sẽ thuộc (C).
+) Chọn điểm bắt đầu để vẽ là điểm (0,R). Dựa vào hình vẽ, nếu ( x i , yi ) là điểm ngun
đã tìm được ở bước thứ i, thì điểm ( xi+1 , yi+1 ) ở bước thứ (i+1) là sự lựa chọn giữa S và
 x i +1 = x i + 1

y ∈ { yi , yi − 1}
P. Như vậy :  i+1

+) Đặt

F ( x, y) = x 2 + y 2 − R 2 ,

ta có :

< 0, nếu ( x, y ) nằ m trong đườ ng trò n

F ( x, y) = 0, nế u ( x, y ) nằm trê n đường trò n
> 0, nế u ( x, y ) nằm ngoài đường trò n.


1

pi = F ( MidPoint ) = F  x i + 1, yi − 

2

Xét
. Ta có :




Nếu pi < 0 , điểm MidPoint nằm trong đường tròn. Lúc này điểm thực Q gần S hơn nên
ta chọn S, tức là yi+1 = yi .
Ngược lại, nếu pi ≥ 0 , điểm MidPoint nằm ngồi đường tròn. Lúc này điểm thực Q gần
P hơn nên ta chọn P, tức là yi+1 = yi − 1 .
Mặt khác :
1
1


pi+1 − pi = F  x i+1 + 1, y i+1 −  − F  x i + 1, yi − 
2
2


2
2

 

1
1



2
2
⇔ pi +1 − pi = ( xi +1 + 1) +  yi +1 −  − R2  − ( xi + 1) +  yi −  − R2 
2
2



 


⇔ pi +1

2
2

 

1
1


2
2
2
− pi = ( xi + 2) +  yi +1 −  − R  − ( xi + 1) +  yi −  − R2 
2
2




 


(

)

⇔ pi +1 − pi = 2 xi + 3 + yi2+1 − yi2 − ( yi +1 − yi )

Vậy :


p i +1 = p i + 2 x i + 3 ,



p i +1 = p i + 2 x i − 2 y i + 5 ,

+) Ta tính giá trị
Website: www.bigme.vn |


nếu
p0

pi < 0

do ta chọn


yi+1 = yi .

do ta chọn yi+1 = yi − 1 .
ứng với điểm ban đầu ( x0 , y0 ) = ( 0, R) .
nếu

pi ≥ 0

23

BIGME.VN – Siêu thị trực tuyến hàng
đầu


Nhóm biên soạn: Nhóm #05
#8521006
Người đại diện: Cao Văn Tú


Mã Ticket tài liệu:
Skype: caotu_95 – Yahoo: bigme_caotu – Email:

1
1 5


p0 = F  x 0 + 1, y0 −  = F  1, R −  = − R
2
2 4




+ Lưu đồ thuật toán MidPoint.
Bắt đầu

5
− R; x = 0; y = R;
4
Put 8Pixel ( x, y, c);
P=

x
No
Yes

P<0

No
Yes

P = P + 2* x + 3;

P = P + 2 ( x − y ) + 5;
y = y− 1

x = x + 1;
Put8 Pixel ( x, y, c);


End
 Ví dụ, bài tập mẫu: Áp dụng thuật toán MidPoint vẽ đường tròn tâm O bán kính R =
10.
Hướng dẫn
Website: www.bigme.vn |


24

BIGME.VN – Siêu thị trực tuyến hàng
đầu


Nhóm biên soạn: Nhóm #05
#8521006
Người đại diện: Cao Văn Tú

 Xác định:

Mã Ticket tài liệu:
Skype: caotu_95 – Yahoo: bigme_caotu – Email:

5
5
35
− R = − 10 = − = −8, 75
4
4
4
+)

x = 0


+) Ta có:  y = R = 10
Vẽ điểm (0, 10).
P0 =

 x1 = 1

y = 10
P
=

8,
75
<
0
0
+)
. 1
 x2 = 2
P1 = −5, 75 < 0. 
 y2 = 10
+)



Vẽ điểm (1, 10). P1 = P0 + 2* x0 + 3 = −8, 75 + 3 = −5, 75




Vẽ điểm (2, 10).

P2 = P1 + 2* x1 + 3 = −5, 75 + 2.1 + 3 = −0, 75
 x3 = 3
P2 = −0, 75 < 0. 

y3 = 10

+)
Vẽ điểm (3, 10). P3 = P2 + 2* x2 + 3 = −0, 75 + 2.2 + 3 = 6, 75
 x4 = 4
P3 = 6, 25 > 0. 

 y4 = 9

+)

Vẽ điểm (4, 9).

P4 = P3 + 2 ( x3 − y3 ) + 5 = 6, 75 + 2 ( 3 − 10 ) + 5 = −2, 75
 x5 = 5
P4 = −2, 75 < 0. 

y5 = 9

+)
Vẽ điểm (5, 9). P5 = P4 + 2* x4 + 3 = −2, 75 + 2.4 + 3 = 8, 25
 x6 = 6
P5 = 8, 25 > 0. 


 y6 = 8

+)

Vẽ điểm (6, 8).

P6 = P5 + 2 ( x5 − y5 ) + 5 = 8, 25 + 2 ( 5 − 9 ) + 5 = 5, 25
 x7 = 7
P6 = 9, 25 > 0. 
 y7 = 7
+)



Vẽ điểm (7, 7).

P7 = P6 + 2 ( x6 − y6 ) + 5 = 5, 25 + 2 ( 6 − 8 ) + 5 = 6, 25

Thuật toán dừng vì x < y.
 Hình vẽ minh họa. (Bạn đọc tự vẽ)
 Ghi nhớ:
o Đối với thuật toán MidPoint thì tọa độ của x luôn luôn tăng nên 1 đơn vị (x = x + 1).

Website: www.bigme.vn |


25

BIGME.VN – Siêu thị trực tuyến hàng

đầu


×