Thuật toỏn Bresenham vẽ đường trũn

Một phần của tài liệu Tìm hiểu về đồ họa máy tính ppt (Trang 42 - 177)

Ta xột cỏc điểm tạo ra từ gúc phần tư thứ 2: từ 900 đến 450 , thực hiện theo hướng +x, -y

Giả sử bắt đầu xi vậy xi+1 = xi +1 y2 = r2 - (xi +1)2 2 2 2 2 2 1 = yiy = yir −(xi +1) d

d2 = y2 - (yi - 1)2 = r2 - (xi +1)2 - (yi - 1)2 pi = d1 - d2 = 2(xi +1 )2 + yi2 + (yi - 1)2 -2r2

Xột: pi <0 (d1<d2) chọn điểm nằm ngoài đường trũn yi+1 = yi pi >=0 (d1>=d2) chọn điểm nằm trong đường trũn yi+1 = yi +1 pi = 2(xi +1 )2 + 2yi 2-2yi+1-2r2

pi+1 = 2(xi +2 )2 + 2yi+12 - 2yi+1 + 1 - 2r2 pi+1 = pi + 4xi +6 + 2yi+1 2- 2yi2- 2yi+1 + 2yi

p1 = 2(x1 +1)2 + y12+(y1-1)2-2r2 = 2+r2 +(r-1)2 - 2r2 = 3-2r

+ Nếu pi <0 hay yi+1 = yi pi+1 = pi + 4xi +6 + Nếu pi >=0 hay yi+1 = yi -1

pi+1 = pi + 4xi +6 - 4yi + 2 + 2 pi+1 = pi + 4(xi - yi ) + 10

+ Tớnh P1 ? khi đú ứng với x1= 0 và y1 = r

