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

Viết chương trình vẽ hai đường tròn C1 và C2 cắt nhau. Tô phần giao của hai đường tròn đó.Tô phần bù của C2. Tô phần bù của C1. Lưu ý rằng 3 màu tô này phải khác nhau

18 3,1K 11

Đ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 18
Dung lượng 455,5 KB

Nội dung

BỘ CÔNG THƯƠNG TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP HÀ NỘI KHOA CÔNG NGHỆ THÔNG TIN BÁO CÁO BÀI TẬP LỚN MÔN ĐỒ HỌA MÁY TÍNH ĐỀ TÀI 21: Viết chương trình vẽ hai đường tròn C1 và C2 cắt nhau.. A.Lời

Trang 1

BỘ CÔNG THƯƠNG TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP HÀ NỘI KHOA CÔNG NGHỆ THÔNG TIN

BÁO CÁO BÀI TẬP LỚN MÔN ĐỒ HỌA MÁY TÍNH

ĐỀ TÀI 21: Viết chương trình vẽ hai đường tròn C1 và C2 cắt nhau Tô phần

giao của hai đường tròn đó.Tô phần bù của C2 Tô phần bù của C1 Lưu ý rằng

3 màu tô này phải khác nhau.

GIÁO VIÊN HƯỚNG DẪN: Th.s Nguyễn Thị Cẩm Ngoan LỚP: KHMT2-K5

THÀNH VIÊN NHÓM 21:

HOÀNG TRUNG PHONG − MSV: 641360195 ĐINH TIẾN DŨNG − MSV: 641360078 TRIỆU ĐỨC TRƯỜNG − MSV: 541260029

Hà Nội, tháng 2 – 2013

Trang 2

-MỤC LỤC

A.Lời giới thiệu 3

B.Nội dung 4

I.Khảo sát mục đích đối tượng 4

II.Phân tích các biến số và đưa ra cách giải quyết: 4

1.Phân tích các biến số: 4

2.Hướng giải quyết: 6

III.Cài đạt giao diện,code: 11

1.Giao diện 11

2.Code 12

C.Kết luận 18

D.Tài liệu tham khảo 18

Trang 3

A.Lời giới thiệ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ó

Với đề tài: “Viết chương trình vẽ hai đường tròn C1 và C2 cắt nhau Tô

phần giao của hai đường tròn đó.Tô phần bù của C2 Tô phần bù của C1 Lưu ý rằng 3 màu tô này phải khác nhau ”.

Do kiến thức còn hạn chế và thiếu kinh nghiệm nên bài làm còn nhiều sai sót Mong cô giáo và các bạn giúp đỡ và đóng góp ý kiến để chúng em hoàn thành tốt hơn Chúng em xin chân thành cảm ơn !

Trang 4

B.Nội dung

I.Khảo sát mục đích đối tượng

− Nhập vào tâm và bán kính đường tròn C1.Vẽ đường tròn C1

− Nhập vào tâm và bán kính đường tròn C2.Vẽ đường tròn C2.Với điều kiện là tâm không trùng với C1 và bán kính thích hợp để hai đường tròn cắt nhau

− Tô màu phần giao nhau của hai đường tròn,phần bù của đường tròn C1, phần

bù của đường tròn C2 bằng 3 màu khác nhau

 Các thuật toán dùng trong bài:

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

− 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 chọn điểm (xi + 1,yi - 1)

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

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

Thuật toán tô màu theo đường biên:

Thuật toán tô màu dựa theo đường biên của vùng tô đƣợc xác định

bởi tập các đỉnh của một đa giác, đường biên trong thuật toán đƣợc mô tả bằng một giá trị duy nhất đó là màu của tất cả các điểm thuộc về đường biên Bắt đầu từ điểm nằm bên trong vùng tô, ta sẽ kiểm tra các điểm lân cận của

nó đã được tô màu hay có phải là điểm biên hay không, nếu không phải là điểm đã tô và không phải là điểm biên ta sẽ tô màu nó Quá trình này đƣợc lặp lại cho tới khi nào không còn tô được điểm nào nữa thì dừng Bằng cách này, toàn bộ các điểm thuộc vùng tô được kiểm tra và sẽ đựợc tô hết

II.Phân tích các biến số và đưa ra cách giải quyết:

1.Phân tích các biến số:

 Vẽ hai đường tròn dùng thuật toán Bresenham:

 Đường tròn C1 với các biến số nhập vào x1,y1,R1:

Trang 5

− Tâm (x1,y1)

