Đồ họa máy tính Vẽ đường thẳng và đường tròn
lượt xem 16
download
Thuật toán có vẻ ổn với những đường thẳng có hệ số góc nghiêng (slope) bằng 1 hoặc nhỏ hơn, tuy nhiên, nó không tốt cho những đường thẳng với hệ số góc nghiêng lớn hơn 1 – các đường thẳng trông rời rạc – phải thêm các điểm vào các cột thì trông mới ổn. Giải pháp? - sử dụng phương pháp đối xứng.
Bình luận(0) Đăng nhập để gửi bình luận!
Nội dung Text: Đồ họa máy tính Vẽ đường thẳng và đường tròn
- Đồ họa máy tính Vẽ đường thẳng và đường tròn 1 Ma Thị Châu - Bộ môn KHMT 9/19/2011
- Đường thẳng lý tưởng Chúng ta chỉ có thể vẽ xấp xỉ đường thẳng một cách rời rạc Chiếu sáng các điểm gần nhất với đường thẳng thực tế trong trường hợp chỉ có hai cách thể hiện một điểm: Điểm được thắp sáng hoặc không thắp sáng – 2 Ma Thị Châu - Bộ môn KHMT 9/19/2011
- Đường thẳng lý tưởng (tiếp) Trông phải thẳng và liên tục Trong máy tính chỉ có thể được như vậy với các đường – thẳng song song với trục tọa độ hoặc có góc 45o với trục tọa độ Phải đi qua hai điểm đầu và cuối Phải có mật độ và cường độ sáng đều Đều trên một đường thẳng và đều trên tất cả các đường – thẳng Thuật toán vẽ phải hiệu quả và có thể thực hiện nhanh 3 Ma Thị Châu - Bộ môn KHMT 9/19/2011
- Đường thẳng đơn giản Dựa trên phương trình đường thẳng: y = mx + b Cách tiếp cận đơn giản: tăng x, rồi tìm ra y Cần các tính toán số thực 4 Ma Thị Châu - Bộ môn KHMT 9/19/2011
- Thuật toán đó có tốt không? Thuật toán có vẻ ổn với những đường thẳng có hệ số góc nghiêng (slope) bằng 1 hoặc nhỏ hơn, tuy nhiên, nó không tốt cho những đường thẳng với hệ số góc nghiêng lớn hơn 1 – các đường thẳng trông rời rạc – phải thêm các điểm vào các cột thì trông mới ổn. Giải pháp? - sử dụng phương pháp đối xứng. 5 Ma Thị Châu - Bộ môn KHMT 9/19/2011
- Thay đổi thuật toán cho từng góc phần tám (45°) của hệ tọa độ Có thể thay đổi tên của trục tọa độ, HOẶC, tăng theo trục x nếu dy
- Thuật toán điểm giữa: vị trí tương đối giữa điểm và đường thẳng Thuật toán điểm giữa: mid-point algorithm Để cài đặt được thuật toán mới cần kiểm tra xem một điểm nằm ở phía nào của đường thẳng. Viết phương trình đường thẳng: F ( x, y) ax by c 0 • Dễ nhận thấy nếu F0 điểm đó nằm dưới đường thẳng. 7 Ma Thị Châu - Bộ môn KHMT 9/19/2011
- Thuật toán điểm giữa: vị trí tương đối giữa điểm và đường thẳng (tiếp) F ( x, y) ax by c 0 Cần phải tìm các hệ số a,b,c. Xét dạng khác của phương trình đường thẳng: dy y mx b do đó y xb dx Do đó: F ( x, y) dy.x dx. y c 0 8 Ma Thị Châu - Bộ môn KHMT 9/19/2011
- Thuật toán điểm giữa: đại lượng quyết định Tính F tại điểm M Coi đây là đại lượng quyết định 1 d F ( x p 1, y p ) 2 NE M E Điểm trước Các phương án Các phương án cho điểm tiếp theo (xp,yp) cho điểm hiện tại 9 Ma Thị Châu - Bộ môn KHMT 9/19/2011
- Thuật toán điểm giữa: đại lượng quyết định Tính d cho điểm tiếp theo, Quyết định xem điểm E và NE sẽ được chọn : Nếu điểm E được chọn : 1 1 d moi F ( x p 2, y p ) a( x p 2) b( y p ) c 2 2 Xem lại : 1 d cu F ( x p 1, y p ) NE 2 1 a( x p 1) b( y p ) c M 2 d moi d cu a E Do đó : Điểm trước Những lựa Những lựa chọn cho (xp,yp) d cu dy chọn cho điểm tiếp theo điểm hiện tại 10 Ma Thị Châu - Bộ môn KHMT 9/19/2011
- Thuật toán điểm giữa: đại lượng quyết định Nếu điểm NE được chọn : 3 3 F ( x p 2, y p ) a( x p 2) b( y p ) c d moi 2 2 Do đó: M NE d moi d cu a b d moi dy dx E Điểm trước Những lựa Những lựa chọn cho (xp,yp) chọn cho điểm tiếp theo điểm hiện tại 11 Ma Thị Châu - Bộ môn KHMT 9/19/2011
- Thuật toán điểm giữa: tóm tắt Chọn một trong hai điểm tiếp theo dựa trên dấu của đại lượng quyết định. Điểm bắt đầu là (x1,y1). Cần phải tính giá trị ban đầu của đại lượng quyết định d. 12 Ma Thị Châu - Bộ môn KHMT 9/19/2011
- Thuật toán điểm giữa: giá trị ban đầu của d 1 1 d batdau F ( x1 1, y1 ) a( x1 1) b( y1 ) c Điểm bắt đầu (x1,y1) 2 2 b ax1 by1 c a 2 b F ( x1 , y1 ) a 2 Tuy nhiên (x1,y1) là một điểm trên đường thẳng, do đó F(x1,y1) =0 dbatdau dy dx / 2 Nhân đại lượng này với 2 để loại bỏ mẫu số không ảnh hưởng đến dấu. 13 Ma Thị Châu - Bộ môn KHMT 9/19/2011
- Thuật toán điểm giữa: giả code while (x < x2) { void MidpointLine(int x1,y1,x2,y2) if (d
- Thuật toán điểm giữa: vẽ đường tròn Cũng có thể dùng thuật toán điểm giữa để vẽ đường tròn. E M SE Điểm trước Lựa chọn Lựa chọn cho điểm cho điểm tiếp theo hiện tại 15 Ma Thị Châu - Bộ môn KHMT 9/19/2011
- Thuật toán điểm giữa: vẽ đường tròn (tiếp) Phương trình đường thẳng đường tròn: f ( x, y) ( x xc ) 2 ( y yc ) 2 r 2 Neu SE duoc chon d moi d cu (2 x p 2 y p 5) Neu E duoc chon d moi d cu (2 x p 3) 16 Ma Thị Châu - Bộ môn KHMT 9/19/2011
- Thuật toán DDA DDA = Digital Differential Analyser (Phân tích vi phân số hóa) Xét đường thẳng theo phương trình tham số theo t: x(t ) x1 t ( x2 x1 ) Start point - ( x1 , y1 ) y (t ) y1 t ( y2 y1 ) End point - ( x2 , y2 ) 17 Ma Thị Châu - Bộ môn KHMT 9/19/2011
- x(t ) x1 t ( x2 x1 ) Thuật toán DDA y (t ) y1 t ( y2 y1 ) Bắt đầu với t = 0 dx xmoi xcu Tại mỗi bước, tăng t một lượng dt dy dt ycu ymoi dt Chọn giá trị thích hợp cho dt Sao cho không bỏ mất điểm nào: Nghĩa là: dx 1 dy và – 1 dt dt Chọn dt là giá trị max của dx và dy 18 Ma Thị Châu - Bộ môn KHMT 9/19/2011
- Thuật toán DDA line(int x1, int y1, int x2, int y2) n - range of t. { float x,y; int dx = x2-x1, dy = y2-y1; int n = max(abs(dx),abs(dy)); float dt = n, dxdt = dx/dt, dydt = dy/dt; x = x1; y = y1; while( n-- ) { point(round(x),round(y)); x += dxdt; y += dydt; } 19 } Ma Thị Châu - Bộ môn KHMT 9/19/2011
- Thuật toán DDA Vẫn còn sử dụng rất nhiều phép toán số thực. 2 phép làm tròn và hai phép cộng số thực. – Liệu có cách nào đơn giản hơn không? Có cách nào mà chúng ta chỉ cần dùng các phép toán số nguyên? Như vậy sẽ có thể cài đặt dễ dàng trên máy tính – hiện thời và có thể chạy rất nhanh. 20 Ma Thị Châu - Bộ môn KHMT 9/19/2011
CÓ THỂ BẠN MUỐN DOWNLOAD
-
Bài giảng Đồ họa máy tính: Thuật toán Bresenham - Vẽ đường thẳng
15 p | 571 | 43
-
Giáo trình Đồ họa máy tính - Học viện Bưu chính Viễn Thông
201 p | 188 | 41
-
Giáo trình Đồ họa máy tính: Phần 1
41 p | 197 | 26
-
Bài giảng Đồ họa máy tính: Các thuật toán mành hóa - Ma Thị Châu
18 p | 223 | 17
-
Bài giảng Đồ họa máy tính: Thuật toán vẽ đường thẳng Bresenham
15 p | 250 | 16
-
Bài giảng Đồ họa máy tính: Phần 1
47 p | 112 | 14
-
Giáo trình Đồ họa máy tính I: Phần 1
82 p | 55 | 11
-
Bài giảng Đồ họa máy tính: Các đối tượng đồ họa cơ sở - TS. Đào Nam Anh
50 p | 100 | 10
-
Giáo trình Kỹ thuật đồ họa máy tính - ĐH Kinh Tế Kỹ Thuật Công Nghiệp
107 p | 55 | 9
-
Giáo trình Kỹ thuật đồ họa máy tính: Phần 1 - Trường ĐH Công nghiệp Quảng Ninh
88 p | 19 | 8
-
Bài giảng Đồ họa máy tính: Mở đầu
8 p | 91 | 8
-
Bài giảng môn học Đồ họa máy tính - ĐH Hàng Hải VN
100 p | 43 | 6
-
Giáo trình Kỹ thuật đồ họa máy tính: Phần 2 - Trường ĐH Công nghiệp Quảng Ninh
72 p | 14 | 6
-
Bài giảng Đồ họa máy tính: Giới thiệu đồ họa 3 chiều - TS. Đào Nam Anh (tt)
54 p | 91 | 6
-
Bài giảng Đồ họa máy tính: Chương 7 - ThS. Trần Thị Minh Hoàn
26 p | 29 | 5
-
Bài giảng Đồ họa máy tính: Các thuật giải vẽ đường thẳng và cong - Ngô Quốc Việt
35 p | 33 | 5
-
Bài giảng Đồ họa máy tính: Vẽ đường thẳng và đường tròn - Ma Thị Châu (2017)
31 p | 29 | 5
-
Bài giảng Đồ họa máy tính: Chương 2 - ThS. Trần Thị Minh Hoàn
39 p | 41 | 4
Chịu trách nhiệm nội dung:
Nguyễn Công Hà - Giám đốc Công ty TNHH TÀI LIỆU TRỰC TUYẾN VI NA
LIÊN HỆ
Địa chỉ: P402, 54A Nơ Trang Long, Phường 14, Q.Bình Thạnh, TP.HCM
Hotline: 093 303 0098
Email: support@tailieu.vn