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

Slide Đồ họa máy tính Bài 3 : Thuật Toán Vẽ Đường Thẳng Bresenham

14 989 2

Đ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 14
Dung lượng 1,44 MB

Nội dung

vẽ đường thẳng bằng thuật toán bresenham .Dây là slide giảng bresenham mình làm ra và lên kế hoạch để thuyết chình trước lớp . nay đăng lên đây để cho mọi người xem qua . Mình đã thàng công khi thuyết trình nha . chỉ cần ae tự tin còn về slide thì cực kì đầy đủ cho ae . Nếu thích thì tải về ủng hộ mình nha

Trang 1

Bài 3: Thuật Toán Vẽ Đường

Thẳng - Bresenham

Nhóm thực hiện: Nguyễn Hồng Kỳ

Lê Văn Thiêm Nguyễn Xuân Tuấn

Trang 2

Bài 3: Thuật toán vẽ đường thẳng - Bresenham

1) Giới thiệu thuật toán

Trong thuật toán DDA việc cộng dồn số thực m vào

y trong công thức ( y k + 1 = y k + m ) rồi làm tròn dẫn

đến tích lũy sai số làm cho hàm làm tròn có kết quả

sai, dẫn tới việc xác định vị trí của điểm vẽ bị chệch

hướng so với đường thẳng thực (điều này xảy ra khi ta

vẽ một đường thẳng khá dài) Hơn nữa, thuật toán

DDA còn bị hạn chế về mặt tốc độ do phép toán cộng

dồn số thực và làm tròn Để khắc phục những mặt hạn

chế này giáo sư khoa học máy tính IBM là Jack Elton

Bresenham đã thiết kế thuật toán vẽ đường thẳng

Bresenham vào năm 1962 tại công ty IBM Và sau này

giải thuật này tiếp tục phát triển để vẽ được đường

cong.

Trang 3

Bài 3: Thuật toán vẽ đường thẳng - Bresenham

2) Ý tưởng của thuật toán

Thay thế các phép toán trên số thực của thuật toán DDA

bằng các phép toán trên các số nguyên

Hạn chế các phép toán được thực hiện để giảm thời gian so

với thuật toán DDA

3) Đặt vấn đề

Cho 2 điểm A(, ) và B(, ) Vẽ đường thẳng đi qua A và B

 

Trang 4

Bài 3: Thuật toán vẽ đường thẳng - Bresenham

3) Giải thuật

Thuật toán Bresenham đưa ra cách chọn y k +1 là y k hay là y k + 1

như thuật toán DDA nhưng theo một hướng khác Đó là so sánh

khoảng cách giữa điểm thực y k + 1 với 2 điểm y k và y k + 1 Nếu

điểm nào nằm gần kề với điểm thực y k + 1 nhất thì sẽ được chọn làm điểm vẽ tiếp theo để vẽ đường thẳng

Trang 5

Bài 3: Thuật toán vẽ đường thẳng - Bresenham

3) Giải thuật

Ta có phương trình đường thẳng đi qua 2 điểm A(x1, y1)

và B(x2, y2) : y = mx + b với (m = Tại mỗi bước ta cho x tăng lên 1 đơn vị tức là:

x k + 1 = x k + 1

  

Trang 6

Bài 3: Thuật toán vẽ đường thẳng - Bresenham

3) Giải thuật

Ta xét m :

Gọi y k + 1 là giá trị thực của đường thẳng tại x k + 1 tại bước thứ k + 1 khi đó: y k + 1 = m(x k + 1 ) + b = m(x k + 1 ) +b

Gọi d1 là khoảng cách từ y k + 1 đến y k và d2 là khoảng cách từ y k + 1 đến

y k + 1

Ta có: d1 = y k + 1 – y k = m(x k + 1 ) + b – y k

d2 = y k +1 – y k + 1 = y k +1 – [ m(x k +1 ) b ]

d2 = y k +1 – m(x k +1 ) b

Lại có: d = d1 – d2 = (y k + 1 – y k ) – (y k +1 – y k + 1)

+ 1) + b ] – [ y k +1 – m(x k +1 ) b ]

 

Trang 7

Bài 3: Thuật toán vẽ đường thẳng - Bresenham

3) Giải thuật

+ 2b

Tuy nhiên trong số thực m =, để đúng ý tưởng của thuật toán

chỉ thực hiện các phép toán trên số nguyên ta sẽ khử mẫu số bằng cách nhân cả 2 vế của Khi đó ta được:

[+ 2b

Đặt = và thay m = ta được:

= [ 2]

=[ ]

= + c với c =

 

Trang 8

Bài 3: Thuật toán vẽ đường thẳng - Bresenham

3) Giải thuật

Do m 0 với mọi trường hợp

Dấu của cùng dấu với

> 0 y k + 1 = y k + 1

0 y k + 1 = y k

Tính = + c

do 1)

 

Trang 9

Bài 3: Thuật toán vẽ đường thẳng - Bresenham

3) Giải thuật

Nếu > 0 y k + 1 = y k + 1

= +

Nếu 0 y k + 1 = y k

=+ )

Ta có:

= + c với c =

= 2(+ b) +

= 2

 

Trang 10

Bài 3: Thuật toán vẽ đường thẳng - Bresenham

3) Giải thuật

Các bước của thuật toán Bresenham:

Bước 1: Tính các giá trị , , ,

Gán tọa độ vẽ x = , y = y1

Vẽ điểm có tọa độ (x, y)

Bước 2: Kiểm tra điều kiện x

Nếu không thỏa mãn thì kết thúc chương trình Nếu thỏa mãn thì chuyển đến bước 3

 

Trang 11

Bài 3: Thuật toán vẽ đường thẳng - Bresenham

3) Giải thuật

Các bước của thuật toán Bresenham:

Bước 3: Kiểm tra điều kiện P < 0

Nếu thỏa mãn thì x = x + 1, P = P +

và vẽ điểm có tọa độ (x, y) rồi sau đó quay lại bước 2

Nếu không thỏa mãn thì đến bước 4

Bước 4: P = P + , y = y + 1

Vẽ điểm có tọa độ (x, y) sau đó quay lại bước 2

 

Trang 12

Bài 3: Thuật toán vẽ đường thẳng - Bresenham

4) Lưu đồ thuật toán

Trang 13

Bài 3: Thuật toán vẽ đường thẳng - Bresenham

5) Code minh họa

void bresenham(int x1, int y1, int x2, int y2)

{

int dx = x2 - x1;

int dy = y2 - y1;

int p = 2*dy - dx;

int c1 = 2*dy;

int c2 = 2*(dy - dx);

int x = x1;

int y = y1;

putpixel(x, y, 3);

while(x <= x2)

{

delay(10);

if (p < 0)

{

p += c1;

}

else

{

p += c2;

y++;

}

x++;

putpixel(x, y, 3);

}

}

Trang 14

Bài thuyết trình đến đây là hết xin cảm ơn mọi

người đã lắng nghe!!

Mọi thông tin ý kiến xin gửi về email:

marinkqh@gmail.com

Ngày đăng: 04/01/2019, 19:51

TỪ KHÓA LIÊN QUAN

w