− Bán kính R1

 Đường tròn C2 với các biến số nhập vào x2,y2,R2:

− Tâm(x2,y2)

− Bán kính R2

 Tìm tọa độ 4 giao điểm của đường thẳng đi qua tâm 2 đường tròn với 2 đường tròn trên

 Đường thẳng đi qua tâm hai đường tròn có dạng y=kx+m:

− k:hệ số góc k=(y1-y2)/(x1-x2)

− m = -kx1+y1

 Giao điểm của đường thẳng d đi qua tâm 2 đường tròn với 2 đường tròn trên

Ta giải hai hệ phương trình:

Hệ 1:Giao điểm đường thẳng d với đường tròn C1

− Các biến số : a,b1,c1,p1,p2,q1,q2

 (k2+1)x2 + (2mk-2x1-2ky1)x+m2-2my1+x12+y12-R12

Đặt

a= k2+1

b1= 2mk-2x1-2ky1

c1= m2-2my1+x12+y12-R12

−Rồi giải phương trình bậc 2 ta được 2 nghiệm p1 và p2

−Tọa độ 2 giao điểm

I1(p1,q1)

(x-x1)2+(y-y1)2 = R12

y=kx+m

Trang 6

Hệ 2:Giao điểm đường thẳng d với đường tròn C2

− Các biến số : a,b2,c2,p3,p4,q3,q4

 (k2+1)x2 + (2mk-2x2-2ky2)x+m2-2my2+x22+y22-R22

Đặt a= k2+1

b2= 2mk-2x2-2ky2

c2= m2-2my2+x22+y22-R22

−Rồi giải phương trình bậc 2 ta được 2 nghiệm p3 và p4

−Tọa độ 2 giao điểm

I3(p3,q3)

I4(p4,q4)

 Tìm trung điểm của giữa các giao điểm trên

− Điểm M1(m1,n1) là trung điểm của I1 và I3

− Điểm M2(m2,n2) là trung điểm của I2 và I3

− Điểm M2(m2,n2) là trung điểm của I2 và I4

 Dùng thuật toán tô màu theo đường biên với 3 điểm M1, M2, M3 để tô 3 miền với màu khách nhau

2.Hướng giải quyết:

Bước 1: Vẽ hai đường tròn dùng thuật toán Bresenham:

(x-x2)2+(y-y2)2 = R22

y=kx+m

Trang 7

Bước 2: Tìm 4 giao điểm của đường thẳng đi qua tâm hai đường tròn với

hai đường tròn trên là I1,I2,I3,I4:

Trang 8

Bước 3: Tìm trung điểm M1 giữa I1 và I3,M2 giữa I2 và I3,M3 giữa I2 và I4

Trang 9

Bước 4: Dùng thuật toán tô màu theo đường biên với 3 điểm M1,,M2,M3:bằng

3 màu khác nhau,ta sẽ tô được màu của phần giao,phần bù đường tròn C1, phần bù đường tròn C2 bằng màu khác nhau

Trang 11

Kết quả:

III.Cài đạt giao diện,code:

1.Giao diện

Trang 12

#include<iostream.h>

#include<conio.h>

#include<stdlib.h>

#include<dos.h>

#include<stdio.h>

#include<math.h>

#include<graphics.h>

#define round(a) int(a+0.5)

/*Thuat toan to mau loang*/

void vetdauloang(int x1,int y1, int mb, int mt) {

Trang 13

if( (getpixel(x1,y1)!=mb) &&(getpixel(x1,y1)!=mt) ) {

putpixel(x1,y1,mt);

vetdauloang(x1+1,y1,mb,mt);

vetdauloang(x1,y1-1,mb,mt);

vetdauloang(x1-1,y1,mb,mt);

vetdauloang(x1,y1+1,mb,mt);

}

}

/*Ham ve duong tron theo thuat toan Bresenham*/ void Duongtron_BRE(int xc, int yc, int R, int color) {

int x, y, d;

x = 0;

y = R;

d = 3 - 2 * R;

while (x <= y)

{

putpixel(xc + x, yc + y, color);

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

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

putpixel(xc - x, yc - y, color);

Trang 14

putpixel(xc + y, yc + x, color);

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

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

putpixel(xc - y, yc - x, color);

if (d < 0)

d += 4 * x + 6;

else

{

d += 4 * (x-y) + 10;

y ;

}

x++;

}

}

int main()

{

int x1,y1,x2,y2,R1,R2,m1,n1,m2,n2,m3,n3,d,m,n; float k,a,b1,c1,b2,c2,p1,q1,p2,q2,p3,q3,p4,q4; int mh=0; int mode;

initgraph(&mh,&mode,"");

while(true)

{

cleardevice();

system("cls");

Trang 15

cout<<"Duong tron 1:";

cout<<"\n Nhap toa do tam :";

cout<<"\n x1= ";cin>>x1;

cout<<"\n y1= ";cin>>y1;

cout<<"\n Nhap ban kinh: ";

cout<<"\n R1= ";

cin>>R1;

cout<<"Duong tron 2:";

cout<<"\n Nhap toa do tam :";

cout<<"\n x2= ";cin>>x2;

cout<<"\n y2= ";cin>>y2;

d=int(sqrt((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1)));

cout<<"\n Nhap ban kinh trong khoang tu "<<abs(d-R1)<<" den "<<d+R1; cout<<"\n Nhap ban kinh: ";

cout<<"\n R2= ";

cin>>R2;

if(((x1==x2)&&(y1==y2))||R2<abs(d-R1)||(R2>d+R1))

{

cout<<"\n Nhap sai.Tam 2 duong tron khong trung nhau va ban kinh R2 thich hop";

}

else

{/* Tim 4 giao diem cua duong thang di qua 2 tam va 2 duong tron

Roi tim trung diem giau cac giao diem do de to mau */

Trang 16

if(x1==x2)

/* Truong hop x1=x2 nen k khong xac dinh*/

{

p1=x1;q1=y1+R1;

p2=x1;q2=y1-R1;

p3=x1;q3=y2+R2;

p4=x1;q4=y2-R2;

m1=round(p1+p3)/2;

n1=round(q1+q3)/2;

m2=round(p2+p3)/2;

n2=round(q2+q3)/2;

m3=round(p2+p4)/2;

n3=round(q2+q4)/2;

}

else

/* Truong hop x1 khac x2*/

{

/*Cac he so cua phuong trinh duong thang di qua 2 tam co dang y=kx+m*/ k=(y1-y2)/(x1-x2);

m=int(y1-k*x1);

a=k*k+1;

/*Cac he so cua chuong trinh giao diem cua duong thang di qua 2 tam va duong tron*/

b1=2*m*k-2*x1-2*y1*k;

Trang 17

c1=m*m+x1*x1+y1*y1-R1*R1-2*y1*m;

b2=2*m*k-2*x2-2*y2*k;

c2=m*m+x2*x2+y2*y2-R2*R2-2*y2*m;

/*Cac giao diem (p,q) cua duong thang di qua 2 tam va hai duong tron*/ p1=((-b1+sqrt(b1*b1-4*a*c1))/(2*a));q1=(k*p1+m);

p2=((-b1-sqrt(b1*b1-4*a*c1))/(2*a));q2=(k*p2+m);

p3=((-b2+sqrt(b2*b2-4*a*c2))/(2*a));q3=(k*p3+m);

p4=((-b2-sqrt(b2*b2-4*a*c2))/(2*a));q4=(k*p4+m);

/* Trung diem cua cac giao diem tren */

m1=round((p1+p3)/2);

n1=round((q1+q3)/2);

m2=round((p2+p3)/2);

n2=round((q2+q3)/2);

m3=round((p2+p4)/2);

n3=round((q2+q4)/2);

}

Duongtron_BRE(x1,y1,R1,7);

Duongtron_BRE(x2,y2,R2,7);

vetdauloang(m3,n3,7,12);

vetdauloang(m2,n2,7,14);

vetdauloang(m1,n1,7,10);

}

cout<<"\n Nhan 1 so bat ky de nhap lai: ";cin>>n;

}

Trang 18

getch();

closegraph();

}

C.Kết luận

Qua việc làm bài tập lớn và các kiến thức mà cô dạy về môn học đồ họa máy tính

đã cho chúng em nhiều kiến thức bổ ích áp dụng vào thực tiễn cuộc sống.Đồ họa máy tính còn có nhiều ứng dụng để áp dụng vào giáo dục,xây dựng,thiết kế, v v vẫn đang chờ chúng ta khai phá…

D.Tài liệu tham khảo

1.Giáo trình Đồ Họa Máy Tính – khoa CNTT trường ĐH Công Nghiệp Hà Nội 2.Giáo trình Kỹ Thuật Đồ Họa – trường Học Viện Công Nghệ Bưu Chính Viễn Thông

Và môt số tài liệu tham khảo trên internet…

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

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

w