1. Trang chủ
  2. » Luận Văn - Báo Cáo

Đề Tài:” Cài đặt thuật toán Bresenham, MidPoint vẽ đường tròn và tô màu theo 2 thuật toán : tô màu theo dòng quét và tô màu lân cận.Sử dụng các phép biến đổi: phép tịnh tiến, phép quay, phép co dãn, phép đối xứng qua điểm, phép kết hợp.”

32 5,9K 12

Đ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 32
Dung lượng 282,66 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

TRƯỜNG ĐẠI HỌC CÔNG NGHIỆPKhoa Công Nghệ Thông Tin BÀI TẬP LỚN MÔN:Đồ Họa Máy Tính Đề Tài:”Cài đặt thuật toán Bresenham, MidPoint vẽ đường tròn và tô màu theo 2thuật toán : tô màu theo d

Trang 1

TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP

Khoa Công Nghệ Thông Tin

BÀI TẬP LỚN MÔN:Đồ Họa Máy Tính

Đề Tài:”Cài đặt thuật toán Bresenham, MidPoint vẽ đường tròn và tô màu theo 2thuật toán : tô màu theo dòng quét và tô màu lân cận.Sử dụng các phép biến đổi:phép tịnh tiến, phép quay, phép co dãn, phép đối xứng qua điểm, phép kết hợp.”Giáo viên hướng dẫn:

Sinh viên thực hiện:

1 Dương Thị Hồng MSV:0641360273

2 Sái Hoàng Quân MSV: 0641360114

3 Nguyễn Thế Việt MSV: 0441060022

Trang 2

Mục lục

Mục lục 2

CHƯƠNG I:KHẢO SÁT 4

1.1 Mục đich nghiên cứu: 4

1.2 Đối tượng nghiên cứu 4

CHƯƠNG II: PHÂN TÍCH 5

2.1Thuật toán vẽ đường tròn: 5

2.1.1 Thuật toán Bresenham: 5

2.1.2 Thuật toán MidPoint: 6

2.2 Thuật toán tô màu: 9

2.2.1 Theo dòng quét: 9

2.2.2 Tô màu lân cận: 10

2.3 Các phép biến hình 11

2.3.1Các phép biến hình cơ bản 11

2.3.2 Phép tịnh tiến 11

2.3.3Phép quay: 12

2.3.4 Phép co dãn: 16

2.3.5 Đối xứng qua điểm: 17

2.3.6 Kết hợp phép quay và phép biến đổi tỷ lệ 17

2.3.7 Kết hợp phép tịnh tiến và phép biến đổi tỉ lệ 18

CHƯƠNG III CÀI ĐẶT CHƯƠNG TRÌNH 19

Trang 3

Lời nói đầu

Sự phát triển của khoa học, kĩ thuật, nghệ thuật, kinh doanh,

và công nghệ luôn luôn phụ thuộc vào khả năng truyền đạt thông tin của chúng ta, hoặc thông qua các bit dữ liệu lưu trữ trong

microchip hoặc thông qua giao tiếp bằng tiếng nói Câu châm ngôn từ xa xưa “một hình ảnh có giá trị hơn cả vạn lời" hay "trăm nghe không bằng một thấy" cho thấy ý nghĩa rất lớn của hình ảnh trong việc chuyển tải thông tin Hình ảnh bao giờ cũng được cảm nhận nhanh và dễ dàng hơn, đặc biệt là trong trường hợp bất

đồng về ngôn ngữ Do đó không có gì ngạc nhiên khi mà ngay từ khi xuất hiện máy tính, các nhà nghiên cứu đã cố gắng sử dụng nó

để phát sinh các ảnh trên màn hình Trong suốt gần 50 năm phát triển của máy tính, khả năng phát sinh hình ảnh bằng máy tính của chúng ta đã đạt tới mức mà bây giờ hầu như tất cả các máy tính đều có khả năng đồ họa