void Bre_circle(int xc, int yc, int Radius, int color) { int x, y, p; x = 0; y = Radius; p = 3 - 2 * Radius; while (x <= y) { putpixel(xc + x, yc + y, color); if (p < 0) p+=4*x+6 else { p+=4*(x-y)+10; y--; } x++;}

Túm tắt chương 2

- Chương 2 đó trỡnh bày khỏi niệm về một hệ độ họa, sự hiển thị của điểm trờn màn hỡnh với tọa độ phài là số nguyờn.

- Phõn biệt thế nào là hệ tọa độ thế giới thực, hệ tọa độ thiết bị và hệ tọa độ chuẩn.

- Cần lưu ý về hệ số gúc của đường thẳng. Bởi vỡ, với hệ số gúc khỏc nhau thỡ giải thuật cú thay đổi. Nhất là trong giải thuật Bresenham.

- Chỳ ý hơn trong cỏch xõy dựng cấu trỳc dữ liệu để lưu tọa độ của cỏc đỉnh đa giỏc

- Cỏc thuật toỏn vẽ đường thẳng: thuật toỏn đơn giản, DDA, bresenham, Midpoint từ đú lập trỡnh vẽ được đường thẳng

- Cỏc thuật toỏn vẽ đường trũn theo cỏch thụng thường, midpoint và bresenham. Từ đú lập trỡnh vẽ đường trũn.

BÀI TẬP CHƯƠNG 2

1. Viết chương trỡnh vẽ bầu trời cú 10.000 điểm sao, mỗi điểm sao xuất hiện với một màu ngẫu nhiờn. Những điểm sao này hiện lờn rồi từ từ tắt cũng rất ngẫu nhiờn. 2. Viết chương trỡnh vẽ đoạn thẳng AB với màu color theo giải thuật DDA. Biết

rằng tọa độ A,B, color được nhập từ bàn phớm. Trang trớ màu nền, ghi chỳ cỏc tọa độ A, B ở hai đầu đoạn thẳng.

3. Tương tự như bài tập 2 nhưng sử dụng giải thuật Bresenham. Lưu ý cỏc trường hợp đặc biệt của hệ số gúc.

4. Tổng hợp bài tập 3, viết chương trỡnh vẽ đường thằng bằng giải thuật Bresenham cho tất cả cỏc trường hợp của hệ số gúc. Lưu ý xột trường hợp đặc biệt khi đường thẳng song song với trục tung hay với trục hoành.

5. Viết chương trỡnh nhập tọa độ 3 điểm A, B, C từ bàn phớm. Tỡm tọa độ điểm D thuộc AB sao cho CD vuộng gúc AB. Vẽ đoạn thẳng AB và CD.

6 Viết chương trỡnh xột vị trớ tương đối của 2 đoạn thẳng AB và CD. Biết rằng trong màn hỡnh đồ họa đoạn thẳng AB và CD được gọi là cắt nhau khi hai điểm A, B ở về hai phớa của CD và ngược lại.

7 Viết chương trỡnh vẽ đường trũn theo giải thuật đơn giản ( đối xứng ). 8. Viết chương trỡnh vẽ đường trũn theo giải thuật Bresenham.

9. Viết chương trỡnh vẽ đường trũn theo giải thuật MidPoint.

10. Viết chương trỡnh vẽ một đường trũn tõm O bỏn kớnh R. Vẽ cỏc đường trũn đồng tõm với O, cú bỏn kớnh chạy từ 1 đến R. Sau đú xoỏ cỏc đường trũn đồng tõm này và vẽ cỏc đường trũn đồng tõm khỏc đi từ R đến 1.

11. Viết chương trỡnh vẽ một đường trũn tõm O bỏn kớnh R. Hóy vẽ một đoạn thẳng từ tõm O độ dài R. Hóy quay đoạn thẳng này quanh đường trũn.

12. Viết chương trỡnh vẽ một hỡnh chữ nhật, một hỡnh vuụng và một hỡnh bỡnh hành.

Yờu cầu chỳ thớch tọa độ cỏc đỉnh.

13. Viết chương trỡnh vẽ một tam giỏc. Tọa độ cỏc đỉnh được nhập từ bàn phớm, mỗi cạnh cú một màu khỏc nhau.

CHƯƠNG 3. CÁC THUẬT TOÁN Tễ MÀU 3.1. Cỏc hệ màu

Việc nghiờn cứu màu sắc bao gồm nhiều lĩnh vực như: quang học, sinh lý học, tõm lý học và cỏc nhõn tố khỏc thuộc về con người. Vỡ thế, cú rất nhiều quan niệm cũng như thành ngữ về khoa học cỏc màu sắc. Đối với những người làm tin học, vấn đề mà họ quan tõm là mối tương tỏc qua lại giữa sự cảm nhận màu sắc của con người với cỏc bộ phận phần cứng hiển thị màu sắc của màn hỡnh mỏy tớnh, và với cỏc phần mềm thiết kế trờn nú. Bảng sau trỡnh bày về mối quan hệ này.

Bảng 3.1 – Mối quan hệ giữa sự cảm nhận màu của con người với phần cứng và phần mềm đồ họa.

Sự cảm nhận của con người

Đặc điểm phần cứng Đặc điểm phần mềm

Màu sắc Cỏc màu hiển thị gốc Thuật toỏn trờn khụng gian màu

Sắc độ màu (Hue) Bước súng

(WaveLength)

Độ bóo hũa

(Saturation)

Sự thuần nhất của màu sắc

Độ sỏng, độ chúi Cường độ sỏng Hiệu chỉnh gamma

Độ rung của màn hỡnh Tốc độ làm tươi (refresh)

Khụng gian màu (color space) được dựng để định ra cỏc màu hiển thị trờn mỏy tớnh. Chỳng làm đơn giản húa cỏc thao tỏc tớnh toỏn cho việc chuyển đổi màu sắc (color transformation). Cỏc khụng gian màu được thiết kế dựa trờn cơ sở của bộ phỏt sinh màu của phần cứng hoặc dựa trờn sự cảm nhận màu sắc của mắt. Với mỗi ứng dụng, việc chọn sử dụng khụng gian màu tựy thuộc vào cỏc yếu tố: độ chớnh xỏc mà cỏc nhà thiết kế cần kiểm soỏt màu sắc, yờu cầu về sự tương tỏc giữa cỏc màu sắc và tốc độ cỏc tớnh toỏn cho ứng dụng đú.

3.1.1. Khụng gian RGB (Red - Green - Blue).

Khụng gian RGB mụ tả màu sắc bằng ba thành phần Red, Green, Blue. Khụng gian này được minh họa bởi một khối lập phương với cỏc trục chớnh R, G, B. Mỗi màu trong khụng gian được biểu diễn như là một vector thụng qua ba vector cơ sở là Red, Green, Blue. Tổ hợp của cỏc vector này tạo thành một màu mới.

Trong khối lập phương, mỗi màu gốc (Red, Green, Blue) được đặt vào đỉnh của khối lập phương và nằm trờn trục chớnh của khụng gian. Gúc đối diện là màu bự với màu gốc. Hai màu bự nhau là hai màu mà khi kết hợp tạo thành màu trắng (White) hay màu xỏm (Gray). Như vậy Cyan đối diện với Red, Magenta đối diện với Green, Yellow đối diện với Blue. Giỏ trị xỏm nằm trờn được chộo nối cỏc đỉnh (0,0,0) và (1,1,1) (Black và White) của khối lập phương. Khi kết hợp hai màu với nhau thỡ màu sinh ra cú vector bằng tổng cỏc vector thành phần.

Ưu điểm:

- Khụng gian RGB là một chuẩn cụng nghiệp cho cỏc thao tỏc đồ họa mỏy tớnh. Cỏc thao tỏc màu sắc cú thể được tớnh toỏn trờn cỏc khụng gian màu khỏc nhưng cuối cựng cần phải chuyển về khụng gian RGB để cú thể hiển thị trờn màn hỡnh mỏy tớnh (do thiết kế phần cứng dựa trờn mụ hỡnh RGB).

- Cú thể chuyển đổi giữa khụng gian RGB với cỏc khụng gian màu khỏc: CIE, HSL, HSV…

- Cỏc thao tỏc tớnh toỏn trờn khụng gian RGB thường đơn giản hơn.

Nhược điểm:

- Cỏc giỏ trị RGB của một màu là khỏc nhau đối với màn hỡnh khỏc nhau. - 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ế 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.

3.1.2. Khụng gian màu CMY (Cyan - Magenta - Yellow)

Green (0,1,0) Red (1,0,0) Yellow (1,1,0) Cyan (0,1,1) Blue (0,0,1) Magenta (1,0,1) Black (0,0,0) White (1,1,1) R G B 1 1 1 Hỡnh 3.1. Mụ hỡnh khụng gian màu RGB Grayscal e

Tương tự như khụng gian màu RGB nhưng 3 thành phần chớnh là Cyan - Magenta - Yellow. Do đú, tọa độ cỏc màu trong khụng gian CMY trỏi ngược với khụng gian RGB. Vớ dụ: màu White cú cỏc thành phần là (0,0,0), màu Black (1,1,1), màu Cyan (1,0,0),....

3.1.3. Khụng gian HSL (Hue – Saturation - Lightness)

Khụng gian này chỳ trọng đến sự cảm nhận màu sắc của mắt (Hue, Saturation, Lightness) hơn khụng gian RGB. Tuy nhiờn khụng gian HSL cũng chỉ là một phộp biến đổi gần đỳng của khụng gian RGB . Khụng gian HSL vẫn cũn phụ thuộc vào phần cứng mà khụng hoàn toàn dựa trờn sự cảm nhận màu sắc của mắt.

Khụng gian HSL được biểu diễn trong hệ tọa độ trụ, hỡnh minh họa là hai hỡnh nún ỳp vào nhau. H (Hue) là tọa độ ứng với gúc quay, S (Saturation) là tọa độ gốc, L (Lightness) là trục thẳng đứng. Hầu hết cỏc màu đạt bóo hũa khi S=1, L=0.5 (hỡnh 3.3)

Ưu điểm:

- 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 hơn nhiều). Cỏc màu được xỏc định dễ dàng hơn.

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

