1. Trang chủ
  2. » Công Nghệ Thông Tin

Slide vẽ đường elip bằng thuật toán Midpoint

17 712 6

Đ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

Thông tin cơ bản

Định dạng
Số trang 17
Dung lượng 3,76 MB

Nội dung

Đây là slide chi tiết do chúng mình soạn thảo và lên trình bài vẽ đường tròn bằng thuật toán midpoint . Sẽ giúp bạn dễ hiểu hơn cũng như thuyết trình tốt hơn trong học tập . Slide rất chi tiết đó mọi người ..... hihi mọi người nhớ ủng hộ mình nhé .

Trang 2

NHÓM 6 : THUẬT TOÁN MID-POINT

VẼ HÌNH ELLIPSE

Đinh Doãn Việt Nguyễn Thị Phương Ngọc

Nguyễn Thị Thu

Trang 3

Giới thiệu vấn đề

Giải Thuật

Lưu Đồ Thuật Toán

Code Minh Họa

Trang 4

Vẽ hình Ellipse

Thuật Toán Bresenham

Thuật Toán Mid-Point

Giới thiệu vấn đề

Trang 5

Giải Thuật

Phương trình Ellipse:

 

f(x,y) = b2 x2 + a2 y2  – a2 b2    

f(x,y)

< 0 nếu (x,y) nằm bên trong hình elip

= 0 nếu (x,y) nằm trên hình elip

> 0 nếu (x,y) nằm bên ngoài hình elip

Trang 6

Ý Tưởng Thuật Toán

• Chia Elip làm 2 phần tại tiếp điểm Q nơi có hệ số góc của tiếp tuyến với Elip bằng -1

• Tại vùng thứ nhất, x biến thiên nhanh hơn y và tại vùng thứ hai , y biến thiên nhanh hơn x Nhớ lại công thức hệ số góc của đường cong :

= =

trong đó : fx và fy là đạo hàm riêng phần của f(x,y) theo x, theo y

 

f(x,y) = b2 x2 + a2 y2  – a2 b2    

Trang 7

Phân Tích Giải Thuật

1. Trong phần thứ nhất:

Giả sử đã vẽ được điểm (xi,yi), điểm tiếp theo trên elip được chọn trong bước nhảy i+1 là T hoặc S  Trung điểm I của TS sẽ quyết định điểm nào được chọn Giá trị của f(x,y) tại điểm I:

di = f(xi + 1, yi – ) = b 2 (x i + 1) 2 + a2 (y i – ) 2 – a2b2

+ Nếu di > 0 thì trung điểm I nằm ngoài đường elip  điểm được chọn là S

+ Nếu di = 0 thì trung điểm I nằm trên đường elip    điểm được chọn là S

+ Nếu di < 0 thì trung điểm I nằm trong đường elip  điểm được chọn là T

 

Trang 8

Phân Tích Giải Thuật

Ta lại có:

di+1 = f(xi+1 + 1, yi+1 – ) = b 2(x i+1 +1) 2 + a2(y i+1 – ) 2 – a2b2 Suy ra:

di+1 – di = b 2[(x i+1 +1) 2 – (x i +1) 2] +a2[(y i+1 – ) 2 – (y i – ) 2]

Vì xi+1 = xi+1 nên

di+1 – di = 2b 2x i+1 + b 2 + a2[(y i+1 – ) 2 – (y i – ) 2]

 

Trang 9

Nếu điểm được chọn là T ( < 0)

thì

Nếu điểm được chọn là S ( ≥ 0)

thì

Ta có : di+1 = d   i + 2b   2x i+1 + b   2 (= d   i + fx + b   2) = di + 2b   2 (x i + 1) + b 2

= di + b   2 (2x i + 3)

Ta có:

di+1 = d   i + 2b   2x i+1 + b   2 – 2a   2y i+1 (= d   i + fx + b   2 – fy)  

    = di + 2b   2 (x   i + 1) + b 2 – 2a   2 (y   i – 1) = di + b   2 (2x   i + 3) + a 2 (-2y   i + 2)

Ta có : di+1 = d   i + 2b   2x i+1 + b   2 (= d   i + fx + b   2) = di + 2b   2 (x i + 1) + b 2

