Trong thành công của kỹ thuật đồ họa ngày nay không thể không nói đếnsự phát triển vượt bậc của tốc độ phần cứng lẫn hệ điều hành.. Nhưng bản thânkỹ thuật đồ họa thì có
Trang 1TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP HÀ NỘIKHOA CÔNG NGHỆ THÔNG TIN
- -BÀI TẬP LỚN
Môn: Đồ họa máy tínhĐề tài số: 17ĐỀ TÀI: XÂY DỰNG CHƯƠNG TRÌNH VẼ CON LẬT ĐẬT CHUYỂNĐỘNG HAI BÊN VÀ NGÔI SAONĂM CÁNH QUAY QUANH TÂM, DÙNG
PHÍM MŨI TÊN DI CHUYỂN SAO DI KHẮP MÀN HÌNH
Giáo viên hướng dẫn: THS Nguyễn Thị Cẩm Ngoan
Sinh viên thực hiện:
1 Nguyễn Sỹ Chiến
2 Trịnh Khương Duy
3 Trần Văn Hiệp
Hà nội, tháng 8 năm 2013
Trang 2Lời nói đầu
Có câu rằng “một hình ảnh bằng cả nghìn lời nói ” Điều đó thật không thểphủ nhận Và rõ ràng là nếu hiển thị thông tin chỉ với các ký hiệu, chữ cái, chữsố không thôi thì không thể hấp dẫn và dễ hiểu như khi có thêm biểu diễn đồ họaKỹ thuật đồ hoạ cũng là công cụ không thể thiếu trong các ngành khoa học kỹthuật, giáo dục, nghệ thuật, giải trí, quảng cáo (để diễn đạt máy móc thiết bị,kiến trúc, cấu trúc cơ thể, thông tin thiên văn địa lý, hình ảnh minh hoạ ) Chính
vì vậy, đồ họa là một vấn đề được quan tâm trong ngành công nghệ thông tin Cùng với sự phát triển của tin học, kỹ thuật đồ họa trên máy vi tính, ngàycàng trở nên tinh xảo Giao diện các phần mềm ngày nay trở nên thân thiện, đẹpmắt nhờ các thể hiện đồ họa Sự hổ trợ của tin học cho các ngành khác trở nênđắc lực hơn nhờ khả năng đồ họa vi tính Và thế giới thực thì được biểu diễnmột cách sinh động, linh hoạt, đầy màu sắc bằng không gian ba chiều
Trong thành công của kỹ thuật đồ họa ngày nay không thể không nói đếnsự phát triển vượt bậc của tốc độ phần cứng lẫn hệ điều hành Nhưng bản thânkỹ thuật đồ họa thì có bước tiến nhảy vọt từ những phép tính toán học phức tạpđến những thư viện đồ họa được tạo sẳn Các thư viện này cho phép giảm nhẹthời gian và công sức của người lập trình
Mục tiêu của bài tập lớn này là tìm hiểu các thuật toán,cách vẽ đường tròn,hình tam giác bằng ngôn ngữ C++, áp dụng các phép biến hình trong không gian2D như tịnh tiến, quay, tỉ lệ để tạo thành hình con lật đật có thể di chuyển 2 bên,hình ngôi sao năm cánh quay quanh tâm và di chuyển bằng các phím mũi tên Tuy nhiên, đề tài không thể không tránh khỏi những hạn chế và thiếu sót,nên rất mong được sự chỉ bảo, góp ý của Cô và các bạn
Nhóm em xin chân thành cảm ơn
Trang 3Chương 1: Khảo Sát & Phân Tích 4
1 Khảo sát 4
1.1 Mục đích nghiên cứu 4
1.2 Khảo sát 4
1.3 Đối tượng nghiên cứu 7
2 Phân Tích 7
2.1 Xây dựng bộ công cụ 2D 7
2.2 Các bước vẽ con lật đật 7
2.3 Các bước vẽ ngôi sao quay và có thể di chuyển 9
Chương 2 Cài đặt chương trình 10
1 Cài đặt chương trình vẽ con lật đật 10
1.1 Thuật toán vẽ đường tròn cơ sở 10
1.2 Hàm tịnh tiến và quay để thành hình con lật đật 12
1.3 Hàm tạo chuyển động 14
1.4 Hàm tô mầu cho lật đật 16
2 Cài đặt ngôi sao quay và di chuyển bằng phím mũi tên 18
2.1 Các hàm vẽ ngôi sao 18
2.2 Các hàm tạo chuyển động cho ngôi sao 21
2.3 Hàm tô màu cho ngôi sao 24
3 Cài đặt giao diện sử dụng 27
1 Giao diện của menu chọn 27
2 Giao diên vẽ lật đật 27
3 Giao diện ngôi sao 28
Kết luận 29
Tài liệu tham khảo 29
Trang 4Chương 1: Khảo Sát & Phân Tích
1 Khảo sát
1.1 Mục đích nghiên cứu
Áp dụng các thuật toán vẽ đường tròn, tinh tiến, và quay góc để tạo hìnhvà chuyển động cho con lật đật
Áp dụng các thuật toán vẽ các hình cơ bản và các thuật toán biến hình vẽvà tạo chuyển động cho ngôi sao quay di chuyển bằng phím mũi tên
1.2 Khảo sát.
Đề tài: XÂY DỰNG CHƯƠNG TRÌNH VẼ CON LẬT ĐẬT VÀ CÁINGÔI SAO QUAY là đề tài yêu cầu tìm hiểu và vận dụng các thuật toán cơ bảnnhư: vẽ đường thẳng, đường tròn, tịnh tiến, quay…
Yêu cầu tư duy và vận dụng chắc những kiến thức cơ bản trong dựng hìnhvà các phép biến hình
- Khảo sát con lật đật:
+ Một số hình ảnh về con lật đật
Trang 5Về con lật đật có khá là nhiều kiểu dáng khác nhau nhưng về cấu tao đều
có điểm chung gồm một khối tròn ở dưới làm trọng tâm giúp lật đật đứng vững,qua khảo sát nhóm em quyết định vẽ con lật đật có hình dáng như sau:
Con lật đật này được cấu tạo từ 4 hình cầu ghép lại với nhau khi vẽ lênđồ họa 2D sẽ là 4 hình tròn
2
Trang 6Để vẽ con lật đật như trên cần sử dụng các hàm vẽ đường tròn, các hàmtịnh tiến và tỉ lệ trong không gian 2D.
- Khảo sát ngôi sao năm cánh
Hình dảnh ngôi sao
Trên đây là hình ảnh ngôi sao năm cánh qua khảo sát thấy có các đặcđiểm như sau:
+ Các đỉnh cách đều tâm O một khoảng cách r
+ Hai đỉnh liên tiếp kề nhau 72o
Để vẽ ngôi sao ta áp dụng thuật toán vẽ 1 tam giác ban đầu và quay tâmgiác quanh tâm O với góc 72o sau năm lần quay ta được ngôi sao như mongmuốn
1
Trang 7Di 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ềnvà 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ểnKhi thực hiện phép di chuyển hình sao lên trên, ta thực hiệnphé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ênphep tịnh tiên hình sao theo vector H có tọa độ (1;0)
1.3 Đối tượng nghiên cứu
Vẽ trục tọa độ bằng bộ công cu 2D xây dựng trên chương trình Dev-C,xây dựng chương trình vẽ đường tròn
Vẽ đường thẳng bằng thuật toán MidPoint, vẽ cánh ngôi sao bằng bộ công
cụ 2D
2 Phân Tích
2.1 Xây dựng bộ công cụ 2D
Để vẽ được các hình trên mặt phẳng tọa độ trước tiên ta xây dựng bộ công
cụ 2D
a Xây dựng công cụ chuyển đổi hệ quan sát
- Xây dựng của sổ
- Khung nhìn
- Các công cụ chuyển đến, vẽ đến, hệ tọa độ
b Mục đích
Mô phỏng hình ảnh trong không gian thực 2 chiều lên màn hình
c Xây dựng bộ công cụ 2D
- Khai báo các biến tlx, tly, xw1, xw2, yw1, yw2
Trang 8- Xây dựng các công cụ phụ trợ như:
void cuaso(float x1,float y1,float x2,float y2);
void khungnhin(int x1,int y1,int x2,int y2);
void chuyenden(float x,float y);
void veden(float x, float y);
void vetruc();
2.2 Các bước vẽ con lật đật
B1 Vẽ 1 đường tròn ban đầu
B2 Vẽ 4 đường tròn 2,3,4 bằng cách tỉ lệ và tịnh tiến đến các vi trí phù hợp.
B3 Thực hiện phép tịnh tiến 4 đường tròn 1,2,3,4 đông thời thực hiện phép quay
3 đường tròn 2,3,4 với tâm quay là tâm O của đường tròn 1
1
2
1
Trang 102.3 Các bước vẽ ngôi sao quay và có thể di chuyển
B1 Vẽ 1 tam giác cơ sở
O
B2 Thực hiện phép quay -72o quanh điểm O ta được cánh thứ 2
B3 Tiếp tục quay ta sẽ được các cánh còn lại
Trang 11Chương 2 Cài đặt chương trình
1 Cài đặt chương trình vẽ con lật đật
1.1 Thuật toán vẽ đường tròn cơ sở
void put8pixel(float x0, float y0,float xm, float ym, int setColor )
{
putpixel(xm+x0, ym+y0, setColor);
putpixel(ym+x0, xm+y0, setColor);
Trang 12putpixel(ym+x0, -xm+y0, setColor);
putpixel(-xm+x0, ym+y0, setColor);
putpixel(xm+x0, -ym+y0, setColor);
putpixel(-xm+x0, -ym+y0, setColor);
putpixel(-ym+x0, -xm+y0, setColor);
putpixel(-ym+x0, xm+y0, setColor);
Trang 131.2 Hàm tịnh tiến và quay để thành hình con lật đật
void latdat_quay(duongtron a[4], duongtron b[4], float fi)
Trang 15Hình ảnh con lật đật sau khi vẽ
1.3 Hàm tạo chuyển động
void latdat_chuyendong(duongtron a[4])
Trang 16int i=0,j=1;
char c;
int latdat_delay=60000/(latdat_v*60);
setcolor(10);
outtextxy(0,0,"Nhan phim Space Bar de tam dung");
outtextxy(0,20,"Nhan phim Enter de thoat");
Trang 171.4 Hàm tô mầu cho lật đật
void latdat_tomau(duongtron a[4])
Trang 19Hình ảnh lật đật sau khi được tô màu
2 Cài đặt ngôi sao quay và di chuyển bằng phím mũi tên
2.1 Các hàm vẽ ngôi sao
void sao_quay(hinhsao sao1, hinhsao &sao2, float fi)
sao2.tg[i].y=(sao1.tg[i].x-sao1.x)*sin(fi)+(sao1.tg[i].y-sao1.y)*cos(fi)+sao1.y;
Trang 22Hình ảnh ngôi sao 5 cánh sau khi vẽ
2.2 Các hàm tạo chuyển động cho ngôi sao
void sao_chuyendong(hinhsao sao1)
{
int mh=0,mode=0;
Trang 23outtextxy(0,0,"Nhan phim Space Bar de tam dung");
outtextxy(0,20,"Nhan phim Enter de thoat");
Trang 25}
while(c!=13);
closegraph();
}
2.3 Hàm tô màu cho ngôi sao
void sao_tomau(hinhsao sao1)
Trang 27Ngôi sao khi tô màu
Trang 283 Cài đặt giao diện sử dụng
1 Giao diện của menu chọn
2 Giao diên vẽ lật đật
Trang 293 Giao diện ngôi sao
Trang 30Kế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áytính đã cho chúng em nhiều kiến thức bổ ích áp dụng vào thực tiễn cuộcsố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âydựng,thiết kế, v v vẫn đang chờ chúng ta khai phá…
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ễnThông
Và môt số tài liệu tham khảo trên internet…