Nhược điểm: 46 Magenta (0,1,0) Cyan (1,0,0) Blue (1,1,0) Red (0,1,1) Yellow (0,0,1) (1,0,1)Green White (0,0,0) Black (1,1,1) R G B 1 1 1

Hỡnh 3.2. Mụ hỡnh khụng gian màu CMY

Grayscal e

- Việc thờm vào một vector khụng thể thực hiện đơn giản như khụng gian RGB. Cỏc thao tỏc lượng giỏc khi biến đổi sẽ ảnh hưởng lớn đến tốc độ của chương trỡnh đồ họa.

- Cần phải qua hiệu chỉnh gamma trước khi hiển thị ra màn hỡnh.

3.1.4. Khụng gian HSV (Hue – Staturation – Values)

Khụng gian HSV thực chất cũng chỉ là một sự biến đổi khỏc của khụng gian RGB. Khụng gian HSV được biểu diễn bởi hỡnh lập phương RGB quay trờn đỉnh Black của nú tạo thành hỡnh nún. H (Hue) là gúc quay quanh trục Values, S (Saturation) đi từ 0 đến 1, trục V (Values) do vậy tương ứng với đường chộo nối đỉnh White và Black (hỡnh 3.4)

Theo cỏch này, cỏc màu đạt bóo hũa khi S=1 và V=1. Trong khụng gian HSV cỏc màu được chuẩn húa về số cỏc gam (gamut) màu của thiết bị hiển thị.