= di + b   2 (2x i + 3)

Ta có:

di+1 = d   i + 2b   2x i+1 + b   2 – 2a   2y i+1 (= d   i + fx + b   2 – fy)  

    = di + 2b   2 (x   i + 1) + b 2 – 2a   2 (y   i – 1) = di + b   2 (2x   i + 3) + a 2 (-2y   i + 2)

Với điểm đầu tiên (0,b) ta có:

d1 = f(0,b) = b 2 + a2(b – )2 – a2b2 

= b2  a ─ 2b +

 

Trang 10

2 Trong phần thứ hai:

Chúng ta tính toán như phần 1 Giả sử ta phải xác định điểm  (xj+1,yj+1) tiếp theo trên elip trong bước j+1 Điểm được chọn là U hoặc V Trung điểm K của UV sẽ quyết định việc chọn điểm U hay điểm V Giá trị của f(x,y) tại điểm K:

ej = f(xj +, yj – 1) = b2(xj + )2 + a2(yj – 1)2 – a2b2 + Nếu ej > 0 điểm được chọn là U

+ Nếu ej = 0 điểm được chọn là U

+ Nếu ej < 0 điểm được chọn là V

 

Phân Tích Giải Thuật

Trang 11

Ta lại có:

ej+1 = f(xj+1 + , yj+1 – 1) = b 2(x j+1 + ) 2 + a2(y j+1 – 1) 2 – a2b2

Suy ra:

ej+1 – ej = b 2[(x j+1 + ) 2 – (x j + ) 2] + a2[(y j+1 – 1) 2 – (y j – 1) 2]

= b2[(xj+1 + ) 2 – (x j + ) 2] – 2a2y j+1 + a 2  

(Chú ý : yj+1 = yj – 1)

 

Trang 12

Nếu điểm được chọn là U (tức ej ≥ 0)

thì xj+1 = xj

Nếu điểm được chọn là V (tức ej < 0 )

thì xj+1 = xj+1

Ta có:

ej+1 = ej – 2a 2y j+1 + a 2 (= e j – fy + a 2)

= ej – 2a 2(y j -1) + a 2

= ej – a 2(3 – 2y j)

Ta có:

ej+1 = ej + 2b 2x j+1 – 2a 2y j+1 + a 2 (= e j + fx – fy + a 2) = ej + 2b 2(x j + 1)– 2a 2(y j -1) + a 2

= ej + b 2(2x j + 2)+ a 2(3 -2y j )

Phân Tích Giải Thuật

Giá trị khởi tạo ban đầu trong phần 2 phụ thuộc vào vị trí cuối cùng của phần 1 , giả sử

là (xk,yk)

Khi đó:

e1 = f(xk + , yk – 1) = b 2(x k + ) + a 2(y k – 1) 2 – a2b2

 

Trang 13

Lưu Đồ Thuật Toán

Bắt Đầu

p = p +  

2  

x=0, y = b

p =  

x = x + 1 putpixel(x,y,color)

y = y - 1

p = p +  

y

p  

x=x+1

p = p +  

p = p +  

y = y - 1 putpixel(x,y,color)

S

S S

S

Đ Đ

Đ

Đ

p  

Trang 14

Lưu Đồ Thuật Toán

Do ở phần ý tưởng thuật toán, chúng ta chia elip làm 2 phần để vẽ và lấy điểm Q có hệ số góc của tiếp tuyến với elip bằng -1 làm giao điểm Theo công thức hệ số đã nêu ở trên:  dx/dy = fx/fy = (2b2x) /( 2a2y) Tại điểm đầu tiên có tọa độ  (0,b), chúng ta thay x=0 và y=b vào công thức trên được hệ số góc= 0/( 2a2b) lớn hơn -1 Nên ta

chọn vẽ theo nhánh 1 Như vậy, việc so sánh  2a2y < 0 là để chọn nhánh vẽ elip thôi.

Tại sao lại x

 

Trang 15

Code Minh Họa

Trang 17

THANKS FOR

YOUR ATTENTION

Ngày đăng: 08/01/2019, 16:46

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w