290 likes | 459 Views
Chương 2 – Một số khái niệm cơ bản. Không gian màu RGB. Màu có được bằng cách trộn ba màu cơ bản là Red, Green, Blue. Nhắc lại: phần cấu trúc và hoạt động của màn hình CRT Đặc tả màu: mỗi thành phần màu tương ứng với 1 số từ 0 đến giá trị lớn nhất (tùy theo số bit cho mỗi điểm ảnh)
E N D
Không gian màu RGB • Màu có được bằng cách trộn ba màu cơ bản là Red, Green, Blue. Nhắc lại: phần cấu trúc và hoạt động của màn hình CRT • Đặc tả màu: mỗi thành phần màu tương ứng với 1 số từ 0 đến giá trị lớn nhất (tùy theo số bit cho mỗi điểm ảnh) • Các màu quen thuộc: black = (0, 0, 0) red = (255, 0, 0) green = (0, 255, 0) blue = (0, 0, 255) yellow = (255, 255, 0) white = (255, 255, 255) Khoa CNTT - ĐH BK TpHCM
Không gian màu RGB (tt.) Khoa CNTT - ĐH BK TpHCM
Điểm ảnh (Pixel) • Giá trị lớn nhất cho mỗi thành phần màu là 255 dùng 8 bit để đặt tả mỗi thành phần dùng 24 bit để đặt tả màu cho mỗi pixel • Hệ màu RGB được sử dụng rộng rãi trong các hệ thống đồ họa hiện nay Khoa CNTT - ĐH BK TpHCM
Kiểu dữ liệu cho điểm ảnh • Xác định bởi 2 tọa độ (x, y) type point = record x, y : real end; Khoa CNTT - ĐH BK TpHCM
Thiết lập 1 điểm ảnh • VB: PSet (x, y), colorx, y: integercolor: QBColor(integer): màu lấy từ bảng màu • Pascal: SetPixel(x, y, color) Khoa CNTT - ĐH BK TpHCM
Lấy thông tin về điểm ảnh • VB: Point(x, y) RGB values • Pascal: GetPixel(x, y) RGB values Khoa CNTT - ĐH BK TpHCM
Định dạng file ảnh • Ảnh được lưu xuống tập tin ở các định dạng khác nhau: • BMP: dữ liệu được lưu trữ trực tiếp không biến đổi, giống như trên bộ nhớ • JPG, TIF, …: các dữ liệu được nén có mất mát • Useful link: Khoa CNTT - ĐH BK TpHCM
Device Independent Bitmap • Định dạng ảnh không phụ thuộc vào thiết bị hiển thị và định dạng lưu trữ Khoa CNTT - ĐH BK TpHCM
Offscreen bitmap • Các dữ liệu chuẩn bị hiển thị có thể thao tác trên các “bộ đệm giả” rồi xuất kết quả ra màn hình. Các bộ đệm giả có thể nằm trên: • Bộ nhớ chính, xuất ra bằng lệnh chép một khối bộ nhớ đã thao tác ra bộ đệm hiển thị. • Bộ đệm khung không tích cực (non-active frame buffer), hiển thị bằng lệnh lật (flip) trang (chuyển địa chỉ bắt đầu của bộ đệm khung tích cực) Khoa CNTT - ĐH BK TpHCM
Các đối tượng hình học cơ bản • Điểm • Đoạn thẳng • Chuỗi đoạn thẳng (polyline) • Đa giác (polygon) • Kí tự (text) Khoa CNTT - ĐH BK TpHCM
Đoạn thẳng • Xác định bởi 2 điểm đầu là 2 điểm ảnh (xa , ya) và (xb , yb), với các toạ độ là đều là số nguyên. • Biểu diễn tường minh của đường thẳng: y = m(x – xa) + ya • Hệ số góc: m = y / x với y = yb – ya x = xb – xa Khoa CNTT - ĐH BK TpHCM
Ñoaïn thaúng lyù töôûngï Si y* yi- 1 Ti xi- 1 xi Biểu diễn đoạn thẳng trên màn hình • Xác định tập các điểm ảnh biểu diễn “tốt nhất” cho đoạn thẳng. • Xét trường hợp: xa < xb và 0 < m < 1 • Sinh các điểm ảnh theo phương pháp tăng dần x từ xađến xb Khoa CNTT - ĐH BK TpHCM
Quy tắc chọn điểm ảnh xấp xỉ • Định nghĩa sai số: e(Ti) = y* - yi - 1 e(Si) = (yi - 1 + 1) - y* • Nếu x = xathì y = ya • Nếu xa < x < xb: tính y*, e(Ti), e(Si), rồi xét: Nếu e(Ti) < e(Si) thì chọn Ti, ngược lại chọn Si • Nếu x = xbthì y = yb • Vẽ đoạn thẳng bằng lệnh: • Giải thuật chỉ tính toán dựa trên số nguyên: giải thuật Bresenham (xem chương 9) Khoa CNTT - ĐH BK TpHCM
y 1. x 1. Chuỗi đoạn thẳng (polyline) • Chuỗi các đoạn thẳng nối tiếp nhau. • Lưu trữ chuỗi đoạn thẳng: lưu tập các điểm ảnh (đỉnh - vertex), bằng dãy hay danh sách liên kết. • Vẽ chuỗi đoạn thẳng: vẽ tuần tự các đoạn thẳng nối các đỉnh Khoa CNTT - ĐH BK TpHCM
Đa giác (polygon) • Bao gồm tập đỉnh (vertex) và tập cạnh (edge) • Là chuỗi đoạn thẳng kín (trùng các đỉnh đầu và đuôi). • Phân loại: • Lồi: • Lõm: • Chéo: có ít nhất 1 cặp cạnh cắt nhau • Các bài toán: • Xác định loại (lồi, lõm, chéo) • Vẽ • Tô màu Khoa CNTT - ĐH BK TpHCM
Các hình 2D thông dụng • Hình chữ nhật (rectangle) • Ellipse Khoa CNTT - ĐH BK TpHCM
Hình chữ nhật • 4 đỉnh, các góc trong là góc vuông, cạnh song song với trục • Lưu trữ: 4 giá trị hay 2 đỉnh chéo (thường là top-left, right-bottom) • Trường hợp đặc biệt: hình vuông (square) • Cấu trúc có sẵn: Rect, trong các ngôn ngữ thông dụng • Vẽ hình chữ nhật: VB: Line (x1, y1) – (x2, y2), [color], [B][F]Pascal: Rectangle(left, top, right, bottom) Khoa CNTT - ĐH BK TpHCM
Ellipse • Lưu trữ: tâm và 2 bán kính theo 2 chiều x và y, hoặc hình chữ nhật bao, trục đối xứng của ellipse song song với trục tọa độ • Trường hợp đặc biệt: hình tròn (circle) có 2 bán kính bằng nhau. • Vẽ ellipse:VB: Circle (x, y), radius, [color], [start], [end], [aspect] aspect: vertical dim./horizontal dim.Pascal: Ellipse(left, top, right, bottom) • Vẽ ellipse nhanh dựa trên phép tính nguyên: giải thuật Michener (xem chương 9) Khoa CNTT - ĐH BK TpHCM
Kí tự (text) • Xác định bởi mã kí tự trên bảng mã và font • Bảng mã: • ASCII: 7 bit – 128 kí tự, 0-40 cho các kí tự điều khiển • ASCII mở rộng: 8 bit – 256 kí tự • Unicode: 2 byte – 256 bit • Hai dạng font: • Dạng bitmap: mỗi bitmap cho từng kí tự, mỗi bộ bitmap cho từng kích cở (size) • Dạng truetype: lưu trữ bởi tập lệnh postcript Khoa CNTT - ĐH BK TpHCM
Kí tự (tt.) • Tính chất các dạng font: • Dạng bitmap: dùng cho các ứng dụng đơn giản • Dạng truetype: • Font được điều chỉnh nhỏ thêm cho từng kích thước • Cần được chuyển sang dạng bitmap (một cách tự động) khi dùng • Xuất 1 chuỗi kí tự ra màn hình:VB: Print Msg tại tọa độ CurrentX, CurrentYPascal: Text(x, y, string) Khoa CNTT - ĐH BK TpHCM
Hệ thống thực và tọa độ thực • Hệ thống thực: bao gồm các đối tượng hình học trong toạ độ thực. • Đối tượng hình học: • Biểu diễn bằng các mô hình hình học (geometric model) • Có các hành vi riêng • Toạ độ thực (world coordinate system): • Điểm trong mặt phẳng có tọa độ (x, y) • Đơn vị đo thực tế: mm, m, … Khoa CNTT - ĐH BK TpHCM
Thể hiện thế giới thực trên máy tính • Chuyển tọa độ thực sang tọa độ tương đối trên máy tính • Các đối tượng hình học thực được biểu diễn bằng các đối tượng hình học được cung cấp bởi máy tính • Không gian hiển thị tại 1 thời điểm của máy tính có hạn chỉ 1 phần của thế giới thực được hiển thị tại 1 thời điểm Khoa CNTT - ĐH BK TpHCM
Cöûa soå Phép nhìn (viewing) • Quá trình vẽ lại trên máy tính một phần thế giới thực được nhìn thấy, được xác định bởi: • Cửa sổ (window): phần của thế giới thực cần được vẽ trên máy tính • Vùng nhìn (viewport): phần trên màn hình mà cửa sổ được ánh xạ lên. Vùng nhìn có thể chiếm toàn bộ màn hình. Heä toïa ñoä thöïc Màn hình High Vuøng nhìn Width Khoa CNTT - ĐH BK TpHCM
Đặc tính của cửa sổ và vùng nhìn • Cửa sổ và vùng nhìn đều là hình chữ nhật. • Kích thước và vị trí của cửa sổ là tùy ý. • Vùng nhìn phải nằm trong giới hạn của màn hình. • Hệ số tỷ lệ chiều ngang trên chiều dọc của cửa sổ và vùng nhìn không cần phải bằng nhau. Heä toïa ñoä thöïc Màn hình High Cöûa soå Vuøng nhìn Width Khoa CNTT - ĐH BK TpHCM
Hiện thực phép nhìn • Ánh xạ các đối tượng từ cửa sổ lên vùng nhìn. • Chỉ có một phần của đối tượng trong thế giới thực trong cửa sổ mới nhìn thấy cần xén (clipping) đi các phần nằm ngoài cửa sổ Xem các giải thuật chi tiết ở chương 4 Window Khoa CNTT - ĐH BK TpHCM
Khái niệm cửa sổ trong hệ điều hành Windows • Mỗi quá trình quản lý duy nhất 1 cửa sổ đang được tích cực (active) tại 1 thời điểm cửa sổ tích cực này được xem là “màn hình” luận lý dùng để hiển thị cho quá trình • Thay đổi kích thước cửa sổ tích cực kích thước màn hình luận lý thay đổi theo Khoa CNTT - ĐH BK TpHCM
Tọa độ qui chuẩn • Cần hiển thị trên nhiều màn hình có kích thước khác nhau: Màn hình Màn hình Heä toïa ñoä thöïc High 1 Cöûa soå Vuøng nhìn Vuøng nhìn 0 Width 1 • Giảm phụ thuộc vào thiết bị hiển thị • Linh động hơn cho môi trường nhiều người sử dụng Khoa CNTT - ĐH BK TpHCM
Tóm tắt • Không gian màu RGB • Các đối tượng cơ bản và cách hiển thị: • Điểm ảnh • Ảnh • Đoạn thẳng, chuỗi đoạn thẳng, đa giác • Các hình 2D cơ bản: hình chữ nhật, hình vuông, hình tròn, ellipse • Các hệ thống tọa độ: thực, màn hình, qui chuẩn Khoa CNTT - ĐH BK TpHCM