intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

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

Chia sẻ: Alfhau Sdjfka | Ngày: | Loại File: PDF | Số trang:5

109
lượt xem
17
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

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 (C1/8) là cung 1/8 đường tròn, sau đó lấy đối xứng. Cung (C1/8) được mô tả như sau (cung của phần tô xám trong hình vẽ)

Chủ đề:
Lưu

Nội dung Text: Đồ họa máy tính : CÁC ĐỐI TƯỢNG ĐỒ HỌA CƠ SỞ part 3

  1. Ngược lại, nếu , ta sẽ chọn điểm P, tức là . Xét Thay vào phương trình trên ta được : , với . Nhận xét rằng do nên dấu của biểu thức cũng chính là dấu của . Hay nói một cách khác, nếu tại bước thứ i ta xác định được dấu của thì xem như ta xác định được điểm cần chọn ở bước (i+1). Vấn đề còn lại là làm thế nào để tính được tại mỗi bước thật nhanh. Ta có : Từ đây ta có thể suy ra cách tính từ như sau : Nếu thì do ta chọn . Ngược lại, nếu , thì , do ta chọn . Giá trị được tính từ điểm vẽ đầu tiên theo công thức : Do là điểm nguyên thuộc về đoạn thẳng nên ta có . Thế vào phương trình trên ta suy ra : . Lưu đồ thuật toán Bresenham
  2. Cài đặt minh họa thuật toán Bresenham void LineBres (int x1, int y1, int x2, int y2) { int Dx, Dy, p, Const1, Const2; int x, y; Dx = x2 - x1; Dy = y2 - y1; p = 2*Dy - Dx; // Dy
  3. y = y1; putpixel(x, y, Color); for(i=x1; i
  4. Hình 2.14 – Minh hoïa thuaät toaùn MidPoint Ta có dạng tổng quát của phương trình đường thẳng : với Đặt , ta có nhận xét : Lúc này việc chọn các điểm S, P ở trên được đưa về việc xét dấu của . Nếu , điểm MidPoint nằm phía trên đoạn thẳng. Lúc này điểm thực Q nằm dưới điểm MidPoint nên ta chọn S, tức là . Ngược lại, nếu , điểm MidPoint nằm phía dưới đoạn thẳng. Lúc này điểm thực Q nằm trên điểm MidPoint nên ta chọn P, tức là . Mặt khác : Vậy :
  5. , nếu do ta chọn . , nếu do ta chọn . Ta tính giá trị ứng với điểm ban đầu , với nhận xét rằng là điểm thuộc về đoạn thẳng, tức là có : Nhận xét rằng thuật toán MidPoint cho kết quả tương tự như thuật toán Bresenham. 2.2. Thuật toán vẽ đường tròn Phương trình đường tròn có tâm là gốc tọa độ, bán kính R là : . Từ phương trình này ta có thể đưa về dạng . Để vẽ các đường tròn có tâm bất kì, đơn giản chỉ cần tịnh tiến các điểm sau khi vẽ xong đường tròn có tâm là gốc tọa độ theo vector tịnh tiến . 2.2.1 Một số cách tiếp cận vẽ đường tròn Do tính đối xứng nên để vẽ toàn bộ đường tròn, ta chỉ cần vẽ cung ¼ đường tròn sau đó lấy đối xứng để xác định các điểm còn lại. Một trong những cách đơn giản nhất là cho x chạy từ 0 đến R, sau đó tính y từ công thức trên (chỉ lấy giá trị dương) rồi làm tròn để xác định giá trị nguyên tương ứng. Cách làm này không hiệu quả do gặp phải các phép toán nhân và lấy căn làm hạn chế tốc độ, ngoài ra đường tròn vẽ ra theo cách này có thể không liền nét (trừ trường hợp R lớn) khi x gần R (do chỉ có một giá trị y duy nhất cho một giá trị x). Chúng ta có thể khắc phục điều này bằng cách điều chỉnh đối tượng thay đổi là x (rồi tính y theo x) hay y (rồi tính x theo y) tùy vào giá trị tuyệt đối của hệ số góc đường tròn là lớn hơn hay nhỏ hơn 1, nhưng cách làm này đòi hỏi thêm các phép tính toán và kiểm tra nên làm cho thuật toán phức tạp thêm. (Xem hình 2.15) với chạy từ 00 đến 900. Cách này sẽ Một cách tiếp cận khác là vẽ các điểm khắc phục hạn chế đường không liền nét của thuật toán trên, tuy nhiên điểm hạn chế chính của thuật toán này đó là chọn bước nhảy cho như thế nào cho phù hợp khi bán kính thay đổi.
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2