Ưu điểm:

- 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 luật trộn màu của người họa sĩ.

- Do khụng cần sự biến đổi lượng giỏc khi muốn chuyển sang khụng gian RGB nờn khụng gian HSV co nhiều thuận lợi về mặt tớnh toỏn hơn so với khụng gian HSL. L (lightness) S (Saturation) H (Hue angle) L=0 (Black) L=1 (White) Blue Cyan Green Yellow Red Magenta L=0.5 Hỡnh 3.3. Mụ hỡnh khụng gian HSL Grayscale

Nhược điểm:

- Cần cú phộp hiệu chỉnh gamma.

3.1.5. So sỏnh giữa cỏc khụng gian màu.

Bảng 3.2 – So sỏnh giữa cỏc khụng gian màu.

RGB HSL HSV

Là chuẩn cụng nghiệp cho cỏc thao tỏc đồ họa mỏy tớnh. Là hỡnh thức biến đổi khỏc của khụng gian RGB. Là hỡnh thức biến đổi khỏc của khụng gian RGB.

Liờn hệ trực tiếp với phần cứng.

Liờn hệ gần hơn với sự cảm nhận màu sắc của con người.

Liờn hệ gần hơn với sự cảm nhận màu sắc của con người.

Là chuyển đổi cuối cựng của tất cả cỏc nhu cầu hiển thị.

Đũi hỏi cỏc phộp biến đổi phức tạp.

Đó đơn giản húa cỏc thao tỏc tớnh toỏn.

Phụ thuộc thiết bị hiển thị.

Độc lập với thiết bị hiển thị.

Độc lập với thiết bị hiển thị. Khụng cú sự tương ứng Cú Cú 48 V=0 (Black) Green (1200) S (Saturation) H (Hue angle) Red (00) Cyan (1800) Blue (2400) Magenta Yellow V=1 (White) V (Value) Grayscale Hỡnh 3.4. Mụ hỡnh khụng gian HSV

RGB HSL HSV

1-1 với sự cảm nhận màu sắc của con người.

Mụ hỡnh là khối lập phương

Mụ hỡnh là hai hỡnh nún

ỳp vào nhau. Mụ hỡnh là hỡnh nún đơn. Cỏc giỏ trị được chuẩn

húa về 1.

Cỏc giỏ trị được chuẩn húa về 1.

Cỏc giỏ trị được chuẩn húa về 1.

Độ bóo hũa max khi S=1. Độ bóo hũa max khi S=1, L=0.5.

Độ bóo hũa max khi S=1, V=1.

Trộn màu khụng rừ ràng Trộn màu rừ ràng Trộn màu rừ ràng.

3.2. Tụ màu vựng khộp kớn

Tụ màu một vựng là thay đổi màu sắc của cỏc điểm vẽ nằm trong vựng cần tụ. Một vựng tụ thường đựơc xỏc định bởi một đường khộp kớn nào đú gọi là đường biờn. Dạng đường biờn đơn giản thường gặp là đa giỏc.

Việc tụ màu thường chia làm 2 cụng đoạn : . Xỏc định vị trớ cỏc điểm cần tụ màu.

. Quyết định tụ cỏc điểm trờn bằng màu nào. Cụng đoạn này sẽ trở nờn phức tạp khi ta cần tụ theo một mẫu tụ nào đú chứ khụng phải tụ thuần một màu.

Cho một vựng khộp kớn được giới hạn bởi một đường biờn đồng màu. Vấn đề đặt ra là tụ màu cho miền trong của vựng đú Cú 2 cỏch tiếp cận chớnh để tụ màu. Đú là : tụ màu theo dũng quột và tụ màu dựa theo đường biờn.

3.2.1. Thuật toỏn tụ màu theo đường biờn (Boundary algorithm)

Cỏch tụ này yờu cầu phải biết trước tọa độ một điểm (điểm “gieo”) nằm bờn trong vựng cần tụ. Bắt đầu từ điểm đú ta sẽ tụ “loang” dần ra cỏc vựng xung quanh bằng việc đọc màu của cỏc điểm lõn cận để kiểm tra xem chỳng đó được tụ màu hay chưa. Nếu đó được tụ, hoặc màu của điểm lõn cận là màu của biờn thỡ dừng lại và xột điểm khỏc, nếu khụng thỡ tụ điểm lõn cận đú.

Cú vài phương phỏp khỏc nhau để xỏc định lõn cận như: loại 4 điểm, loại 8 điểm

Hỡnh 3.5. Xỏc định lõn cận của điểm

