ĐỀ TÀI VẼ NGÔI SAO 5 CÁNH VỪA QUAY VỪA DI CHUYỂN

15 3.6K 32
ĐỀ TÀI VẼ NGÔI SAO 5 CÁNH VỪA QUAY VỪA DI CHUYỂN

Đ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

TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP HÀ NỘI KHOA CÔNG NGHỆ THÔNG TIN  BÀI TẬP LỚN MÔN: ĐỒ HỌA MÁY TÍNH ĐỀ TÀI: VẼ NGÔI SAO 5 CÁNH VỪA QUAY VỪA DI CHUYỂN 1 THÀNH VIÊN THỰC HIỆN: 1. Hỏa Tiến Anh 2. Đinh Thị Như Hương 3. Nguyễn Thị Sim MỤC LỤC 2 Lời nói đầu Đồ 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 và được sử dụng ở nhiều lĩnh vực khác nhau như : khoa học, nghệ thuật, kinh doanh, thương mại, công nghiệp, quản lí, giáo dục, giải trí, … Số lượng các chương trình đồ họa ứng dụng thật khổng lồ và phát triển liên tục. Với sự hứng thú về đồ họa 2D nhóm chúng em chọn đề tài “Vẽ hình sao 5 cánh quay quanh tâm và di chuyển quanh màn hình bằng 4 phím mũi tên” để có cơ hội "m hiểu sâu hơn môn học đồ họa máy (nh này. Qua thời gian "m hiểu, chúng em có ý tưởng và các thuật toán cho bài tập lơn và thêm kinh nghiêm sau hơn về đồ họa. Chúng em xin gửi lời cảm ơn chân thành tới cô giáo: “đã tận tâm chỉ bảo và giúp đỡ chúng em hoàn thành đề tài này. Trong quá trình làm đề tài sẽ không tránh khỏi những sai sót, khuyết điểm. Vì vậy, nhóm thực hiện chúng em hy vọng nhận được sự đánh giá và đóng góp nhiệt "nh từ phía thầy cô và các bạn để bài của nhóm chúng em được hoàn thiện hơn. Chúng em xin chân thành cảm ơn! 3 I. PHẦN GIỚI THIỆU 1.Vẽ sao 5 cánh quay quanh tâm 1.1.Ý tưởng. a. Mô tả ngôi sao 5 cánh. - Hình bên là ngôi sao 5 cánh - Đặc điểm: Ngôi sao có cách đỉnh cách đều tâm O 1 khoảng r. Hai đỉnh liên tiếp kề nhau 72 o b. Ý tưởng vẽ hình sao • Hệ trục tọa độ mode 19 Với O(0,0); Ox có số điểm ảnh tối đa là 200 pixel; Oy có số điểm ảnh tối đa là 320 pixel; • Vẽ sao: Gắn vào hệ trục XO1Y Tọa độ tâm là O1(xc,yc); Khoảng cách từ tâm đến đỉnh là r; Xác định tọa độ của các đỉnh - Quay A quanh tâm O1 theo hướng + 1 góc α + (72*π)/180 ta được A2. 4 - Quay A quanh tâm O1, theo chiều hường + một góc α+(72*2*π)/180. Ta được A3 - Quay A quanh tâm O1, theo chiều hướng + một góc α + (72*3*π)/180 ta được A4. - Quay A quanh tâm O1, theo chiều hướng + một góc α +(72*4*)/180 ta được A5. Khi đó hình sao ta cần là: c. Di chuyển hình sao. • Quay quanh tâm. Thực hiện việc chuyển ngôi sao vừa tạo thành màu giống màu nền và sau đó tạo 1 ngôi sao khác các đình quay quanh tâm cùng 1 góc β nào đó! • Sao di chuyển Khi thực hiện phép di chuyển hình sao lên trên, ta thực hiện phép tịnh tiến hình sao theo vector I có tọa độ (-1;0). Khi thực hiện phép di chyển hình sao xuống dưới, ta thực hiên phep tịnh tiên hình sao theo vector H có tọa độ (1;0). 1.2. Giải thuật • Vẽ hình sao. Vẽ hình sao với tâm có tọa độ là (xc, yc), khoảng cách từ tâm đền đỉnh r là c. Đỉnh A1(xo,yo) với xo, yo tạo với trục Ox 1 góc α, các đỉnh A2, A3, A4, A5 được lưu trên các mảng 1 chiều A2(a[1],b[1]) A3(a[2],b[2]) A4(a[3],b[3]) A5(a[4],a[4]). Code vẽ sao: void vesao(int mt){ 5 setcolor(mt); //ve ngoi sao, chu y a1 la mang cac dinh ngoai ngoi sao for(int i=1;i<=2;i++){ chuyenden(a1[i].x,a1[i].y);veden(a1[i+2].x,a1[i+2].y); chuyenden(a1[i].x,a1[i].y);veden(a1[i+3].x,a1[i+3].y); } chuyenden(a1[3].x,a1[3].y);veden(a1[5].x,a1[5].y); } for(int i=1;i<=5;i++){ a1[i].x=2.5-(0.6*cos(phi*M_PI/180)); a2[i].x=2.5+(0.3*cos(phi*M_PI/180)); a1[i].y=2+(0.6*sin(phi*M_PI/180)); a2[i].y=2-(0.3*sin(phi*M_PI/180)); phi+=72; //moi lan quay goc thay doi 72 do(cai nay search dc) } vesao(RED); delay(200); vesao(GREEN); Sao vừa quay quanh tâm vừa di chuyển • int main() 6 { int gd=0,gm; initgraph(&gd,&gm,""); cuaso(1,1,4,3); setbkcolor(GREEN); setcolor(RED); khungnhin(120,100,520,380); //tinh toan cac dinh cua ngoi sao de noi chung lai trong ham vesao int phi=90;{ for(int i=1;i<=5;i++){ a1[i].x=2.5+(0.6*cos(phi*M_PI/180)); a2[i].x=2.5+(0.3*cos(phi*M_PI/180)); a1[i].y=2+(0.6*sin(phi*M_PI/180)); a2[i].y=2+(0.3*sin(phi*M_PI/180)); phi+=72; } clearviewport(); vesao(RED); delay(200); vesao(GREEN); char c1, c2; int i=1; while (1) { if (i==360) i=0; else i++; do{ if (kbhit()) { if ((c1=getch())==0) { c2 = getch(); { for(int i=1;i<=5;i++){ a1[i].x=2.5-(0.6*cos(phi*M_PI/180)); a2[i].x=2.5+(0.3*cos(phi*M_PI/180)); 7 a1[i].y=2+(0.6*sin(phi*M_PI/180)); a2[i].y=2-(0.3*sin(phi*M_PI/180)); phi+=72; //moi lan quay goc thay doi 72 do(cai nay search dc) } } } vesao(RED); delay(200); vesao(GREEN); } { for(int i=1;i<=5;i++){ a1[i].x=2.5+(0.6*cos(phi*M_PI/180)); a2[i].x=2.5-(0.3*cos(phi*M_PI/180)); a1[i].y=2-(0.6*sin(phi*M_PI/180)); a2[i].y=2+(0.3*sin(phi*M_PI/180)); phi+=72; } clearviewport(); vesao(RED); delay(200); vesao(GREEN); delay(200); } for(int i=1;i<=5;i++){ a1[i].x=2.5+(0.6*cos(phi*M_PI/180)); a2[i].x=2.5-(0.3*cos(phi*M_PI/180)); a1[i].y=2+(0.6*sin(phi*M_PI/180)); a2[i].y=2-(0.3*sin(phi*M_PI/180)); phi+=72; } { if (c2==75) { 8 for(int i=1;i<=5;i++){ a1[i].x=2.5-0.5+(0.6*cos(phi*M_PI/180)); a2[i].x=2.5-0.5+(0.3*cos(phi*M_PI/180)); a1[i].y=2-0.5+(0.6*sin(phi*M_PI/180)); a2[i].y=2-0.5+(0.3*sin(phi*M_PI/180)); phi+=72; //moi lan quay goc thay doi 72 do(cai nay search dc) }} vesao(RED); delay(20); vesao(GREEN);} if (c2==77) { for(int i=1;i<=5;i++){ a1[i].x=2.5+0.5+(0.6*cos(phi*M_PI/180)); a2[i].x=2.5-0.5+(0.3*cos(phi*M_PI/180)); a1[i].y=2-0.5+(0.6*sin(phi*M_PI/180)); a2[i].y=2+0.5+(0.3*sin(phi*M_PI/180)); phi+=72; //moi lan quay goc thay doi 72 do(cai nay search dc) }} vesao(RED); delay(20); vesao(GREEN); if (c2==80) { for(int i=1;i<=5;i++){ a1[i].x=2.5+(0.6*cos(phi*M_PI/180)); a2[i].x=2.5-0.5+(0.3*cos(phi*M_PI/180)); a1[i].y=2-0.5+(0.6*sin(phi*M_PI/180)); a2[i].y=2+(0.3*sin(phi*M_PI/180)); phi+=72; //moi lan quay goc thay doi 72 do(cai nay search dc) }} vesao(RED); delay(20); vesao(GREEN); 9 if(c2==27) break; } while (!kbhit()); } getch(); } closegraph();} II. CHƯƠNG TRÌNH 1.Code Trương trình dùng 4 phím di chuyển hình sao quay quanh tâm. #include <stdlib.h> #include <graphics.h> #include <conio.h> #include <math.h> #include <iostream> #include<dos.h> struct dinh{float x,y;} a1[10],a2[10]; //2 mang luu gia tri cac đỉnh trong va ngoai tam giac float xw1,yw1,xw2,yw2; int xv1,yv1,yv2,xv2; float tlx,tly; //cac cong cu ve 2d void cuaso(float x1,float y1,float x2,float y2) { 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); tly=(yv2-yv1)/(yw2-yw1); } void chuyenden(float x,float y){ int xm=(int)(tlx*(x-xw1)+xv1); int ym=(int)(tly*(yw2-y)+yv1); moveto(xm,ym); } void veden(float x,float y){ int xm=(int)(tlx*(x-xw1)+xv1); int ym=(int)(tly*(yw2-y)+yv1); 10 [...]... //moi lan quay goc thay doi 72 do(cai nay search dc) } vesao(RED); delay(200); vesao(GREEN); } { for(int i=1;i< =5; i++){ a1[i].x=2 .5+ (0.6*cos(phi*M_PI/180)); a2[i].x=2 .5- (0.3*cos(phi*M_PI/180)); a1[i].y=2-(0.6*sin(phi*M_PI/180)); a2[i].y=2+(0.3*sin(phi*M_PI/180)); phi+=72; //moi lan quay goc thay doi 72 do(cai nay search dc) } vesao(RED); delay(200); vesao(GREEN); } } } } getch(); closegraph(); } 2.Hình... toan cac dinh cua ngoi sao de noi chung lai trong ham vesao int phi=90;{ clearviewport(); char c1, c2; int i=1; while (1) { if (i==360) i=0; else i++; if (kbhit()) { if ((c1=getch())==0) c2 = getch(); { for(int i=1;i< =5; i++){ a1[i].x=2 .5- (0.6*cos(phi*M_PI/180)); a2[i].x=2 .5+ (0.3*cos(phi*M_PI/180)); 11 a1[i].y=2+(0.6*sin(phi*M_PI/180)); a2[i].y=2-(0.3*sin(phi*M_PI/180)); phi+=72; //moi lan quay goc... void vesao(int mt){ setcolor(mt); //ve ngoi sao, chu y a1 la mang cac dinh ngoai ngoi sao for(int i=1;i . ơn! 3 I. PHẦN GIỚI THIỆU 1 .Vẽ sao 5 cánh quay quanh tâm 1.1.Ý tưởng. a. Mô tả ngôi sao 5 cánh. - Hình bên là ngôi sao 5 cánh - Đặc điểm: Ngôi sao có cách đỉnh cách đều tâm O 1 khoảng r. Hai đỉnh. NGHIỆP HÀ NỘI KHOA CÔNG NGHỆ THÔNG TIN  BÀI TẬP LỚN MÔN: ĐỒ HỌA MÁY TÍNH ĐỀ TÀI: VẼ NGÔI SAO 5 CÁNH VỪA QUAY VỪA DI CHUYỂN 1 THÀNH VIÊN THỰC HIỆN: 1. Hỏa Tiến Anh 2. Đinh Thị Như Hương 3 được A4. - Quay A quanh tâm O1, theo chiều hướng + một góc α +(72*4*)/180 ta được A5. Khi đó hình sao ta cần là: c. Di chuyển hình sao. • Quay quanh tâm. Thực hiện việc chuyển ngôi sao vừa tạo

Ngày đăng: 06/11/2014, 00:59

Từ khóa liên quan

Mục lục

  • I. PHẦN GIỚI THIỆU

    • 1.Vẽ sao 5 cánh quay quanh tâm

      • 1.1.Ý tưởng.

      • 1.2. Giải thuật

      • II. CHƯƠNG TRÌNH

        • 1.Code

        • 2.Hình ảnh minh họa

Tài liệu cùng người dùng

Tài liệu liên quan