Đồ họa máy tính là một trong những lĩnh vực lí thú nhất và phát triển nhanh nhất của tin học Ngay từ khi xuất hiện, đồ họa máy tính đã có sức lôi cuốn mãnh liệt, cuốn hút rất nhiều người ở nhiều lĩnh vực khác nhau như khoa học, nghệ thuật, kinh doanh, quản lí, Tính hấp dẫn và đa dạng của đồ họa máy tính có thể được minh họa rất trực quan thông qua việc khảo sát các ứng dụng của nó

Qua quá trính học tập và tìm hiểu nhóm đã được giao đề tài

“Cài đặt thuật toán Bresenham,MidPoint vẽ đường tròn và tô màu theo 2 thuật toán : tô màu theo dòng quét và tô màu lân cận.Sử dụng các phép biến đổi: phép tịnh tiến, phép quay, phép co dãn, phép đối xứng qua điểm, phép kết hợp.”

Trang 4

Do quá trình tìm hiểu còn nhiều thiếu xót nên chương trình còn nhiều hạn chế, nhóm thực hiện rât mong được ý kiến đóng góp từ phía cô giáo và các bạn để chương trình được hoàn thiện hơn.

CHƯƠNG I:KHẢO SÁT

1.1 Mục đich nghiên cứu:

- Củng cố kiến thức đã học.

- Rèn luyện kỹ thuật lập trình đồ họa

1.2 Đối tượng nghiên cứu

 Đường tròn

 Các thuật toán vẽ đường tròn và tô màu đường tròn

Trang 5

CHƯƠNG II: PHÂN TÍCH

2.1Thuật toán vẽ đường tròn:

Xét đường tròn (C) tâm O(xc,yc) bán kính R

Phương trình tổng quát của đường tròn có dạng:

(-x,y), (-x,-y), (-y,-x), (y,-x), (x,-y) cũng ∈ (C)

Vì vay, ta chỉ cần vẽ một phần 8 cung tròn sau đó lấy đối xứng qua gốc O và 2 trục tọa độ thì ta có được toàn bộ đường tròn

2.1.1 Thuật toán Bresenham:

Giả sử (xi ,yi) đã vẽ được Cân chọn điểm kế tiếp là (xi +1,yi) hoac (xi +1,yi -1)(Hình 1.5)

Từ phương trình: x2 + y2 = R2

ta tính được giá trị y thực ứng với tọa độ xi +1 là:y2 = R2 - (xi +1)2

đặt d1 = yi2 - y2= yi2 - R2 + (xi + 1)

d2 = y2 - (yi - 1)2 = R2 - (xi + 1)2 - (yi - 1)2

suy ra

pi = d1 - d2 = 2.(xi + 1)2 + yi2 + (yi - 1)2 - 2R2 (2)

Từ (2) và (3) ta có:

pi+1 - pi = 4xi + 6 + 2.(yi+12 - yi2) - 2.(yi+1 - yi)

⇒pi+1 = pi + 4xi + 6 + 2.(yi+12 - yi2) - 2.(yi+1 - yi) (4)

Nhận xét:

Nêu pi < 0: chọn yi+1 = yi (4) ⇒ pi+1 = pi + 4xi + 6

Nêu pi ¿0: chọn yi+1 = yi - 1 (4) ⇒ pi+1 = pi + 4.(xi - yi) + 10

Ta chọn điểm đầu tiên cần vẽ (0,R), theo (2) ta có: p1 = 3 - 2R

Tóm lại ta có thuật toán vẽ đường tròn:

 Bước 1 chọn điểm đầu cần vẽ: (x1,y1) = (0,R)

 Bước 2 Tính P đầu tiên: p1 = 3 – 2R

Nêu p < 0: chọn điểm kê tiếp là (xi +1,yi) Ngược lại thì chọn điểm (xi + 1,yi - 1)

 Bước 3 x:=x+1 tính lại p

Trang 6

Nêu pi < 0: pi+1 = pi + 4xi + 6 Ngược lại: pi+1 = pi + 4.(xi - yi) + 10

Khi đó :

Nêu pi+1 < 0: chọn điểm kê tiêp là (xi+1,yi+1) Ngược lại chọn điểm (xi+1,yi+1-1)

 Bước 4 lặp lại bước 3 cho đên khi x = y.

Sau đây là thủ tục để cài đặt thuật toán:

2.1.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

xám trong hình vẽ) :

Trang 7

    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) Î (C1/8) thì các điểm : (y, x), (y,-x), (x,-y), x,-y), y,-x), y,x), (-x,y) sẽ thuộc (C)

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

Trang 9

2.2 Thuật toán tô màu:

2.2.1 Theo dòng quét:

có thể là đa giác lồi, đa giác lõm, và cả đa giác tự cắt, …

Hình 2.18 sau minh họa ý tưởng chính của thuật toán Với mỗi dòng quét, ta sẽ xác định phần giao của đa giác và dòng quét rồi tô màu các pixel thuộc đoạn giao đó

Để xác định các đoạn giao ta tiến hành việc tìm giao điểm của dòng quét với các cạnh của đa giác, sau đó các giao điểm này sẽ được sắp theo thứ tự tăng dần của hoành độ giao điểm Các đoạn giao chính là các đoạn thẳng được giới hạn bởi từng cặp giao điểm một, ví dụ như (0,1), (2,3), …

Hình 2.18 – Thuật toán scan-line với một dòng quét nào đó

Ta có thể tóm bắt các bước chính của thuật toán :

giác

 Sắp xếp các hoành độ giao điểm theo thứ tự tăng dần : x0, x1, …

Nếu chỉ dừng ở mức này và chuyển sang cài đặt, chúng ta sẽ gặp một số vấn đề sau :

Trang 10

 Nhận xét rằng, ứng với mỗi dòng quét, không phải lúc nào tất cả các cạnh của đa giác cũng tham gia cắt dòng quét Do đó để cải thiện tốc độ cần phải

có một cách nào đó để hạn chế được số cạnh cần tìm giao điểm ứng với mỗi dòng quét

phức tạp như nhân, chia, … trên số thực nếu ta dùng cách giải hệ phương trình tìm giao điểm Điều này sẽ làm giảm tốc độ thuật toán khi phải lặp đi lặp lại nhiều lần thao tác này khi dòng quét quét qua đa giác

nhóm từng cặp giao điểm kế tiếp nhau để hình thành các đoạn tô có thể sẽ không chính xác Điều này chỉ xảy ra khi dòng quét đi ngang qua các đỉnh của đa giác Nếu tính số giao điểm tại đỉnh dòng quét đi ngang qua là hai thì

có thể sẽ cho kết quả tô không chính xác như trong trường hợp của hình 2.19 Ngoài ra, việc tìm giao điểm của dòng quét với các cạnh nằm ngang là một trường hợp đặc biệt cần phải có cách xử lí thích hợp

2.2.2 Tô màu lân cận:

Lây P(x,y) ∈ S, tô màu P

Xét các điểm lân cận của P

Nêu các điểm lân cận đó vẫn còn thuộc S và chưa được tô màu thì tô màu cho các điểm lân cận đó

Thuật toán trên có thê được minh học bằng thử tục đệ quy sau:

Procedure Tomaulancan(x,y:Integer; Color:Word);

Trang 11

100 010 tlxtly0

Nếu gọi ttx và tty lần lượt là độ dời theo trục hoành và trục tung thì tọa độ của điểm mới Q(x’,y’) sau khi tịnh tiến điểm P(x,y) sẽ là:      

 Khi đó (ttx,tty) được gọi là vecto tịnh tiến hay độ dời

§ Ma trận biến đổi

 Thuật toán cài đặt

void TinhTien(float &x,float &y,float ttx,float tty)

{

x=x+ttx;

Trang 12

{x∗ ¿ x.cosα−y.sinα ¿¿¿¿

Trang 13

Phép quay quanh một điểm

1800

Hình 3.3 – Phép quay một đối tượng quanh gốc tọa

độ một góc 60

Trang 14

Phép quay quanh một điểm bất kỳ

Hình 3.3 : Phép quay quanh một điểm bất kỳ

Xét điểm P(P.x,P.y) quay quanh điểm V(V.x, V.y) một góc -0- đến điểm

Q(Q.x,Q.y) Ta có thể xem phép quay quanh tâm V được kết hợp từ phép các biến đổi cơ bản sau:

- Phép tịnh tiến (-V.x, -V.y) để dịch chuyển tâm quay về gốc tọa độ

- Quay quanh gốc tọa độ O một góc

-0 Phép tịnh tiến (+V.x, +V.y) để đưa tâm quay về vị trí ban đầu

Ta cần xác định tọa độ của điểm Q (xem hình 3.3)

- Từ phép tịnh tiến (-V.x,-V.y) biến đổi điểm P thành P' ta được:

P' = P + V

hay

- Phép quay quanh gốc tọa độ biến đổi điểm P' thành Q'

Q' = P'.M

Trang 15

- Phép tịnh tiến (+V.x, +V.y) biến đổi điểm Q' thành Q ta được

Q = Q' + V

hay

Vậy Q = P.M + tr

Với

 Thuật toán cài đặt

void Quay(float &x,float &y,float goc)

Trang 16

2.3.4 Phép co dãn:

và , ta nhân và lần lượt cho các tọa độ của P

, và được gọi là các hệ số tỉ lệ

Khi các giá trị , nhỏ hơn 1, phép biến đổi sẽ thu nhỏ đối tượng, ngược lại khi các giá trị này lớn hơn 1, phép biến đổi sẽ phóng lớn đối tượng Khi , bằng nhau, ta gọi đó là phép đồng dạng (uniform scaling), phép đồng dạng là phép biến đổi bảo toàn tính cân xứng của đối tượng

Tâm tỉ lệ là điểm không bị thay đổi qua phép biến đổi tỉ lệ Phép biến đổi tỉ lệ mô tảnhư trên còn gọi là phép biến đổi tỉ lệ quanh gốc tọa độ vì có tâm tỉ lệ là gốc tọa độ.Nhận xét rằng khi phép biến đổi tỉ lệ thu nhỏ đối tượng, đối tượng sẽ được dời về gần gốc tọa độ hơn, tương tự khi phóng lớn đối tượng, đối tượng sẽ được dịch chuyển xa gốc tọa độ hơn

Hình 3.2 – Phép biến đổi tỉ lệ với

2.3.5 Đối xứng qua điểm:

Phép đối xứng tâm là phép biến hình biến điểm I thành chính nó, biến mỗi điểm M khác I thành M’ sao cho I là trung điểm của đoạn thẳng MM’

thức:

Trang 17

Y’=2y- ym

2.3.6 Kết hợp phép quay và phép biến đổi tỷ lệ

Ta có điểm M biến đổi thành M1 qua phép biến đổi tỉ lệ T1 rồi từ M1 biến đổi

biến đổi

M T1 M1 T2- M2

 Thuật toán cài đặt

void QuayTiLe(int n,float tlx,float tly, float goc)

Trang 18

2.3.7 Kết hợp phép tịnh tiến và phép biến đổi tỉ lệ

Ta có điểm M biến đổi thành M1 qua phép tịnh tiến T1 rồi từ M1 biến đổi thành M2 qua phép biến đổi tỉ lệ T2 Như vậy biến đổi điểm M thành M2 kết hợp của

2 phép biến đổi

M T1 M1 T2- M2

 Thuật toán cài đặt

void TinhTien_BienDoiTiLe(int n, float ttx,float tty,float tlx,float tly)

Trang 19

CHƯƠNG III CÀI ĐẶT CHƯƠNG TRÌNH

Trang 20

{

xw1=x1;yw1=y1;xw2=x2;yw2=y2; }

void khungNhin(int x1,int y1,int x2, int y2) {

xv1=x1;yv1=y1;xv2=x2;yv2=y2; tlx=(xv2-xv1)/(xw2-xw1);

}

void veDen(float x, float y)

{

int xm = (int) (tlx*(x-xw1)+xv1); int ym = (int) (tly*(yw2-y)+yv1); lineto(xm,ym);

}

Trang 24

{ putpixel(xc + x, yc + y, color); putpixel(xc - x, yc + y, color); putpixel(xc + x, yc - y, color); putpixel(xc - x, yc - y, color); putpixel(xc + y, yc + x, color); putpixel(xc - y, yc + x, color); putpixel(xc + y, yc - x, color); putpixel(xc - y, yc - x, color); }

Trang 29

Duongtron_BRE(xc,yc,r,3);

Trang 30

cout<<"nhap toa do tam I,xc:";cin>>xc;

cout<<"nhap toa do tam I,yc:";cin>>yc;

cout<<"nhap ban kinh duong tron:";cin>>r;

duongtron_midpoint(xc,yc,r,12);

MylabelDT1:;

cout<<" ban hay chon phep bien doi"<<endl<<endl;

cout<<" 1.tinhtien 2.quay 3.codan 4.doixungquadiem 5.kh_tinhtientyle 6.kh_tylequay 7.exit 8.tieptuc:=";

cin>>m;

Ngày đăng: 21/11/2014, 00:47

HÌNH ẢNH LIÊN QUAN

Hình 2.17 – Thuật toán MidPoint vẽ đường tròn - Đề Tài:” Cài đặt thuật toán Bresenham, MidPoint vẽ đường tròn và tô màu theo 2 thuật toán : tô màu theo dòng quét và tô màu lân cận.Sử dụng các phép biến đổi: phép tịnh tiến, phép quay, phép co dãn, phép đối xứng qua điểm, phép kết hợp.”
Hình 2.17 – Thuật toán MidPoint vẽ đường tròn (Trang 7)
Hình 2.18 sau minh họa ý tưởng chính của thuật toán. Với mỗi dòng quét, ta sẽ xác  định phần giao của đa giác và dòng quét rồi tô màu các pixel thuộc đoạn giao đó - Đề Tài:” Cài đặt thuật toán Bresenham, MidPoint vẽ đường tròn và tô màu theo 2 thuật toán : tô màu theo dòng quét và tô màu lân cận.Sử dụng các phép biến đổi: phép tịnh tiến, phép quay, phép co dãn, phép đối xứng qua điểm, phép kết hợp.”
Hình 2.18 sau minh họa ý tưởng chính của thuật toán. Với mỗi dòng quét, ta sẽ xác định phần giao của đa giác và dòng quét rồi tô màu các pixel thuộc đoạn giao đó (Trang 9)
Hình 3.3 – Phép quay một đối tượng quanh gốc tọa - Đề Tài:” Cài đặt thuật toán Bresenham, MidPoint vẽ đường tròn và tô màu theo 2 thuật toán : tô màu theo dòng quét và tô màu lân cận.Sử dụng các phép biến đổi: phép tịnh tiến, phép quay, phép co dãn, phép đối xứng qua điểm, phép kết hợp.”
Hình 3.3 – Phép quay một đối tượng quanh gốc tọa (Trang 13)
Hình 3.3 : Phép quay quanh một điểm bất kỳ. - Đề Tài:” Cài đặt thuật toán Bresenham, MidPoint vẽ đường tròn và tô màu theo 2 thuật toán : tô màu theo dòng quét và tô màu lân cận.Sử dụng các phép biến đổi: phép tịnh tiến, phép quay, phép co dãn, phép đối xứng qua điểm, phép kết hợp.”
Hình 3.3 Phép quay quanh một điểm bất kỳ (Trang 14)
Hình 3.2 – Phép biến đổi tỉ lệ với  và - Đề Tài:” Cài đặt thuật toán Bresenham, MidPoint vẽ đường tròn và tô màu theo 2 thuật toán : tô màu theo dòng quét và tô màu lân cận.Sử dụng các phép biến đổi: phép tịnh tiến, phép quay, phép co dãn, phép đối xứng qua điểm, phép kết hợp.”
Hình 3.2 – Phép biến đổi tỉ lệ với và (Trang 16)

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w