ĐỀ 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 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ạn0,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ế. 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 là hay , dựa vào phương trình của đoạn thẳng . Nghĩa là, ta sẽ tính tọa độ của điểm thuộc về đoạn thẳng thực. Tiếp đó, sẽ là giá trị sau khi làm tròn giá trị tung độ y. Như vậy : Nếu tính trực tiếp giá trị thực y ở mỗi bước từ phương trình 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 : Nhận xét: +) Việc sử dụng công thức để 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 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. +) 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 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 là hay 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 là điểm thuộc đoạn thẳng. Ta có: . Đặt Xét tất cả các vị trí tương đối của y so với và , việc chọn điểm là S hay P phụ thuộc vào việc so sánh d1 và d2 hay dấu của : • Nếu , ta sẽ chọn điểm S, tức là . • Ngược lại, nếu , ta sẽ chọn điểm P, tức là . Xét Thay vào phương trình trên ta được : , với . Nhận xét rằng do nên dấu của biểu thức cũng chính là dấu của . Hay 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 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 tại mỗi bước thật nhanh. Ta có : Từ đây ta có thể suy ra cách tính từ như sau : • Nếu thì do ta chọn . • Ngược lại, nếu , thì , do ta chọn . Giá trị được tính từ điểm vẽ đầu tiên theo công thức : Do là điểm nguyên thuộc về đoạn thẳng nên ta có . Thế vào phương trình trên ta suy ra : . 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 là hay 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 : với Đặt , ta có nhận xét : 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 . • Nếu , đ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à . • Ngược lại, nếu , đ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à . Mặt khác : Vậy : • , nếu do ta chọn . • , nếu do ta chọn . Ta tính giá trị ứng với điểm ban đầu , với nhận xét rằng là điểm thuộc về đoạn thẳng, tức là có : 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): (xxc)2+ (yyc)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ẽ 18 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. Tại mỗi giá trị x, tính int(y = sqrt(R2x2)). 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 (C18) là cung 18 đường tròn, sau đó lấy đối xứng. +) Cung (C18) được mô tả như sau (cung của phần tô xám trong hình vẽ) : 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) (C18) thì các điểm : (y, x), (y,x), (x,y), (x,y), (y,x), (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 là điểm nguyên đã tìm được ở bước thứ i, thì điểm ở bước thứ (i+1) là sự lựa chọn giữa S và P. Như vậy : +) Tương tự như thuật toá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 , ta có : Xét . Ta có : • Nếu , đ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à . • Ngược lại, nếu , điểm MidPoint nằm ngoà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à . Mặt khác : Vậy : • , nếu do ta chọn . • , nếu do ta chọn . Ta tính giá trị ứng với điểm ban đầu . 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 : (xh)2a2+(yk)2b2=1. +) Phưuơng trình elip với tâm tại gốc tọa độ: x2b2+y2b2=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: . 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 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(yp0.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,yi1). 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,yi12) = b2(xi+1)2 + a2(yi12)2 a2b2 pi+1 = F(xi+1+1,yi+112) = b2(xi+1+1)2 + a2(yi+112)2–a2b2 Nếu pi =0 chọn B. Suy ra: xi+1=xi+1; yi+1=yi 1 pi+1 = b2(xi+2)2 + a2(yi1.5)2–a2b2 = pi + b2(2xi +3) + a2(2yi +2) Tính P1 khởi tạo tại (0,b) p1 = F(1,b12) = b2 + a2(b12)2–a2b2 ;p1 = b2–a2b +a24 +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,yj1) hoặc D(xj+1, yj1). +) 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) 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 ITUR 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) +) 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 ; CCyan, MMagenta, YYellow; KblacK 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. +) 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ị 003600 đượ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 ValueBrightness:có giá trị thuộc0,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 +) 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). III. PHẦN BÀI TẬP 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. Lưu ý một số công thức của đường thẳng. 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: +) +) (Thuộc vào trường hợp 0 < m < 1) Xác định điểm đầu tiên: Vẽ điểm (3, 4). Xác định những điểm tiếp theo: +) Vẽ điểm (3, 5). +) Vẽ điểm (4, 5). +) Vẽ điểm (5, 6). +) Vẽ điểm (6, 7). +) Vẽ điểm (7, 8). +) Vẽ điểm (8, 8). +) Vẽ điểm (9, 9). Hình vẽ minh họa. 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). Hướng dẫn (Trường hợp m > 1) Xác định: +) +) (Thuộc vào trường hợp m > 1) Xác định điểm đầu tiên: Vẽ điểm (5, 10). Xác định những điểm tiếp theo: +) Vẽ điểm (6, 11). +) Vẽ điểm (7, 12). +) Vẽ điểm (8, 13). +) Vẽ điểm (9, 14). +) 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 + 1m Cơ sở lý thuyết + Gọi (xi+1,y) là điểm thuộc đoạn thẳng thực. Ta có: y = m( xi+1) + b. (0 < m |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 là 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 | info@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: cvtu@bigme.vn +) 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 là 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 và 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 | info@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ú cvtu@bigme.vn 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 là 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 | info@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: cvtu@bigme.vn • 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 : 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, neáu ( x, y ) naèm phía treâ n ñöôø ng thaú ng F ( x, y) = 0, neá u ( x, y ) thuoäc veà ñöôø ng thaú ng > 0, neá u ( x, y ) naè m phía döôù i ñöôø ng thaú 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 | info@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: cvtu@bigme.vn 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 | info@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: cvtu@bigme.vn - 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 | info@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: cvtu@bigme.vn +) 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 nguyên đã 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 toá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, neá u ( x, y ) naè m trong ñöôø ng troø n F ( x, y) = 0, neá u ( x, y ) naè m treâ n ñöôø ng troø n > 0, neá u ( x, y ) naè m ngoaø i ñöôø ng troø 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 ngoà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 | info@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ú cvtu@bigme.vn 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 | info@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: cvtu@bigme.vn 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 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 | info@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: cvtu@bigme.vn 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 | info@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: cvtu@bigme.vn +) 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 | info@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: cvtu@bigme.vn +) 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 | info@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: cvtu@bigme.vn +) 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 | info@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ú cvtu@bigme.vn 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 | info@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ú cvtu@bigme.vn 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 | info@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ú cvtu@bigme.vn 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 | info@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ú cvtu@bigme.vn +) 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 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 | info@bigme.vn 25 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: cvtu@bigme.vn o Lấy đối xứng qua các điểm Ox, Oy, y = x, y = -x thu được tất cả cả các điểm thuộc đường tròn. R 2 ≤ x ≤ R 0 ≤ y ≤ R 2 o Cung I (Thuộc phần tư thứ nhất) thì: R 0 ≤ x ≤ 2 R ≤ y≤R o Cung II (Thuộc phần tư thứ nhất) thì: 2 -----------------Hết----------------- Thái Nguyên, ngày 07/10/2015 Thái Nguyên, ngày 08/10/2015 NHÓM BIÊN SOẠN NGƯỜI DUYỆT Đội ngũ 123cbook.com (#05) ThS.Phạm Thị Liên Website: www.bigme.vn | info@bigme.vn 26 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ú cvtu@bigme.vn Mã Ticket tài liệu: Skype: caotu_95 – Yahoo: bigme_caotu – Email: BẢN QUYỀN THUỘC VỀ NHÓM BIÊN SOẠN TRỰC TUYẾN 123CBOOK.COM Mã Ticket tài liệu: #8521006 Địa chỉ: Quyết Thắng – Tp.Thái Nguyên – Thái Nguyên. Hotline: (0280) 6 577 048 Email: info@123cbook.com – Website: www.123cbook.com Website: www.bigme.vn | info@bigme.vn 27 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ú cvtu@bigme.vn Mã Ticket tài liệu: Skype: caotu_95 – Yahoo: bigme_caotu – Email: Được đảm bảo bởi: BIGME.VN – Siêu thị trực tuyến hàng đầu! Website: www.bigme.vn | info@bigme.vn 28 BIGME.VN – Siêu thị trực tuyến hàng đầu [...]... đ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 tố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... 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 tố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... 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... cvtu@bigme.vn 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 tốn DDA (Digital Differential Analyzer) Cơ sở lý thuyết + Thuật tốn DDA là một thuật tốn tính tố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 tốn DDA Bắt đầu Dy ; x = x1 ; y = y1 ; Dx Putpixel ( x, Round ( y ), c ); m= x < x2... 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)... 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... 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 số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... 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... 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 u cầu) P < 0 : P = P + 2... Yahoo: bigme_caotu – Email: 1 1 5 p0 = F x 0 + 1, y0 − = F 1, R − = − R 2 2 4 + Lưu đồ thuật tốn MidPoint Bắt đầu 5 − R; x = 0; y = R; 4 Put 8Pixel ( x, y, c); P= x ... gian RGB chuẩn cơng nghiệp cho thao tác đồ họa máy tính + Có thể chuyển đổi qua lại khơng gian RGB với khơng gian màu khác CIE, CMY, HSL, HSV, + Các thao tác tính tốn khơng gian RGB thường đơn giản... biến đổi theo đơn vị, tính thành phần y tương ứng Nếu |dx| < |dy|, y biến đổi theo đơn vị, tính thành phần x tuơng ứng Do đường thẳng mơ tả hệ tọa độ thực hiển thị máy tính, hệ tọa độ lưới ngun... trình đồ họa xây dựng dựa bắt chước luật trộn màu người họa sĩ + Do khơng cần sử dụng phép biến đổi lượng giác muốn chuyển sang khơng gian RGB nên khơng gian HSV có nhiều thuận lợi mặt tính tốn