1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Bài giảng đồ họa máy tính hiển thị đối tượng hai chiều ngô quốc việt

32 9 0

Đ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 ĐỒ HỌA MÁY TÍNH HIỂN THỊ ĐỐI TƯỢNG HAI CHIỀU NGƠ QUỐC VIỆT 2009 Nội dung • • • • • Giới thiệu Một số hệ tọa độ Các thuật giải cắt xén Bài tập Giải đáp thắc mắc Giới thiệu • Hiển thị đối tượng giới thực (hệ tọa độ thực thiết bị • Tăng tốc độ hiển thị cách loại bớt phần khơng nhìn thấy thiết bị hiển thị (có vẽ khơng thấy) Cắt xén hiển thị • Tại cần cắt xén trước hiển thị • Tránh tác vụ khơng cần thiết • Vì đối tượng vector xấp xỉ đa giác thuật giải đưa cắt xén đoạn thẳng Cắt xén hiển thị Cắt xén hiển thị Clipping window (xwmin, ywmax) (xwmax, ywmax) (xwmin, ywmin) (xwmax, ywmin) Thuật giải Cohen-Sutherland Xác định xem cần xén đoạn thẳng xét Xét điều kiện bỏ hết hay giữ ngun khơng bỏ phần Tìm giao điểm đoạn thẳng với vùng nhìn Có thể dùng y = mx + b để thực • Cần xác định cạnh vùng nhìn có giao nhằm loại bớt tính tốn khơng cần thiết • Thuật giải bắt đầu cách phân loại khu vực liên quan đến vùng nhìn Thuật giải Cohen-Sutherland Top-Left Left Bottom-Left Top Inside Bottom TBRL Top-Right Right Bottom-Right Thuật giải Cohen-Sutherland TBRL Bit 1001 1000 1010 0001 0000 0010 0101 0100 0110 Thuật giải Cohen-Sutherland • Kiểm tra quan hệ điểm đầu mút vùng point.region = ((point.x (point.x ((point.y (point.y < > < > viewport.minX) viewport.maxX) viewport.minY) viewport.maxY) ? ? ? ? 0x01 0x02 0x04 0x08 : : 0) | : : 0); • Xét trường hợp hiển nhiên (nằm nằm ngồi vùng nhìn) accept = !(p1.region | p2.region); reject = p1.region & p2.region; 10 Thuật giải Cohen-Sutherland D1 1001 algorithm D1’ 1000 1010 D1’’ A2 A1 0001 0000 0010 C1’ C2 0101 D2’’ 0100 D2’ 0110 D2 18 Thuật giải Cohen-Sutherland (150, 100) (10, 10) Thực thuật giải Cohen-Sutherland với P1 (0, 120) ; P2(130, 5) , vùng nhìn hình 19 Thuật giải Cohen-Sutherland P1=1001, P2=0100 (both 0000) – yes No  ACCEPT & DRAW AND Operation Endpoints after clipping B1  0000 1001 1000 P1’’ B2 = (22,  100) 0100 P2’ = 124, 10) Result 0000 3.1 (not 0000) – no 3.2 (0000) yes 3.2.1choose P2 P1 P1’ 3.2.2 intersection with BOTTOM LEFTboundary TOP boundary boundary m = (5-120)/(130-0) = -0.8846 • y == x1 x y1++(ym(x –y1)/m –x1) where wherey =x 10; 100; = 10; • y = 120 x 10 ++(100-111)/ 130 (10-5)/ -0.8846(10-0) -0.8846 -0.8846 ==111.15 124.35 = 22.44 ==111 =124 22 • P1’ == (124, P1’’ P2’ (10, (22,111) 100) 10) 3.2.3 update region code P2’ P1’ == 0000 P1’’ 1000 0000 (TOP) 3.2.4 repeat step 20 Nhận xét thuật giải Cohen-Sutherland • Số lần cắt tối đa cho đoạn chấp nhận? • Số lần cắt tối đa cho đoạn bị từ chối? Ưu điểm: Dễ cài đặt Dễ kiểm tra trường hợp hiển nhiên Nhược điểm: Tốc độ khơng cao có nhiêu đoạn cắt 21 Thuật giải Liang-Biarsky • Dựa phương trình tham số: x = x1 + u.x y = y1 + u.y 0u1 • Cửa sổ xén biểu diễn bởi: xwmin  x1 + u.x  xwmax ywmin  y1 + u.y  ywmax … hoặc, u pk  qkk = 1, 2, 3, • Với: p1 = - x , p2 = x , p3 = - y , p4 = y , q1 = x1 – xwmin q2 = xwmax- x1 q3 = y1 – yw q4 = ywmax - y1 22 Thuật giải Liang-Biarsky • Clipped line will be: x1’ = x1 + u1 x; y1’ = y1 + u1 y; x2’ = x1 + u2 x; y2’ = y1 + u2 y; u1  u2  • Reject line with pk = and qk < • Calculate uk uk = qk/pk 23 Thuật giải Liang-Biarsky • u1 : maximum value between and u (for pk < 0), where starting value for u1 is (u1 =0) • u2 : minimum value between u and (for pk > 0), where starting value for u2 is (u2 = 1) • Consider our previous example where: xwmin = 0, xwmax = 100 ywmin = 0, ywmax = 50 And the line we want to clip connects P1(10, 10) and P2(110, 40) 24 Thuật giải Liang-Biarsky k pk qk x1 – xwmin -x = -(110-10) = -100 x =110-10=100 xwmax- x1 y1 – yw -y = -(40-10) =-30 y = 40-10=30 yw max - y1 uk = 10-0 = 10 = 100 – 10 = 90 = 10–0 = 10 = 50 – 10 = 40 25 Thuật giải Liang-Biarsky k u1 u1 pk qk x1 – xwmin -x = -(110-10) = -100 x =110-10=100 xwmax- x1 y1 – yw -y = -(40-10) =-30 y = 40-10=30 yw max - y1 uk = 10-0 = 10 = 100 – 10 = 90 Since pk < = 10–0 = 10 = 50 – 10 = 40 26 Thuật giải Liang-Biarsky • u1 : maximum value between and u (for pk < 0)! k u1 u1 pk qk x1 – xwmin -x = -(110-10) = -100 x =110-10=100 xwmax- x1 y1 – yw -y = -(40-10) =-30 y = 40-10=30 yw max - y1 = 10-0 = 10 uk u=10/(-100) =-1/10 We opt u1 =0, = 100 – 10 = 90 = 10–0 = 10 u=10/(-30) =-1/3 = 50 – 10 = 40 27 Thuật giải Liang-Biarsky • u2 : minimum value between u (for pk > 0) and k u2 u2 pk qk x1 – xwmin -x = -(110-10) = -100 x =110-10=100 xwmax- x1 y1 – yw -y = -(40-10) =-30 y = 40-10=30 yw max - y1 = 10-0 = 10 uk u=10/(-100) =-1/10 We opt u1 =0, = 100 – 10 = 90 = 10–0 = 10 u=10/(-30) =-1/3 Since pk > = 50 – 10 = 40 28 Thuật giải Liang-Biarsky • u2 : minimum value between u (for pk > 0) and k u2 u2 pk qk x1 – xwmin -x = -(110-10) = -100 x =110-10=100 xwmax- x1 y1 – yw -y = -(40-10) =-30 y = 40-10=30 yw max - y1 = 10-0 = 10 = 100 – 10 = 90 = 10–0 = 10 = 50 – 10 = 40 uk u=10/(-100) =-1/10 u=90/100 =9/10 We opt u1 =0, We opt u2 = 0.9 u=10/(-30) =-1/3 u=40/30) =4/3 29 Thuật giải Liang-Biarsky • If u1 > u2 then reject line (completely outside clipping window!) • Clipped line will be: x1’ = x1 + u1 x (u1 = 0) = 10 + 0.(100) = 10 y1’ = y1 + u1 y = 10 + 0.(30) = 10 x2’ = x1 + u2 x (u2 = 9/10) = 10 + 0.9(100) = 100 y2’ = y1 + u2 y = 10 + 0.9(30) = 37 30 Bài tập • Làm thêm: thực tay với tham số cho vùng nhìn đoạn khác • Thực hành: cài đặt hai thuật giải CohenSutherland Liang-Biarsky 31 Hỏi đáp 32 ... Cắt xén hiển thị • Tại cần cắt xén trước hiển thị • Tránh tác vụ khơng cần thiết • Vì đối tượng vector xấp xỉ đa giác thuật giải đưa cắt xén đoạn thẳng Cắt xén hiển thị Cắt xén hiển thị Clipping... giải cắt xén Bài tập Giải đáp thắc mắc Giới thiệu • Hiển thị đối tượng giới thực (hệ tọa độ thực thiết bị • Tăng tốc độ hiển thị cách loại bớt phần khơng nhìn thấy thiết bị hiển thị (có vẽ khơng... 0.9(100) = 100 y2’ = y1 + u2 y = 10 + 0.9(30) = 37 30 Bài tập • Làm thêm: thực tay với tham số cho vùng nhìn đoạn khác • Thực hành: cài đặt hai thuật giải CohenSutherland Liang-Biarsky 31 Hỏi đáp

Ngày đăng: 19/12/2021, 22:53

Xem thêm: