Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 56 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
56
Dung lượng
218,01 KB
Nội dung
ChươngChương 2 2 C C á á c thu c thu ậ ậ t to t to á á n đ n đ ồ ồ ho ho ạ ạ c c ơ s ơ s ở ở Giảng viên: Ths.Vũ MinhYến Tổ HTTT- Khoa CNTT N N ộ ộ i dung i dung 2.1. C 2.1. C á á c thu c thu ậ ậ t to t to á á n v n v ẽ ẽ đođo ạ ạ n th n th ẳ ẳ ng ng 2.2. C 2.2. C á á c thu c thu ậ ậ t to t to á á n v n v ẽ ẽ đư đư ờ ờ ng tròn ng tròn 2.3. C 2.3. C á á c thu c thu ậ ậ t to t to á á n v n v ẽ ẽ elip elip 2.4. C 2.4. C á á c thu c thu ậ ậ t to t to á á n clipping n clipping 2.5. C 2.5. C á á c thu c thu ậ ậ t to t to á á n tô m n tô m à à u u 2.1. C 2.1. C á á c thu c thu ậ ậ t to t to á á n v n v ẽ ẽ đođo ạ ạ n th n th ẳ ẳ ng ng Bài toán: Input: Cho đoạn thẳng AB: A(x A ; y A ), B(x B ; y B ). Output: Vẽ đoạn thẳng AB trên màn hình. Giải quyết bài toán Thuậttoán làm tròn số Thuậttoán Bresenham Thu Thu ậ ậ t to t to á á n l n l à à m tròn s m tròn s ố ố Phương trình đường thẳng AB (x A ≠ x B ): Đặt Khi đó phương trình đường thẳng AB: AA AB AB yxx xx yy y +− − − = )( AB AB xx yy m − − = ( ) AA yxxmy + − = Thu Thu ậ ậ t to t to á á n l n l à à m tròn s m tròn s ố ố Chia thành 4 trường hợp: TH1: AB song song với Oy TH2: AB song song với Ox TH3: |m|≤1 TH4: |m|>1 m=1 m= - 1 (1) y O x (4) (3) (3) (2) (4) Thu Thu ậ ậ t to t to á á n l n l à à m tròn s m tròn s ố ố TH1: x A =x B (giả sử y A < y B ) Bước 1: x=x A ; y=y A ; Bước 2: Vẽ điểm (x; y); Bước 3: y=y+1; Bước 4: Nếu y<=y B thì: Bước 2; Bước 5: Kết thúc. A y O x B x A =x B y A y B Thu Thu ậ ậ t to t to á á n l n l à à m tròn s m tròn s ố ố TH2 TH2: y A =y B (Tương tự TH1) (Giả sử x A < x B ) Bước 1: x=x A ; y=y A ; Bước 2: Vẽ điểm (x; y); Bước 3: x=x+1; Bước 4: Nếu x<=xB thì: Bước 2; Bước 5: Kết thúc. A y O B x A y A =y B x B Thu Thu ậ ậ t to t to á á n l n l à à m tròn s m tròn s ố ố TH3 TH3: |m| ≤ 1 Bước 1: Nếu x A > x B thì: Hoán đổi vị trí A,B (Đảm bảo x A < x B ) Bước 2: x=x A ; y=y A ; Bước 3: Vẽ điểm (x; y); Bước 4: x=x+1; y=Round(m(x-x A )+y A ); Bước 5: Nếu x≤ x B thì: Bước 3; Bước 6: Kết thúc; m=1 m= - 1 y O x A B x A x B Thu Thu ậ ậ t to t to á á n l n l à à m tròn s m tròn s ố ố TH4 TH4: |m| > 1 tương tự TH3 khi đổi vai trò x, y. Bước 1: Nếu y A > y B thì: Hoán đổi vị trí A,B (Đảm bảo y A < y B ) Bước 2: x=x A ; y=y A ; Bước 3: Vẽ điểm (x; y); Bước 4: y=y+1; x=Round(1/m(y-y A )+x A ); Bước 5: Nếu y≤ y B thì: Bước 2; Bước 6: Kết thúc; m=1 m= - 1 y O x A B y A y B Thu Thu ậ ậ t to t to á á n Breseham n Breseham TH1 x A =x B , TH2: y A =y B : giống phương pháp làm tròn số. Còn lại: chia làm 4 trường hợp TH3: 0 < m ≤ 1 TH4: -1 ≤ m <0 TH5: m > 1 TH6: m < -1 m=1 (3) (4) (5) (6) O x y [...]... M6 M5 M4 2.2 Các thu t toán v ư ng tròn Bài toán: Input: Cho tâm O(0,0), bán kính r Output: V ư ng tròn tâm O, bán kính r Gi i quy t bài toán: Thu t toán làm tròn s Thu t toán x p x Thu t toán Bresenham Thu t toán làm tròn s Theo phương trình is : Cung AB: y = r 2 − x 2 , x ∈ 0; r / 2 Xét trên cung AB: n u ∆x=1 thì |∆y|≤1 nên l y cơ s theo x Thu t toán: [ y A ] Bư c 1: x=0; y=r; Bư c 2: V 8 i m: M1(x,y),... ∆x=1 ⇒ ∆y≤1 ⇒ L y cơ s theo x Cung MB: ∆x=1 ⇒ ∆y≥1 ⇒ L y cơ s theo y 2.3 Các thu t toán v elip Thu t toán làm tròn s : A Tính trên cung AM: Bư Bư Bư Bư Bư c 1: x=0; y=b; c 2: V 4 i m 2 2 c 3: x=x+1; y = (b / a ) a − x ; c 4: N u y≥ xb2/a2 thì: Bư c 2; c 5: K t thúc GradF(M) M O Tính trên cung MB: tương t như tính trên cung AM khi i vai trò x và y B 2.3 Các thu t toán v elip Thu t toán Bresenham: (xét... + 1; y = yi i +1 yi − 1 xi ư ng tròn) xi+1 d1 ≤ d 2 d1 > d 2 d2≈ yi y ≈d1 x 2.3 Các thu t toán v elip Thu t toán Vanaken: 2.4 Các thu t toán clipping Bài toán: y Input: Cho c a s : (x1; y1), (x2; y2) Cho o n th ng AB: (xA;yA), (xB; yB) Output: Hi n th ph n o n th ng AB trong c a s O x Thu t toán Cohen-Surtheland Xét i m P(x; y): Quy ư c: KOD(P)=b4b3b2b1 (bi={0;1}) b1=1: n b2=1: n b3=1:...Thu t toán Breseham TH3: 0 < m ≤ 1 TH3 O(0,0) xi xi+1=xi+1 yi d2 yi+1= ? y d1 x Thu t toán Breseham Cơ s toán h c xây d ng thu t toán: Gi s ta có i m th i: (xi; yi) Xác nh i m th i+1: (xi+1; yi+1)=? Ta có: 0< m ≤ 1 ⇒ N u ∆x=1⇒ ∆y≤1, trong ó ∆x=xi+1-xi; ∆y=yi+1-yi Như v y: α ≤ 45 xi+1= xi+1 yi+1= yi n u d1 ≤ d2 yi+1= yi+1 n u d1>d2 0 Thu t toán Breseham Xét d1= y(xi+1) - yi... t toán Breseham Tương t ta có Pi+1= 2dy.xi+1-2dx.yi+1+ 2dy(1-xA)+2dy.yA-dx Xét ∆P=Pi+1-Pi =2dy(xi+1-xi) – 2dx(yi+1-yi) =2dy-2dx(yi+1-yi) Gi s Pi≥0 ⇔ d1-d2 ≥ 0 ⇔ d1 ≥ d2 ⇔ yi+1=yi+1 ⇒ ∆P=2dy-2dx=const1 Gi s Pi . th ẳ ẳ ng ng Bài toán: Input: Cho đoạn thẳng AB: A(x A ; y A ), B(x B ; y B ). Output: Vẽ đoạn thẳng AB trên màn hình. Giải quyết bài toán Thuật toán làm tròn số Thuật toán Bresenham Thu Thu ậ ậ t. Chương Chương 2 2 C C á á c thu c thu ậ ậ t to t to á á n đ n đ ồ ồ ho ho ạ ạ c c ơ s ơ s ở ở Giảng viên: Ths .Vũ Minh Yến Tổ HTTT- Khoa CNTT N N ộ ộ i dung i. 2: Vẽ điểm (x; y); Bước 3: y=y+1; Bước 4: Nếu y<=y B thì: Bước 2; Bước 5: Kết thúc. A y O x B x A =x B y A y B Thu Thu ậ ậ t to t to á á n l n l à à m tròn s m tròn s ố ố TH2 TH2: