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ỌC ĐỒ HỌA MÁY TÍNH ĐỀ TÀI:“Cài đặt thuật toán tạo bóng đa diện”... LỜI NÓI ĐẦUĐồ họ
Trang 1TRƯỜ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ỌC
ĐỒ HỌA MÁY TÍNH
ĐỀ TÀI:“Cài đặt thuật toán tạo bóng đa diện”
NHÓM THỰC HIỆN: Nhóm 14
GIÁO VIÊN HƯỚNG DẪN:
Hà Nội, ngày 20/ 2/2013
Trang 2LỜI NÓI ĐẦU
Đồ họa là một trong những lĩnh vực phát triển rất nhanh của ngành công nghêthông tin Nó được ứng dụng rộng rãi trong nhiều lĩnh vực khoa học và công nghê.Chẳng hạn như trong y học, kiến trúc, giải trí… Đồ họa máy tính đã giúp chúng ta thayđổi cách cảm nhận và sử dụng máy tính, nó đã trở thành những công cụ trực quan quantrọng không thể thiếu trong đời sống hằng ngày Vì vậy, môn đồ họa đã trở thành mộttrong những môn học chính trong các chuyên nghành Công nghê thông tin ở cáctrường đại học
Trong bài tập lớn bộ môn đồ họa máy tính nhóm em được giao đề tài: “Cài đặt thuật toán toạ bóng đa diện” Được sự hướng dẫn của cô giáo bộ môn cũng như qua
các cổng thông tin Internet, tài liêu và sự tìm tòi trên các cuốn sách tài liêu liên quantới đề tài nhóm em đã hoàn thành bài tập lớn được giao Trong quá trình hoàn thànhnhóm đã gặp được một số khó khăn cũng như thuận lợi và còn nhiều hạn chế Nhóm
em rất mong được sự đóng góp, bổ sung ý kiến để bài tập lớn của nhóm em có thểhoàn thành tốt các đề tài tiếp theo cũng như đề tài của nhóm sau này
Trang 3Hà Nội, Ngày 14 tháng 2 năm 2013
CHƯƠNG I TỔNG QUAN VỀ ĐỒ HỌA MÁY TÍNH
1. Khái niệm kỹ thuật đồ họa máy tính (COMPUTER GRAGHICS)
Kỹ thuật đồ họa máy tính là phương pháp và công nghê dùng trong viêc chuyểnđổi qua lại giữa dữ liêu và hình ảnh trên màn hình bằng máy tính [ISO] Kỹ thuật đồhọa hay đồ họa máy tính còn được hiểu dưới dạng phương pháp và kỹ thuật tạo hìnhảnh từ các mô hình toán học mô tả các đối tượng hay dữ liêu lấy được từ các đối tượngcó thật trong thực tế
Thuật ngữ kỹ thuật đồ họa máy tính được đề xuất bởi một nhà khoa học ngườiMỹ tên là William Fetter vào năm 1960 Khi đó ông còn đang nghiên cứu xây dựng
mô hình buồng lái máy bay cho hãng Boeing của Mỹ Ông đã dựa trên các hình ảnh bachiều của mô hình của người phi công trong buồng lái của máy bay để xây dựng lênmột mô hình tối ưu cho buồng lái máy bay Boeing
Lịch sử đồ họa trong những năm 1960 còn được đánh dấu bởi dự án Sketchpadtại MIT với Ivan Shutherland tại hội nghị Fall Joint Computer cùng với sự kiên lần đầutiên tạo mới, hiển thị và thay đổi được dữ liêu hình ảnh trực tiếp trên màn hình trongthời gian thực
Trang 4Hình 1.1 Ivan Shutherland
Kỹ thuật đồ họa còn liên tục hoàn thiên vào những năm 1970 với sự xuất hiêncủa các chuẩn về đồ họa làm tăng cường khả năng giao tiếp và tái sự dụng của cácphần mềm cũng như các thư viên đồ họa
2. Các kỹ thuật đồ họa
Nguyên lỹ xây dựng các mô hình và hình ảnh trong kỹ thuật đồ họa điểm gồm :các mô hình, hình ảnh của các đối tượng được hiển thị thông qua từng pixel
Có hai phương pháp để tạo ra các pixel này:
- Phương pháp thứ nhất là dùng phần mềm để vẽ trực tiếp từng pixel một dựatrên các lỹ thuyết mô phỏng
- Phương pháp thứ hai là số hóa hình ảnh thực của đối tượng Sau đó chúng ta cóthể sửa đổi hoặc xử lý mảng các pixel thu được theo những phương pháp khác nhau đểthu được hình ảnh đặc trưng của đối tượng
2.2 Kỹ thuật đồ họa vector
Trang 5Nguyên lý xây dựng các mô hình và hình ảnh trong kỹ thuật đồ họa vector nhưsau : trước hết người ta xây dựng mô hình hình học cho mô hình hoặc hình ảnh của đốitượng, xác định các thuộc tính của mô hình hình học này, sau đó dựa trên mô hìnhhình học này sẽ thực hiên quá trình tô trát để hiển thị từng điểm của mô hình, hình ảnhthực của đối tượng Ở kỹ thuật đồ họa này chúng ta chỉ lưu trữ mô tả của toán học củacác thành phần trong mô hình hình học cũng với các thuộc tính tương ứng của nó màkhông lưu trữ lại toàn bộ tất cả các pixel của hình ảnh tô trát được.
3. Ứng dụng của đồ họa máy tính
Ngày nay, đồ họa máy tính được xử dụng trong nhiều lĩnh vực khác nhau như:công nghiêp, thương mại, quản lý giáo dục, giải trí…như:
- Tạo giao diên như các chương trình ứng dụng Windows, Excel…
- Tạo ra các biểu đồ dùng trong thương mại, khoa học và kỹ thuật
- Tự động hóa văn phòng và chế bản điên tử
- Thiết kế với sự trợ giúp của máy tính
Trang 6CHƯƠNG II CÁC THUẬT TOÁN SƯ DỤNG TRONG ĐỀ TÀI
1 Thuật toán Bresenham
Ở đây, ta chỉ xét nhánh vẽ từ trên xuống
Giả sử điểm ( xi , yi ) đã được vẽ Điểm tiếp theo cần chọn sẽ là ( xi + 1,yi ) hoặc(xi+1,yi – 1)
Trang 7Pi+1 – pi = 2 [(xi+1 + 1)2 – (xi + 1)2] + 2.(yi+12 – yi2 + yi+1 - yi) (**)
Trang 8p:=p - 4*y + 2*(b2/a2)*(2*x+3);y:=y-1;
Trang 9While (a2/b2) * (y/x) <=1 do
Trang 10Phép chiếu song song bảo toàn được mối quan hê giữa các chiều của đối tượng, đây chính là kĩ thuật được dùng tỏng phác thảo để tạo ra phần khung của đối tượng ba chiều Người ta dùng phương pháp này để quan sát chính xác ở các cạnh khác nhau của đối tượng Tuy nhiên, phép chiếu song song không cho một biểu diễn thực của đối tượng ba chiều.
Trong khi đó, phép chiếu phối cảnh tạo ra được biểu diễn thực hơn nhưng lại không bảo toàn được mối liên hê giữa các chiều Các đường thẳng càng xa sẽ có các anh chiếu nhở hơn.Nói chung, kĩ thuật để vẽ đường thẳng ba chiều là:
• Chiếu mỗi điểm đầu mút thành các điểm hai chiều
• Vẽ đường thẳng nối hai điểm ảnh qua phép chiếu
mặt phẳng chiếu
Sở dĩ chúng ta làm được điều này vì các phép chiếu mà chúng ta sử dụng bảo toàn đường thằng
3 Phép chiếu song song ( parallel projection)
Xét điểm ba chiều,P=(Px,Py,Pz), cách đơn giản nhất là bỏ đi thành phần z để chiếu P thành P’=(Px,Py) Điều này tương đương với chiếu điểm chiếu đó lên mặt phẳng xy theo phương của trục z Mặt phẳng xy là mặt phẳng quan sát Xem hình vẽ minh hoạ 5.5, ở đâu điểm chiếu chính là giao điểm của tia a qua P và song song với trục z vuông góc với mặt phẳng
xy Tia a là tia chiếu
Dễ dàng thấy rằng phép chiếu này bảo toàn đường thẳng
Trang 11Phép chiếu trực giao ở trên thường được gọi là phép nhìn từ trên xuông( top-view) hoặc dưới lên( bottom-view) Có hai phép chiếu khác cũng khá thông dụn là:
• Phép chiếu từ phía bên cạnh ( side-view) Tia chiếu song song với trục x và mặt phẳngquan sát là yz Phép chiếu này bỏ thành phần x vủa P/
• Phép chiếu hình từ bên cạnh ( side-view) Tia chiếu song song với trục y và mặt phẳngquan sát là xz Phép chiếu này loại bỏ thành phần y của P
Hình trên minh hoạ một phép chiếu xiên Điểm P(Px,Py,Pz) qua phép chiếu xiên sẽ nhận được điểm P’(Px,Py), (Px,Py) là hình chiếu của P qua phép chiếu trực giao là góc hợp bở tia chiếu và đoạn nối(xp,yp)và (Px,Py) Giả sử đoạn nối này có độ dài là L là góc giữa đoạnnối trên với trục y
a
5 Phép chiếu phối cảnh
5.1 phép chiếu phối cảnh đơn giản nhất
Phép chiếu phối cảnh phụ thuộc vào vị trí của hai đối tượng đó là mắt nhìn và mặt phẳng quan sát.\
Quan sát hinh sau, với mặt phẳng quan sát là yz và mắt nhìn E(E,0,0) được đặt dọc theo trục x Khoảng cách giữa mắt E và mặt phẳng quan sát được gọi là tầm nhìn Để xác địnhhình chiếu của P(x,y,z) ta nối P với E và tìm giao điểm P’ của đường thẳng này với mặt phẳngquan sát Lúc này P’ chính là điểm cần tìm
Chúng ta giả sử P không nằm phía sau mắt nhìn, tức là x<E P có thể nằm sau mặt phẳng quan sát, Hay trên mặt phẳng quan sát, hay giữa mắt mà mặt phẳng quan sát, Ta có tia từ mắt đến P có dạng: r(t)=(E,0,0)(1-t)+(x,y,z)t
Tia này giao với mặt phẳng quan sát( mặt phẳng x=0) khi x=0 nên giá trị ứng với trường hợp này là:
t’=
Suy ra các toạ độ của điểm chiếu là:
y’=
z’=
Phép chiếu phối cảnh gần giống chiếu trực giao chỉ khác là hai toạ độ y,z được nhân
lên thêm một lượng là t’=: Hê số tỉ lê này dẫn đến khái niêm phối cảnh theo luật gần Nghĩa
là vật càng xa mắt ( theo trục âm của trục x, để luôn có x<E) thì t’ càng nhỏ do đó vật sẽ thấy nhỏ hơn, ngược lại vật sẽ to hơn
(Px,Py)O
y
Mặt phẳng chiếu
x
(xp,yp)
Trang 12Cũng tương tự như trên, ta có thể dễ dàng kiểm chứng phép chiếu phối cảnh cũng báo toàn đường thẳng.
Nhận xét rằng phép chiếu song song là một trường hợn đặc biêt của phép chiếu phối cảnh.Nếu chúng ta cho tầm nhìn E càng ngày càng lớn tiến dần đến vô cùng thì tia chiếu qua mắt sẽ
trở nên song song và hê sô t’= trở thành 1 Lúc này phép chiếu phối cảnh trở thành phép chiếu
song song
6 Các trường hợp khác
Trường hợp trên có mắt nhìn nằm trên trục x và mặt phẳng quan sát là yz, Cũng như trongphép chiếu trực giao ta cugnx có thể hoán đổi vị trí của mắt và mặt phẳng quan sát để có thể nhìn đối tương ở các góc cạnh khác nhau, Ví dụ trong trường hợp mắt nằm trên trục z và mặt phẳng quan sát là xy thì các kết qur tương tự:
t’=
x’=
y’=
Trang 13CHƯƠNG III ĐOẠN CODE
Trang 17outtextxy(getmaxx()-9,getmaxy()/2+10,"y");
outtextxy(getmaxx()/2,10,"-");
Trang 18outtextxy(getmaxx()/2 - 10,10,"z");
outtextxy(getmaxx()/2-155,getmaxy()/2+170,"x");}
point Diem3d(int x , int y , int z)
if(y>=0&&x<0&&z>=0)
{
p.x = int(y+getmaxx()/2-x*cos(RADS*45));p.y = int(getmaxy()/2-z+x*cos(RADS*45));}
if(x>=0&&y<0&&z>=0)
{
p.x = int(getmaxx()/2+y-x*cos(RADS*45));p.y = int(getmaxy()/2-(z-x*cos(RADS*45)));}
if(x>=0&&y>=0&&z<0)
{
p.x = int(getmaxx()/2+y-x*cos(RADS*45));p.y = int (getmaxy()/2-z+x*cos(RADS*45));}
if(y>=0&&x<0&&z<0)
{
p.x = int(getmaxx()/2+y-x*cos(RADS*45));
Trang 19p.x =int( getmaxx()/2+y - x*cos(RADS*45));
p.y =int( getmaxy()/2 + x*cos(RADS*45));
p.x = int (x*cos(RADS*goc) + z*sin(RADS*goc));
p.z = int (-x*sin(RADS*goc) + z * cos(RADS*goc));
p.y = y;
}
if(chieu==2)
{
Trang 20p.y = int (y*cos(RADS*goc) - z*sin(RADS*goc));
p.z = int (y*sin(RADS*goc) + z * cos(RADS*goc));p.x =x;
}
if(chieu==3)
{
p.x = int (x*cos(RADS*goc)-y*sin(RADS*goc));p.y = int (x*sin(RADS*goc)+y*cos(RADS*goc));p.z = z;
Trang 21}
Bresenham_Line(b[1].x,b[1].y,b[2].x,b[2].y,10);Bresenham_Line(b[1].x,b[1].y,b[3].x,b[3].y,10);Bresenham_Line(b[2].x,b[2].y,b[3].x,b[3].y,10);// ve khoi da dien
settextjustify(LEFT_TEXT,RIGHT_TEXT);printf("\nQuay quanh truc : oy goc 45");
printf("\nQuay quanh truc : ox goc 35.5");for( int i = 0 ; i< 4 ; i++)
Trang 24CHƯƠNG IV TÀI LIỆU THAM KHẢO
- Thời gian thực hiên đề tài tương đối dài
Bên cạnh những mặt thuận lợi chúng tôi cũng gặp không ít khó khăn như là:
- Nguồn tài liêu về đề tài nghiên cứu còn hạn chế
- Kiến thức về đề tài của các thành viên trong nhóm còn hạn chế
Sau quá trình nghiên cứu và tìm hiểu về đề tài, mỗi thành viên trong nhóm đã củng cố lại kiến thức đã học và bổ sung thêm một số kiến thức mới về môn đồ họa máy tính Thành quả lớn nhất mà cả nhóm nhận được sau khi nghiên cứu xong là kĩ năng hoạt động nhóm Mỗi thành viên đã hiểu được trách nhiêm của bản thân đối với côngviêc chung của nhóm Qua đó mà mỗi thành viên đều cố gắng hoàn thành tốt công viêc mà mình được giao
Bài báo cáo còn nhiều thiếu sót, chúng tôi rất mong bạn đọc thông cảm và bổ sung ý kiến để chúng tôi hoàn thiên bài báo cáo của mình một cách hoàn chỉnh, đầy đủ nhất.Chúng tôi xin chân thành cảm ơn!