Đồ họa máy tính : CÁC ĐỐI TƯỢNG ĐỒ HỌA CƠ SỞ part 4 pps

5 370 2
Đồ họa máy tính : CÁC ĐỐI TƯỢNG ĐỒ HỌA CƠ SỞ part 4 pps

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

Thông tin tài liệu

Hình 2.15 – Đường tròn vẽ ra không liền nét theo cách vẽ trên 2.2.2. Thuật toán MidPoint Do tính đối xứng của đường tròn (C) nên ta chỉ cần vẽ cung (C 1/8 ) là cung 1/8 đường tròn, sau đó lấy đối xứng. Cung (C 1/8 ) được mô tả như sau (cung của phần tô xám trong hình vẽ) : Hình 2.16 – Các vị trí đối xứng trên đường tròn (C) tương ứng với (x,y) Như vậy nếu có (x, y) Î (C 1/8 ) thì các điểm : (y, x), (y,-x), (x,-y), (-x,-y), (-y,-x), (-y,x), (-x,y) sẽ thuộc (C). Chọn điểm bắt đầu để vẽ là điểm (0,R). Dựa vào hình vẽ, nếu là điểm nguyên đã tìm được ở bước thứ i, thì điểm ở bước thứ (i+1) là sự lựa chọn giữa S và P. Như vậy : Tương tự như thuật toán MidPoint vẽ đoạn thẳng, việc quyết định chọn một trong hai điểm S và P sẽ được thực hiện thông qua việc xét dấu của một hàm nào đó tại điểm MidPoint là điểm nằm giữa chúng. Hình 2.17 – Thuật toán MidPoint vẽ đường tròn Đặt , ta có : Xét . Ta có : Nếu , điểm MidPoint nằm trong đường tròn. Lúc này điểm thực Q gần S hơn nên ta chọn S, tức là . Ngược lại, nếu , điểm MidPoint nằm ngoài đường tròn. Lúc này điểm thực Q gần P hơn nên ta chọn P, tức là . Mặt khác : Vậy : , nếu do ta chọn . , nếu do ta chọn . Ta tính giá trị ứng với điểm ban đầu . Lưu đồ thuật toán MidPoint vẽ đường tròn Cài đặt minh họa thuật toán MidPoint vẽ đường tròn // Ve 8 diem doi xung void Put8Pixel(int x , int y ) { putpixel ( x , y , Color ); putpixel ( y , x , Color ); putpixel ( y , x , Color ); putpixel ( y , - x , Color ); putpixel ( x , - y , Color ); putpixel (- x , - y , Color ); putpixel (- y , - x , Color ); putpixel (- y , x , Color ); putpixel (- x , y , Color ); } // Put8Pixel void CircleMidPoint (int R ) { int x , y ; x = 0 ; y = R ; Put8Pixel ( x , y ); p = 1 - R ; // 5/4-R while ( x < y ) { if ( p < 0 ) p += 2 * x + 3 ; else { p += 2 *( x - y ) + 5 ; y ; } x ++; Put8Pixel ( x , y ); } } // CircleMidPoint 2.3. Thuật toán vẽ các đường conics và một số đường cong khác Phương trình tổng quát của các đường conics có dạng : . Giá trị của các hằng số A, B, C, D, E, F sẽ quyết định dạng của đường conics, cụ thể là nếu: Ta sẽ áp dụng ý tưởng của thuật toán MidPoint để vẽ các đường conics và một số đường cong khác, theo các bước tuần tự sau: Bước 1 : Dựa vào dáng điệu và phương trình đường cong, để xem thử có thể rút gọn phần đường cong cần vẽ hay không. Điều này sẽ làm tăng tốc độ vẽ so với việc phải vẽ toàn bộ đường cong. Một trong những cách đơn giản nhất là dựa vào tính đối xứng, tính chất của hàm chẵn, hàm lẻ, ¼ Bước 2 : Tính đạo hàm để từ đó phân thành các vùng vẽ : Nếu thì Nếu thì Nếu thì Nếu thì Đây là bước quan trọng vì với việc xác định đối tượng x hay y biến thiên theo dáng điệu của đường cong sẽ đảm bảo đường sau khi được vẽ ra sẽ liền nét, không bị hở. Bước 3 : Xác định công thức của cho từng trường hợp để quyết định (*) dựa trên dấu của . thường là hàm được xây dựng từ phương trình đường cong để cho nếu thuộc về đường cong. Việc chọn cần phải chú ý sao cho thao tác tính sau này hạn chế phép toán trên số thực. Bước 4 : Tìm mối liên quan của và bằng cách xét hiệu . Bước 5 : Tính và hoàn chỉnh thuật toán. . đường cong. Một trong những cách đơn giản nhất là dựa vào tính đối xứng, tính chất của hàm chẵn, hàm lẻ, ¼ Bước 2 : Tính đạo hàm để từ đó phân thành các vùng vẽ : Nếu thì Nếu thì Nếu thì Nếu. Việc chọn cần phải chú ý sao cho thao tác tính sau này hạn chế phép toán trên số thực. Bước 4 : Tìm mối liên quan của và bằng cách xét hiệu . Bước 5 : Tính và hoàn chỉnh thuật toán. . quát của các đường conics có dạng : . Giá trị của các hằng số A, B, C, D, E, F sẽ quyết định dạng của đường conics, cụ thể là nếu: Ta sẽ áp dụng ý tưởng của thuật toán MidPoint để vẽ các đường

Ngày đăng: 26/07/2014, 17:20

Từ khóa liên quan

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

Tài liệu liên quan