Procedure BFill ( x,y,c,B:integer)

{(x,y) điểm đang xột, c: màu tụ, B: màu đường biờn } Var t: integer; Begin t:=GetPixel(x,y); if (t <>B) and (t<>c) then { putpixel(x,y,c); BFill(x-1,y,c,B); BFill(x+1,y,c,B); BFill(x,y-1,c,B); BFill(x,y+1,c,B); }

Cỏch làm như trờn cú nhược điểm là khi gọi đệ quy cho 4 điểm lõn cận khụng xột tới việc chỳng đó được kiểm tra ở cỏc bước trước hay chưa. Cần cú cải tiến để khụng xột lại những điểm đó được kiểm tra rồi.

3.2.2. Thuật toỏn tụ màu dựa theo dũng quột (Scan-line algorithm) Giả sử dựng cần tụ là một đa giỏc N đỉnh {Pi =(xi,yi)} i=1..N

Ta sử dụng 1 dũng quột song song với trục Ox đi từ đỉnh trờn cựng (Ymax) đến đỉnh dưới cựng (Ymin) của vựng cần tụ. Với mỗi giỏ trị y = yi, dũng quột cắt cỏc đường biờn của vựng cần tụ tạo thành cỏc đoạn thẳng. Ta tụ màu cỏc điểm nằm giữa hai đầu mỳt của cỏc đoạn thẳng đú.

Lõn cận 4 điểm Lõn cận 8 điểm

Hỡnh 3.6. Xỏc định miền tụ nhờ dũng quột (Trường hợp 1)

Cỏc bước:

- Xỏc định Ymax, Ymin của đa giỏc cần tụ

- Với mỗi dũng quột y = yi (Ymin ≤ yi≤ Ymax), xỏc định hoành độ giao điểm với cỏc cạnh của đa giỏc

- Sắp xếp chỳng theo thứ tự tăng dần thành cỏc cặp (x0, x1) ... - Tụ cỏc đoạn (x0, x1), (x2, x3), (x4, x5) ...

Tuy nhiờn, cú một ngoại lệ là khi dũng quột đi qua đỉnh P của đa giỏc. Khi đú ta phải chia thành 2 trường hợp:

- Nếu 2 cạnh kề của P cú hướng ngược nhau, một cạnh đi lờn một cạnh đi xuống thỡ trong danh sỏch giao điểm ta sẽ tớnh là 2 giao điểm cú tọa độ trựng nhau ở đỉnh P. Nghĩa là xi = xi+1 = xP

Ymax

- Nếu 2 cạnh kề của P cựng hướng nhau, cả hai cựng đi lờn hoặc đi xuống thỡ P chỉ được tớnh là 1 giao điểm.

Túm tắt chương 3

Sinh viờn cần hiểu được khỏi niệm về cỏc khụng gian màu. Lưu ý nhiều ở giải thuật tụ biờn và scan-line.

So sỏnh được cỏc khụng gian màu

Trong scan-line phải đỏnh dấu cỏc đỉnh đơn điệu và đỉnh cực trị.

Trong giải thuật tụ biờn, việc thực hiện gọi đệ qui nhiều lần làm thuật toỏn khụng thể sử dụng cho vựng tụ lớn (tràn stack). Cú thể khắc phục việc tràn stack bằng cỏch giảm số lần gọi đệ qui. Thực hiện gọi đệ qui tại đỉnh đặc biệt của đa giỏc

1

2,3

4

1 2 3

Hỡnh 3.7. Xỏc định miền tụ nhờ dũng quột (trường hợp 2)

BÀI TẬP CHƯƠNG 3

1. Viết chương trỡnh vẽ một đa giỏc n đỉnh, xột xem một điểm P nào đú cú thuộc đa giỏc khụng ?

2. Viết chương trỡnh vẽ một đa giỏc n đỉnh. Tụ đa giỏc bằng giải thuật tụ đơn giản (Tỡm xmin, ymin, xmax, ymax).

3. Viết chương trỡnh vẽ một đường trũn. Tụ đường trũn bằng giải thuật tụ đơn giản.

4. Viết chương trỡnh vẽ một đa giỏc n đỉnh. Tụ đa giỏc bằng giải thuật tụ biờn. Lưu ý cho cỏc trường hợp của đa giỏc : hỡnh chữ nhật, đa giỏc lồi, đa giỏc lừm.

Một phần của tài liệu Tìm hiểu về đồ họa máy tính ppt (Trang 42 - 177)

Tải bản đầy đủ (DOC)

(177 trang)
w