Bài giảng Công nghệ đồ họa và hiện thực ảo - Bài 3: Giải thuật sinh các thực thể cơ sở

32 106 0
Bài giảng Công nghệ đồ họa và hiện thực ảo - Bài 3: Giải thuật sinh các thực thể cơ sở

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Bài giảng Công nghệ đồ họa và hiện thực ảo - Bài 3: Giải thuật sinh các thực thể cơ sở sau đây bao gồm những nội dung về biểu diễn đoạn thẳng (thuật toán DDA, giải thuật Bresenham, giải thuật trung điểm); biểu diễn đường tròn, biểu diễn đường ê-líp, giải thuật sinh ký tự.

Bài GIẢI THUẬT SINH CÁC THỰC THỂ CƠ SỞ Trịnh Thành Trung trungtt@soict.hust.edu.vn NỘI DUNG Biểu diễn đoạn thẳng a) Thuật toán DDA b) Giải thuật Bresenham c) Giải thuật trung điểm Biểu diễn đường tròn Biểu diễn đường ê-líp Giải thuật sinh ký tự - Rời rạc hóa điểm ảnh • Là tiến trình sinh đối tượng hình học sở phương pháp xấp xỉ dựa lưới phân giải hình • Tính chất đối tượng cần đảm bảo : – mượt - smooth – liên tục - continuous – qua điểm xác định – độ sáng đồng – hiệu - efficient BIỂU DIỄN ĐOẠN THẲNG - •Biểu diễn tường minh (y-y1)/( x-x1) = ( y2-y1)/( x2-x1) y = kx + m – k = (y2-y1)/( x2-x1) – m = y1- kx1 – y = k x P(x2 , y2) u P(x1, y1) m Biểu diễn đoạn thẳng •Biểu diễn không tường minh (y2-y1)x - (x2-x1)y + x2y1 - x1y2 = hay rx + sy + t = P(x2 , y2) – s = -(x2-x1 ) – r = (y2-y1) t = x2y1 - x1y2 u P(x1, y1) m Biểu diễn đoạn thẳng •Biểu diễn tham biến P(u) = P1 + u(P2 - P1) u [0,1] X = x1 + u( x2 - x1 ) Y = y1 + u( y2 - y1 ) P(x2 , y2) u P(x1, y1) m Biểu diễn đoạn thẳng Giải thuật thông thường Giải thuật DDA Với < k < xi+1 = xi + yi+1 = yi + k với i=1,2,3 DrawLine(int x1,int y1, int x2,int y2, int color) { float y; int x; for (x=x1; x d2 => yi+1 = yi D = d1 - d2 = -2k(xi + 1) + 2yi - 2b + Pi = xD = x (d1 - d2) Giải thuật Bresenham 10 BIỂU DIỄN ĐƯỜNG TRỊN VÀ ĐƯỜNG Ê-LÍP - Giải thuật trung điểm cho đường trịn • Sử dụng phương pháp biểu diễn không tường minh giải thuật x  x 2   y  y 2  r  c c • Thực giải thuật 1/8 đường tròn lấy đối xứng xho góc cịn lại • Với di giá trị đường trịn điểm ta có  if  xi , yi  is inside circle  d i   if  xi , yi  is on circle  if  x , y  is outside circle i i  19 Giải thuật trung điểm cho đường tròn d = 1-r initialisation x = y = r stop at diagonal  end of octant while y < x if d < then d = d+2*x+3 choose A x = x+1 else d = d+2*(x-y)+5 x = x+1 choose B y = y-1 endif SetPixel(cx+x,cy+y) endwhile Translate to the circle center 20 Giải thuật trung điểm cho đường ê-líp • Tương tự hình trịn • Áp dụng giải thuật cho ¼ đường ê-líp, sau lấy đối xứng cho vị trí cịn lại • Phương trình đường ê-líp F ( x, y)  b2 x  a y  a 2b2  – 2a: đường kính ngang – 2b: đường kính dọc 21 BIỂU DIỄN ĐA GIÁC - Giải thuật đường quét sinh đa giác • Tồn nhiều giải thuật sinh đa giác • Mỗi giải thuật phục vụ cho loại đa giác định: • Một số giải thuật sử dụng với tam giác • Một số giải thuật địi hỏi đa giác lồi, khơng tự cắt khơng có lỗ hổng bên 23 Giải thuật đường quét sinh đa giác • Polygon scan conversion giải thuật chung kinh điển cho loại khác • Cho đoạn thẳng quét, xác định cạnh đa giác cắt đoạn thẳng 24 Giải thuật đường quét sinh đa giác • Dùng giải thuật (trung điểm) để xác định điểm biên cho đa giác theo thứ tự tăng x • Các điểm phải: – Khơng bị chia sẻ đa giác lân cận – Các đa giác tồn điểm cạnh (điểm biên) • Đảm bảo đa giác chia sẻ điểm biên mà không chia sẻ điểm ảnh bên 25 Giải thuật đường quét sinh đa giác • Thủ tục chung: – Xác định giao đường thẳng quét với cạnh đa giác – Sắp xếp giao điểm theo mức độ tăng dần x value – Điền điểm ảnh vào cặp điểm x 26 Giải thuật đường quét sinh đa giác integer x value is on right = exterior horizontal edge removed rounded down for A rounded up for B ymax not included 27 BIỂU DIỄN KÝ TỰ - Giải thuật sinh ký tự • Trên sỏ định nghĩa ký tự với font chư cho trước bitmap chữ nhật nhỏ • Font/typeface: set of character shapes • fontcache – ký tự theo chuỗi liên tiếp nhớ • Dạng – (thường N, nghiêng I, đậm B, nghiêng đậm B+I) • Thuộc tính – Also colour, size, spacing and orientation ab 29 Typedef struct { int leftx, int width; } Char location; //Vị trí Typedef struct { CacheId; Heiglit; // Độ rộng chữ CharSpace; // Khoảng cách // ký tự Charlocation Table [128]; } fontcache Cấu trúc font chữ 30 Ký tự vector • Xây dựng theo phương pháp định nghĩa ký tự đường cong mềm bao ngồi chúng • Tốn mặt tính tốn • Chất lượng cao 31 So sánh • Đơn giản trơng việc sinh ký tự (copypixel) • Lưu trữ lớn • Các phép biến đổi (I,B, scale) địi hỏi lưu trữ thêm • Kích thước khơng đổi • Phức tạp (Tính tốn phương trình) • Lưu trữ gọn nhẹ • Các phép biến đổi dựa vào cơng thức biến đổi • Kích thước phụ thc vào mơi trường ( khơng có kích thước cố định) 32 ... đoạn thẳng a) Thuật toán DDA b) Giải thuật Bresenham c) Giải thuật trung điểm Biểu diễn đường trịn Biểu diễn đường ê-líp Giải thuật sinh ký tự - Rời rạc hóa điểm ảnh • Là tiến trình sinh đối tượng... dy - dx 17 BIỂU DIỄN ĐƯỜNG TRỊN VÀ ĐƯỜNG Ê-LÍP - Giải thuật trung điểm cho đường trịn • Sử dụng phương pháp biểu diễn không tường minh giải thuật x  x 2   y  y 2  r  c c • Thực giải thuật. .. + 2yi - 2b + Pi = xD = x (d1 - d2) Gii thut Bresenham 10 Bắt đầu Pi = -2 yxi + 2xyi + c Pi+1 - Pi = -2 y(xi+1 - xi) + 2x(yi+1 - yi) x = x1 ; y = y1; dx = x2 - x1; dy = y2 - y1; P = dx - 2dy;

Ngày đăng: 30/01/2020, 07:08

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan