Giáo trình Đồ họa máy tính (Phần 2)
5.1. Giới thiệu đồ họa ba chiều
Các đối tượng trong thế giới thực phần lớn là các đối tượng ba chiều, nên việc
thể hiện các đối tượng ba chiều trên máy tính là một công việc hết sức cần thiết để đưa
tin học gần gũi với thực tế hơn. Cũng giống như các cách biểu diễn các đối tượng ba
chiều trên mặt phẳng khác (như của máy ảnh, camera, . ), biểu diễn bằng máy tính
cũng phải tuân theo các quy luật về phối cảnh, sáng, tối, . nhằm giúp người xem có
thể tưởng tượng lại hình ảnh một cách gần đúng nhất. Ngoài ra biểu diễn trên máy tính
có ưu thế giúp ta có thể quan sát đối tượng ở nhiều góc cạnh khác nhau, ở các khoảng
cách khác nhau.
5.1.1. Tổng quan về đồ họa ba chiều
Khi mô hình hóa và hiển thị một cảnh ba chiều, cần phải xem xét rất nhiều khía
cạnh và vấn đề khác nhau chứ không đơn giản là thêm vào tọa độ thứ ba cho các đối
tượng. Bề mặt đối tượng có thể xây dựng bởi nhiều tổ hợp khác nhau của các mặt
phẳng và các mặt cong. Ngoài ra, đôi khi cũng cần mô tả một số thông tin bên
trong các đối tượng. Các công cụ hỗ trợ đồ họa (graphics package) thường
cung cấp một số hàm hiển thị các thành phần bên trong, những đường nét tiêu
biểu hoặc hiển thị một phần của đối tượng ba chiều (solid object). Ngoài ra, các phép
biến đổi hình học thường được sử dụng nhiều hơn và đa dạng hơn trong đồ họa ba
chiều so với trong đồ họa hai chiều. Phép biến đổi hệ quan sát trong không gian ba
chiều phức tạp hơn nhiều so với trong không gian hai chiều do ta phải chọn lựa nhiều
tham số hơn khi mô tả một cảnh ba chiều sẽ xuất hiện trên màn hình như thế nào.
Hình 5.1 Một cảnh đồ họa ba chiềuĐồ họa máy tính
124
Các mô tả về một cảnh ba chiều phải đi qua một quy trình xử lí gồm nhiều công
đoạn như phép biến đổi hệ tọa độ quan sát và phép chiếu chuyển cảnh từ hệ tọa độ
quan sát ba chiều xuống hệ tọa độ thiết bị hai chiều. Những phần nhìn thấy được của
cảnh, ứng với một hệ quan sát được chọn nào đó, phải được xác định và cuối cùng, các
thuật toán vẽ mặt sẽ được áp dụng nhằm tạo ra hình ảnh trung thực (gần với thực tế)
của cảnh.
Trang 1
Trang 2
Trang 3
Trang 4
Trang 5
Trang 6
Trang 7
Trang 8
Trang 9
Trang 10
Tải về để xem bản đầy đủ
Tóm tắt nội dung tài liệu: Giáo trình Đồ họa máy tính (Phần 2)
ng khoảng từ 0 đến 1 Ví dụ : Cho hệ màu HSL với các tham số lần lƣợt là : H = 210 độ, S = 48%, L = 59% Chuyển đổi sang hệ màu RGB Bƣớc 1: Chuyển các giá trị S, L sang hệ [0,1] S = 48% = 0,48 L = 59% = 0,59 Bƣớc 2 : Xác định Q, P, Hk , Tr, Tg , Tb Vì L = 0,59 > 0,5 nên Q = L + S - ( L × S ) = 0,78 P = 2 × L – Q = 0,4 Hk = 210/360 = 0,58 T r = Hk + 1/3 = 0.91 T g = Hk = 0.58 T b = Hk - 1/3 = 0.25 Bƣớc 3 : Gán Tc = giá trị Tr, Tg , Tb vừa tìm đƣợc, xét lần lƣợt T-c với công thức trên ta thấy : Với Tc = Tr : Tc = P = 0,4 Với Tc = Tg : 205 Đồ họa máy tính Tc = P + (( Q - P ) x (2/3 – Tc ) × 6.0) = 0,5976 ~ 0,6 Với Tc = Tb : Tc = Q = 0,78 Bƣớc 4 : Chuyển các giá trị sang hệ [0..255] R = 0,4 * 255 = 102 G = 0,6 * 255 = 153 B = 0,78 * 255 = 199 Vậy sau quá trình chuyển đổi từ hệ màu HSL với các tham số lần lƣợt là H = 210 độ, S = 48%, V = 59% Sang hệ màu RGB với các tham số tƣơng ứng là: R = 100, G = 150 , B = 200 b) HSL sang CMYK Bƣớc 1 : Chuyển HSL sang RGB Bƣớc 2 : Chuyển RGB sang CMYK c) HSL sang HSV Bƣớc 1 : Chuyển HSL sang RGB Bƣớc 2 : Chuyển RGB sang HSV Cài đặt các giải thuật chuyển đổi giữa các hệ màu 1. Giải thuật chuyển đổi từ HSV sang RGB Procedure hsv_to_rgb( real h, s, v ) Begin h: Sắc độ màu [0-360] với màu đỏ tại điểm 0 s: Độ bão hòa [0-1] v: Giá trị của cường độ sáng [0-1] rgb là các cơ sở màu đỏ, lục, lam real r, g, b; integer i; real f, p, q, t; 206 Đồ họa máy tính // kiểm tra trường hợp ánh sáng không màu if( s = 0 ) begin r = g = b = v; end; h /= 60; i = floor( h ); f = h - i; p = v * ( 1 - s ); q = v * ( 1 - s * f ); t = v * ( 1 - s * ( 1 - f ) ); // Xác định giá trị của r, g, b if (i= 0) begin r = v; g = t; b = p; end; if (i=1) begin r = q; g = v; b = p; end; if (i= 2) begin r = p; g = v; b = t; 207 Đồ họa máy tính end; if (i= 3) begin r = p; g = q; b = v; end; if (i= 4) begin r = t; g = p; b = v; end; if (i=5) begin // case 5: r = v; g = p; b = q; end; End. 2. Giải thuật chuyển đổi từ RGB sang HSV procedure rgb_to_hsv () Begin h: Sắc độ màu [0-360] với màu đỏ tại điểm 0 s: Độ bão hòa [0-1] v: Giá trị của cường độ sáng [0-1] Max: Hàm lấy giá trị maximum Min: Hàm lấy giá trị minimum 208 Đồ họa máy tính //Xác định giá trị cường độ sáng rc = r / 255.0; gc =g / 255.0; bc = b / 255.0; max = MAX(rc, MAX(gc, bc)); min = MIN(rc, MIN(gc, bc)); delta = max - min; //xác định giá trị cường độ sáng V=max; //Xác định độ bão hòa if (max 0.0) s = delta / max; else s = 0.0; //xác định sắc độ màu if (s = 0.0) begin h = 0.0; end; else begin // Màu nằm trong khoảng giữa vàng và đỏ tía(magenta) if (rc = max) h = (gc - bc) / delta; else //Màu nằm trong khoảng giữa xanh tím (cyan) Vàng(yellow) if (gc = max) h = 2 + (bc - rc) / delta; 209 Đồ họa máy tính else //Màu nằm trong khoảng giữa đỏ tươi (magenta) và xanh ngọc(cyan) if (bc = max) begin h = 4 + (rc - gc) / delta; h=60*h; end; // Các loại giá trị âm if (h < 0)h += 360.0; end; End. 3. Giải thuật chuyển đổi từ HLS sang RGB procedure HSL2RGB(real h, sl, l) Begin real v; real r, g, b; h = h/360; r = l; // default to gray g = l; b = l; v = (l <= 0.5) ? (l * (1.0 + sl)) : (l + sl - l * sl); if (v > 0) begin real m; real sv; integer sextant; real fract, vsf, mid1, mid2; 210 Đồ họa máy tính m = l + l - v; sv = (v - m) / v; h *= 6.0; sextant = (int)h; fract = h - sextant; vsf = v * sv * fract; mid1 = m + vsf; mid2 = v - vsf; switch (sextant) begin case 0: r = v; g = mid1; b = m; break; case 1: r = mid2; g = v; b = m; break; case 2: r = m; g = v; b = mid1; break; case 3: r = m; g = mid2; b = v; 211 Đồ họa máy tính break; case 4: r = mid1; g = m; b = v; break; case 5: r = v; g = m; b = mid2; break; end; end; r = r*255; g = g*255; b = b*255 ; write("HSL to RGB\nR = ",r) ; write(" G = ",g); write(" B = ",b); End. 4. Giải thuật chuyển đổi từ RGB sang HLS procedure RGB2HSL(real R, G, B) Begin real r = R / 255.0; real g = G / 255.0; real b = B / 255.0; real v,m,vm; real r2, g2, b2; real h,s,l; 212 Đồ họa máy tính h = 0; s = 0; l = 0; v = MAX(r,g); v = MAX(v, b); m = MIN(r, g); m = MIN(m, b); l = (m + v) / 2.0; if (l <= 0.0)return; vm = v - m; s = vm; if (s > 0.0) s /= (l <= 0.5) ? (v + m) : (2.0 - v - m); else return; r2 = (v - r) / vm; g2 = (v - g) / vm; b2 = (v - b) / vm; if (r = v) begin h = (g = m ? 5.0 + b2 : 1.0 - g2); end; else if (g = v) begin h = (b = m ? 1.0 + r2 : 3.0 - b2); end; else begin h = (r = m ? 3.0 + g2 : 5.0 - r2); end; 213 Đồ họa máy tính h /= 6.0; write("RGB to HSL\nH= ",h *360); write(" S = ",s); write(" L = ",l); End. 214 Đồ họa máy tính CÂU HỎI VÀ BÀI TẬP CHƢƠNG 6 Chọn một phƣơng án đúng cho mỗi câu hỏi sau: 1. Về yếu tố cảm nhận sinh lý, chức năng của Hue - sắc màu là: [a]--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. [b]--Phân biệt sự khác nhau giữa các màu nhƣ xanh, đỏ, vàng.. [c]--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. [d]--Cƣờng độ ánh sáng 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. 2. Về yếu tố cảm nhận sinh lý, chức năng của Saturation - độ bão hoà là: [a]--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. [b]--Phân biệt sự khác nhau giữa các màu nhƣ xanh, đỏ, vàng.. [c]--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. [d]--Cƣờng độ ánh sáng 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. 3. Về yếu tố cảm nhận sinh lý, chức năng của Lightness - độ sáng là: [a]--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. [b]--Phân biệt sự khác nhau giữa các màu nhƣ xanh, đỏ, vàng.. [c]--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. [d]--Cƣờng độ ánh sáng 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. 4. Về yếu tố cảm nhận sinh lý, chức năng của Brightness - độ phát sáng là: [a]--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. [b]--Phân biệt sự khác nhau giữa các màu nhƣ xanh, đỏ, vàng.. [c]--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. [d]--Cƣờng độ ánh sáng 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. 5. Ánh sáng đơn sắc là: [a]--Không cảm nhận đƣợc sắc màu vàng khi quan sát trên màn hình đen trắng 215 Đồ họa máy tính [b]--Không cảm nhận đƣợc sắc màu đỏ, cam khi quan sát trên màn hình đen trắng [c]--Không cảm nhận đƣợc sắc màu tím khi quan sát trên màn hình đen trắng [d]--Không cảm nhận đƣợc các sắc màu khác nhƣ vàng, đỏ, tím khi quan sát trên màn hình đen trắng 6. Nguyên lý pha màu với các sắc màu cơ bản là: [a]--Trắng, đen, vàng [b]--Đỏ, lục, lam [c]--Vàng, đỏ, xanh [d]--Đỏ, cam, hồng 7. Ánh sáng là sóng điện từ có bƣớc sóng λ đi từ: [a]--100nm – 200nm [b]--200nm – 500nm [c]--400nm – 700nm [d]--100nm - 10000nm 8. Ánh sáng có thể đƣợc mô tả bằng ba thuật ngữ: [a]--Độ sáng (Lightness) - Sắc độ (Hue) - Độ bão hoà (Saturation) [b]--Độ sáng (Lightness) - Tông màu (tone) - Độ bão hoà (Saturation) [c]--Độ sáng (Lightness) - Sắc độ (Hue) - Tông màu (tone) [d]--Tông màu (tone) - Sắc độ (Hue) - Độ bão hoà (Saturation) 9. Để đo độ sáng thấp nhất (min) và cao nhất (max) của màn hình, ta dùng: [a]--Vôn kế [b]--Áp kế [c]--Nhiệt kế [d]--Phổ kế 10. Cƣờng độ của nguồn sáng sẽ thay đổi trong khoảng từ: [a]--0 đến 1 [b]--0 đến 10 [c]--1 đến 10 [d]--1 đến 100 11. Giá trị gama là số mũ của hàm luỹ thừa, giá trị đó đối với loại phim nhựa 35mm trong phòng tối là: [a]--0 [b]--1 [c]--1,5 [d]—2 216 Đồ họa máy tính 12. Hệ số gama của CRT là loại thiết bị độ sáng phụ thuộc vào ống phóng tia điện tử. Thực tế giá trị gama của CRT dao động từ: [a]--1,1 đến 2,3 [b]--2,1 đến 2,6 [c]--2,3 đến 2,6 [d]--2,2 đến 2,9 13. Mô hình màu RGB là gam màu thể hiện: [a]--Đỏ - Lục - Lam [b]--Đỏ - Vàng - Cam [c]--Trắng - Đen - Tím [d]--Hồng - Trắng – Đen 14. Mô hình không gian màu RGB đƣợc sắp xếp theo khối: [a]--Hình cầu đơn vị [b]--Lập phƣơng đơn vị [c]--Thể tính đơn vị [d]--Tất cả đều sai 15. Đƣờ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: [a]--Các mức độ đen là (0,0,0) và trắng (1,1,1). [b]--Các mức độ đỏ là (0,0,0) và vàng (1,1,1). [c]--Các mức độ trắng là (0,0,0) và đen (1,1,1). [d]--Các mức độ xám với đen là (0,0,0) và trắng (1,1,1). 16. Trong mô hình không gian màu RGB, nếu hai màu tạo ra cùng một giá trị kích thích thì chúng ta: [a]--Có thể phân đƣợc 3 màu chính xác là đỏ, lục, lam [b]--Chỉ có thể phân biệt đƣợc 2 màu là đỏ và lam [c]--Chỉ phân biệt đƣợc một màu duy nhất là đỏ [d]--Không thể phân biệt đƣợc hai màu 17. Mô hình màu CMY là gam màu thể hiện: [a]--Đỏ tƣơi - Lục - Lam [b]--Xanh tím - Đỏ tƣơi - Vàng [c]--Hồng nhạt - Đỏ Sậm - Vàng nhạt [d]--Đỏ Sậm - Vàng nhạt – Tím 18. Mô hình màu CMY là: [a]--Đâ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]--Hệ thống có quy tắc cho việc tạo khoảng màu từ tập các màu cơ bản 217 Đồ họa máy tính [c]--Mô hình kết quả của ánh sáng truyền dẫn - transmitted [d]--Mô hình màu bù sử dụng mực in - printing inks 19. Trong mô hình màu CMY, khi 3 màu có cùng giá trị cho ra: [a]--Màu Trắng [b]--Màu Đen [c]--Màu Xám [d]--Màu Nâu 20. Trong mô hình màu CMY, các giá trị đạt max cho ra: [a]--Màu Trắng [b]--Màu Đen [c]--Màu Xám [d]--Màu Nâu 21. Trong mô hình màu CMY, Red +Cyan ; Green +Magenta ; Blue + Yellow sẽ cho kết quả là: [a]--Màu Trắng [b]--Màu Đen [c]--Màu Xám [d]--Màu Nâu 22. Mô hình màu YIQ là: [a]--Đâ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]--Mô hình màu bù sử dụng mực in - printing inks [c]--Mô hình màu đƣợc ứng dụng trong truyền hình màu băng tần rộng tại Mỹ [d]--Mô hình kết quả của ánh sáng truyền dẫn – transmitted 23. Trong mô hình màu CMY-K(mô hình ứng dụng trong máy in) thì màu trắng là: [a]--(0,0,0) [b]--(0,0,1) [c]--(1,0,0) [d]--(1,1,1) 24. Con ngƣời nhạy cảm với màu: [a]--Đỏ [b]--Lục [c]--Vàng [d]—Lam 25. Phƣơng pháp dựa trên cấu tạo của mắt ngƣời cũng nhƣ nguyên lý thu ảnh của mắt khi nhìn những vùng nhỏ ở khoảng cách xa. Khi đó mắt không thể phân biệt đƣợc các 218 Đồ họa máy tính vật một cách cụ thể mà chỉ ghi nhận cƣờng độ trung bình của vùng ảnh đó. Phƣơng pháp này gọi là: [a]--Phân ngƣỡng (Thread hold) [b]--Dither [c]--Xấp xỉ bán tông (Halftone) [d]--Mẫu tô 27. Trong các mô hình màu sau thì mô hình nào Không định hƣớng phần cứng: [a]--HSV (Hue, Saturation, Value) [b]--RGB (Red, Green, Blue) [c]--CMY (Cyan, Mangenta, Yellow) [d]—YIQ 28. Ta có ba hộp màu nƣớc đỏ (Red), lục (Green) và lam (Blue) đem trộn các màu bão hoà và cân bằng thì thu đƣợc màu: [a]--Đen [b]--Trắng [c]--Đỏ [d]--Chƣa xác định 29. Hệ HSV có H (sắc màu) chạy từ : [a]--0o đến 360o [b]--0o đến 180o [c]--0o đến 90o [d]--90o đến 360o 30. Hệ HSV có S (độ bão hoà) và V (giá tị cƣờng độ ánh sáng) thuộc khoảng : [a]--[0 0,1] [b]--[0 1] [c]--[1 2] [d]--[0 2] 31. Hệ HSV có H (sắc màu) màu đỏ ở : [a]--0o [b]--45o [c]--90o [d]--180o 32. Trong mô hình màu YIQ , các phosphor NTSC RGB chuẩn có các toạ độ sắc phổ là : [a]--R(0 0.1), G (0.2 0.7) và B(0.1 0.8) [b]--R(0.57 0.23), G (0.16 0.81) và B(0.4 0.18) [c]--R(0.67 0.33), G (0.21 0.71) và B(0.14 0.08) 219 Đồ họa máy tính [d]--R(0.78 0.93), G (0.1 0.7) và B(0.4 0.6) Bài tập 1. Xác định giá trị các thành phần màu trong hệ màu RGB của một màu biết rằng trong hệ màu HSV, màu đó có giá trị H = 120, S= 0.5, V = 0.2. 2. Xác định giá trị các thành phần màu trong hệ màu HSV của một màu biết rằng trong hệ màu RGB, màu đó có giá trị R = 255, G= 0, B = 255. 3. Xác định giá trị các thành phần màu trong hệ màu RGB của một màu biết rằng trong hệ màu HSL, màu đó có giá trị H = 300, S= 1, L = 0.5. 4. Xác định giá trị các thành phần màu trong hệ màu HSL của một màu biết rằng trong hệ màu RGB, màu đó có giá trị R = 0, G= 128, B = 0. 5. Xác định giá trị các thành phần màu trong hệ màu RGB của một màu biết rằng trong hệ màu HSV, màu đó có giá trị H = 200, S= 1, V = 0.2. 6. Xác định giá trị các thành phần màu trong hệ màu HSV của một màu biết rằng trong hệ màu RGB, màu đó có giá trị R = 243, G= 243, B = 243. 7. Xác định giá trị các thành phần màu trong hệ màu RGB của một màu biết rằng trong hệ màu HSL, màu đó có giá trị H = 0, S= 1, L = 0.4. 8. Xác định giá trị các thành phần màu trong hệ màu HSL của một màu biết rằng trong hệ màu RGB, màu đó có giá trị R = 153, G= 102, B = 0. Hƣớng dẫn giải bài tập 1. H = H/60 = 2, I = (INT)H = 2, F = H – I = 2-2 = 0 M = V*(1-S) = 0.2 *(1-0.5) = 0.2 * 0.5 = 0.1 N = V*(1- S*F) = 0.2*(1 – 0.5*0) = 0.2 K = V*(1-S*(1-F))=0.2*(1-0.5*(1-0))=0.1 Do I = 2 do đó ta có R ≈ 26, G=51, B ≈ 26 2. H = 300, S = 1, V = 1 3. R = 255, G = 0, B = 255 4. H = 120, S = 1, L ≈ 0.25 5. R ≈ 0, G ≈ 34, B ≈ 51 6. H = 0, S = 0, V ≈ 0.95 7. R = 204, G = 0, B = 0 8. H = 40, S = 1, L ≈ 0.3 220 Đồ họa máy tính TÀI LIỆU THAM KHẢO [1]. Nguyễn Quốc Cƣờng, Hoàng Đức Hải. Đồ hoạ vi tính. NXB giáo dục. 1998. [2]. Lê Tấn Hùng, Huỳnh Quyết Thắng. Kỹ thuật đồ họa. NXB Khoa học và kỹ thuật.2000 [3].Hoàng Kiếm, Dƣơng Anh Đức, Lê Đình Duy, Vũ Hải Quân. Cơ sở đồ họa máy vi tính. Nhà xuất bản Giáo dục.1999 [4]. Phan Hữu Phúc. Cơ sở đồ họa máy vi tính. NXB Giáo dục. 2000. [5]. Francis S. Hill, Jr - Computer Graphics, Macmillan Publishing Company, New York, 1990. [6]. Foley, Van Dam, Feiner and Hughes - Computer Graphics: Principles and Practice, Addison-Wesley Publishing Company, USA 1996. [7]. John R. Rankin - Computer Graphics Software Contruction, Prentice Hall of Australia, 1989. [8]. Harrington – Computer Graphics: A Programming Approach, McGraw-Hill Book Company, Singapore 1986. 221
File đính kèm:
- giao_trinh_do_hoa_may_tinh_phan_2.pdf