Giáo trình thực tại ảo BKHN lession 3:Các giải thuật sinh các thực thể cơ sở

31 219 0
Giáo trình thực tại ảo BKHN lession 3:Các 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

1 Các giải thuật sinh các thực thể cơ sở Le Tan Hung hunglt@it-hut.edu.vn 0913030731 2 Rời rạc hoá điểm ảnh (Scan Conversion rasterization)  Là tiến trình sinh các đối tượng hình học cơ sở bằng phương pháp xấp xỉ dựa trên lưới phân giải của màn hình  Tính chất các đối tượng cần đảm bảo : – smooth – continuous – pass through specified points – uniform brightness – efficient 3 Biểu diễn đoạn thẳng  Biểu diễn tường minh (y-y1)/( x-x1) = ( y2-y1)/( x2-x1)1 y = kx + m – k = (y2-y1)/( x2-x1) – m = y1- kx1 – y = k x  Biểu diễn không tường minh (y2-y1)x - (x2-x1)y + x2y1 - x1y2 = 0 hay rx + sy + t = 0 – s = -(x2-x1 ) – r = (y2-y1) và t = x2y1 - x1y2  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 ) m P(x 1 , y 1 ) P(x 2 , y 2 ) u 4 Sinh đường tròn Scan Converting Circles  Implicit: f(x) = x 2 +y 2 -R 2  Explicit: y = f(x)  Parametric: 22 y R x   cos sin xR yR     If f(x,y) = 0 then it is on the circle. f(x,y) > 0 then it is outside the circle. f(x,y) < 0 then it is inside the circle. Usually, we draw a quarter circle by incrementing x from 0 to R in unit steps and solving for +y for each step. - by stepping the angle from 0 to 90 - avoids large gaps but still insufficient. 5 Thuật toán DDA (Digital Differential Analizer) Giải thuật DDA  Với 0 < k < 1 x i+1 = x i + 1 y i+1 = y i + k với i=1,2,3 Thuậttoán ddaline (x1, y1, x2, y2) x1, y1, x2, y2 : tọa độ 2 điểm đầu cuối k : hệ số góc x,y,m :biến begin m =(x2-x1)/(y2-y1); x = x1; y = y1; k = 1/m; putpixel(x,y); while x<x2 begin x = x+1; y = y+k; putpixel(x,round(y)); end; end; Giải thuật thông thường DrawLine(int x1,int y1, int x2,int y2, int color) { float y; int x; for (x=x1; x<=x2; x++) { y = y1 + (x-x1)*(y2-y1)/(x2-x1) WritePixel(x, Round(y), color ); }} 6 Giải thuật Bresenham  1960 Bresenham thuộc IBM  điểm gần với đường thẳng dựa trên độ phân giai hưu hạn  loại bỏ được các phép toán chia và phép toán làm tròn như ta đã thấy trong gỉai thuật DDA  Xét đoạn thẳng với 0 < k < 1 0 1 2 0 1 2 d2 d1 7 Giải thuật Bresenham d 2 = y - yi = k(xi +1) + b - yi d 1 = yi+1 - y = yi + 1 - k(xi + 1) - b  If d 1  d 2 => y i+1 = yi + 1 else d 1 > d 2 => y i+1 = yi  D = d 1 - d 2 = -2k(xi + 1) + 2yi - 2b + 1  Pi = xD = x (d 1 - d 2 ) d1 d2 x i x i +1 y i y i +1 8 Pi = -2yxi + 2xyi + c P i+1 - P i = -2y(x i+1 - xi) + 2x(yi +1 - yi)  Nếu Pi  0  yi +1 = yi + 1 Pi +1 = Pi - 2y + 2x  Nếu Pi > 0  yi +1 = yi Pi +1 = Pi - 2y P 1 = x(d 1 - d 2 ) P 1 = -2y + x P > 0 B¾t ®Çu x = x1 ; y = y1; dx = x2 - x1; dy = y2 - y1; P = dx - 2dy; Putpixel (x ,y); x < x2 KÕt thóc P = P - 2dy P = P - 2dy + 2dx y = y + 1 yes no No yes x = x + 1 Giải thuật Bresenham 9 y i+1 M ( x i , y i ) x i x i+1 Giải thuật trung điểm-Midpoint  Jack Bresenham 1965 / Pitteway 1967  VanAken áp dụng cho việc sinh các đường thẳng và đường tròn 1985  Các công thức đơn giản hơn, tạo được các điểm tương tự như với Bresenham  d = F (xi + 1, yi + 1/2) là trung điểm của đoạn AB  Việc so sánh, hay kiểm tra M sẽ được thay bằng việc xét giá trị d. – Nếu d > 0 điểm B được chọn, y i+1 = y i – nếu d < 0 điểm A được chọn.  y i+1 = y i + 1 – Trong trường hợp d = 0 chúng ta có thể chọn điểm bất kỳ hoặc A, hoặc B. A M B 10 Bresenham’s Algorithm: Midpoint Algorithm  Sử dụng phương pháp biểu diễn không tường minh  Tại mỗi trung điểm của đoạn thẳng giá trị được tính là:  Chúng ta gọi d i là biến quyết định của bước thứ i 0 cbyax       iiii iiii iiii yxcbyax yxcbyax yxcbyax ,0 ,0 ,0    on line above line below line   cybxad iii         2 1 1 [...]... hỏi lưu trữ thêm  Kích thước không dổi Phức tạp (Tính toán phương trình) Lưu trữ gọn nhẹ Các phép biến đổi dựa vào các công thức biến đổi Kích thước phụ thuôc vào môi trường ( ko có kích thước cố định) Giải thuật đường quét sinh đa giác Polygon Scan Conversion   Tồn tại rất nhiều giải thuật sinh đa giác Mỗi giải thuật phục vụ cho 1 loại đa giác nhất định: – – some algorithms allow triangular polygons... Dùng giải thuật (trung điểm) để xác định các điểm biên cho mỗi đa giác theo thứ tự tăng của x Các diểm phải: – –  29 Không bị chia sẻ bởi các đa giác lân cận Các đa giác chỉ toàn các điểm cạnh( điểm biên) Đảm bảo các đa giác chia sẻ điểm biên mà không chia sẻ các điểm ảnh bên trong của mình Polygon Scan Conversion  Thủ tục chung: – – –  Xác định giao của đường thẳng quét với cạnh đa giác Sắp xếp các. .. - dx x=x+1 yes d = d + dy yes x < x2 no K Õt thóc y=y+1 Midpoint Circle Algorithm    Sử dụng phương pháp biểu diễn không tường minh trong giải thuật Thực hiện giải thuật trên 1/8 đường tròn và lấy đối xứng xho các góc còn lại Với di là giá trị của đường tròn tại một điểm bất kỳ ta có  0 if  xi , yi  is inside circle  d i   0 if  xi , yi  is on circle  0 if  x , y  is outside circle... Khoảng cách giữa các ký tự Charlocation Table [128]; } fontcache 24 Ký tự vector    25 Xây dựng theo phương pháp định nghĩa các ký tự bởi đường cong mềm bao ngoài của chúng Tốn kém nhất về mặt tính toán Chất lượngcao So sánh      26 Đơ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 dổi Phức tạp (Tính toán phương trình) ... selfintersecting and have no holes triangular 27 convex non-convex self-intersecting religious Polygon Scan Conversion    28 Polygon scan conversion là giải thuật chung kinh điển cho các loại khác nhau Cho mỗi đoạn thẳng quét, chúng ta xác định các cạnh của đa giác cắt đoạn thẳng compute spans representing the interior portions of the polygons along this scan-line and fill the associated pixels This... DeltaSE = b2(2xp+2)+a2(-2yp+3) Stop in region 2 when the y value is zero Ký tự Bitmap    Trên cơ sỏ định nghĩa mỗi ký tự với một font chư cho trước là một bitmap chữ nhật nhỏ Font/typeface: set of character shapes fontcache –  Dạng cơ bản –  (thường N, nghiêng I, đậm B, nghiêng đậm B+I) Thuộc tính – 23 các ký tự theo chuỗi liên tiếp nhau trong bộ nhớ Also colour, size, spacing and orientation ab... d = 2*dy-dx initialisation x = x_start y = y_start while x < x_end if d . kỳ hoặc A, hoặc B. A M B 10 Bresenham’s Algorithm: Midpoint Algorithm  Sử dụng phương pháp biểu diễn không tường minh  Tại mỗi trung điểm của đoạn thẳng giá trị được tính. 1 Các giải thuật sinh các thực thể cơ sở Le Tan Hung hunglt@it-hut.edu.vn 0913030731 2 Rời rạc hoá điểm ảnh (Scan Conversion rasterization)  Là tiến trình sinh các đối tượng hình. line above line below line   cybxad iii         2 1 1 11 Bresenham’s Algorithm: Midpoint Algorithm  If d i > 0 then chọn điểm A  trung điểm tiếp theo sẽ có dạng:   bad cybxadyx i iiiii                  2 3 2 2 3 ,2 1 12

Ngày đăng: 24/10/2014, 01:37

Từ khóa liên quan

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

Tài liệu liên quan