Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 45 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
45
Dung lượng
2,31 MB
Nội dung
Báo cáo Bài Tập Lớn môn học Đồ Họa Máy Tính TRƯỜNG ĐẠI HỌC ĐIỆN LỰC KHOA CƠNG NGHỆ THƠNG TIN Đề Tài: Cài Đặt Thuật Toán Xén Một Đa Giác Vào Một Vùng Hình Chữ Nhật Giảng viên hướng dẫn: Lớp: D8LT – CNTT6 Nhóm thực : Hứa Thanh Tùng+ Dương Thị Ánh Nguyệt Thành viên nhóm : Hứa Thanh Tùng Dương Thị Ánh Nguyệt Hà Nội, tháng 06 năm 2013 Trang Báo cáo Bài Tập Lớn mơn học Đồ Họa Máy Tính LỜI NĨI ĐẦU Đồ Họa Máy Tính lĩnh vực Cơng Nghệ Thơng Tin, nghiên cứu, xây dựng tập hợp cơng cụ (mơ hình lý thuyết phần mềm) khác để kiến tạo, xây dựng, lưu trữ xử lý mơ hình hình ảnh đối tượng, vật, tượng sống, sản xuất, nghiên cứu Đồ Họa Máy Tính góp phần quan trọng làm cho giao tiếp người máy tính trở nên thân thiện Trong lĩnh vực kỹ thuật máy tính, Đồ Họa Máy Tính ngày phát triển mạng mẽ Từ đồ họa máy tính có nhiều lĩnh vực có ứng dụng quan trọng Đồ Họa Máy Tính thực tế như: tạo mơ hình, hoạt cảnh (game, giải trí,…), hỗ trợ thiết kế đồ họa, mơ hình ảnh, chuẩn đốn hình ảnh (trong Y tế), huấn luyện đào tạo ảnh (quân sự, hàng không,…), … Trong Đồ Họa Máy Tính có nhiều thuật tốn khác Xong thuật tốn lại tỏ có ưu việt hạn chế riêng tốn cụ thể Và để phục vụ cho việc tìm hiểu thêm thuật toán Đồ Họa Máy Tính, Nhóm chúng em với hướng dẫn Giảng viên – – Khoa CNTT – Trường ĐH Điện Lực thực đề tài: “Cài đặt thuật toán xén đa giác vào vùng hình chữ nhật” Chúng em xin gửi lời cảm ơn chân thành tới thầy giáo: “……….” tận tâm bảo giúp đỡ chúng em hồn thành đề tài Trong q trình làm đề tài khơng tránh khỏi sai sót, khuyết điểm Vì vậy, nhóm thực chúng em hy vọng nhận Trang Báo cáo Bài Tập Lớn mơn học Đồ Họa Máy Tính đánh giá đóng góp nhiệt tình từ phía thầy bạn để nhóm chúng em hồn thiện Nhóm Tùng + Nguyệt, lớp D8LT – CNTT6 chúng em xin chân thành cảm ơn! Trường ĐH Điện Lực, tháng 06 năm 2013 Trang Báo cáo Bài Tập Lớn mơn học Đồ Họa Máy Tính MỤC LỤC Tiêu Đề Trang LỜI NÓI ĐẦU MỤC LỤC PHẦN 1: GIỚI THIỆU CHUNG VỀ ĐỀ TÀI I Giới Thiệu Đề Tài……………………………………………….……………… …4 II Giới Thiệu Ngơn Ngữ Lập Trình Được Sử Dụng Trong Đề Tài…… …… … III Giới Thiệu Thư Viện Graphics.h Trong Dev-C++…………… …….……… IV Cách sử dụng thư viện đồ họa Dev-C++…………………….… … … PHẦN 2: Ý TƯỞNG XÂY DỰNG CHƯƠNG TRÌNH VÀ CÀI ĐẶT THUẬT TOÁN…………………………………………………………………… ………… I Qui định hiển thị đối tượng chiều…………………………… ……… ……… 1.1 Một số khái niệm……………………… …………………… …………………6 1.2 Hệ tọa độ quan sát hệ tọa độ thiết bị chuẩn………………… …………… 1.2.1 Hệ tọa độ quan sát………………………………… ……….….…………… 1.2.2 Hệ tọa độ thiết bị chuẩn……………………………….……….………………9 1.3 Các thuật toán xén hình……………………………… …………………………9 II Thuật tốn Cohen-Sutherland………….………… ……………………………10 III Thuật tốn xén đa giác vào hình chữ nhật lần biến đổi …… ………11 IV CoDe Thuật Toán Xén Đa Giác Vào Hình Chữ Nhật…………………………13 KẾT LUẬN………………………………………………………….…………………41 TÀI LIỆU THAM KHẢO………………………………………….…………………42 Trang Báo cáo Bài Tập Lớn môn học Đồ Họa Máy Tính PHẦN 1: GIỚI THIỆU CHUNG VỀ ĐỀ TÀI I Giới Thiệu Đề Tài Cùng với phát triển kinh tế phát triển mạnh mẽ ngành công nghệ thông tin Các ứng dụng công nghệ thông tin ngày nhiều có mặt hầu hết lĩnh vực sống Với đề tài: “Cài đặt thuật tốn xén đa giác vào vùng hình chữ nhật” , nhóm Tùng + Nguyệt – lớp D8LT – CNTT6 trình bày thuật tốn xén hình Sutherland - Hodgeman Ý nghĩa thuật tốn xén hình công nghệ thông tin không nhỏ, đặc biệt hình máy tính có ý nghĩa vơ quan trọng Qua đề tài nhóm Tùng + Nguyệt mong giúp ích cho người hiểu thêm phần thuật toán xén hình II Giới Thiệu Ngơn Ngữ Lập Trình Được Sử Dụng Trong Đề Tài Stroustrup bắt đầu làm việc với khái niệm lớp 1979 Ý tưởng tạo ngôn ngữ bắt nguồn từ kinh nghiệm lập trình mà ơng viết luận án tiến sĩ Stroustrup nhận Simulacó nhiều tính hữu dụng cho việc phát triển phần mềm lớn chậm ứng dụng thực tế, đó, BCPL lại nhanh cấp thấp không tiện cho việc phát triển phần mềm lớn Đến làm việc Bell Labs, ơng gặp phải vấn đề việc phân tích nhân Unix với việc tính tốn phân tán Dùng lại kinh nghiệm lúc làm luận án tiến sĩ, Stroustrup cài thêm tính giống Simula vào C để nâng cao C chọn ngơn ngữ tổng qt, nhanh động Lần đầu tiên, chức lớp, lớp dẫn xuất, kiểm tra kiểu mạnh, nội tuyến (inline), đối số mặc định thêm vào C Lần xuất vào thị trường xảy tháng 11/1985 Năm 1983, tên C với lớp đổi thành C++ chức thêm vào bao gồm hàm ảo, tải hàm toán tử, tham chiếu, hằng, khả kiểm soát nhớ lưu trữ tự do, nâng cao việc kiểm soát kiểu, lệnh giải kiểu (//) Trang Báo cáo Bài Tập Lớn môn học Đồ Họa Máy Tính Năm 1985, tác phẩm The C++ Programming Language xuất lần đầu tiên, cung cấp tài liệu tham khảo quan trọng cho ngôn ngữ chưa tiêu chuẩn thức Năm 1989 phiên C++ 2.0 phát hành Các tính bao gồm đa kế thừa, lớp trừu tượng, hàm tĩnh, hàm thành viên hằng, thành viên bảo tồn Năm 1990, The Annotated C++ Reference Manual xuất cung cấp tảng cho tiêu chuẩn tương lai Phiên xuất sau có thêm chức tiêu bản, ngoại lệ, không gian tên, chuyển kiểu cho toán tử new, kiểu Boolean Khi C++ hình thành, thư viện chuẩn hồn thiện với Thư viện C++ thêm vào iostream.h cung cấp sở để thay hàm C truyền thống printf scanf Sàu này, thư viện chuẩn quan trọng thêm vào Thư viện Tiêu Chuẩn Sau nhiều năm làm việc, có cộng tác ANSI hội đồng tiêu chuẩn hoá C++ ISO để soạn thảo tiêu chuẩn ISO/IEC 14882:1998 Phiên tiêu chuẩn phát hành năm 1989, hội đồng tiếp tục xử lí báo cáo trục trặc, ấn hành phiên sửa sai chuẩn C++ năm 2003 Không chủ nhân ngơn ngữ C++, hồn tồn miễn phí dùng Mặc dù vậy, văn tiêu chuẩn khơng miễn phí III Giới Thiệu Thư Viện Graphics.h Trong Dev-C++ Tạo chương trình đồ hoạ 2D DOS sữ dụng turbo C dễ dàng làm được.Thư viện đựoc #include có tên graphis.h Nhưng thư viện C/C++ borland lại có điều đặc biệt khơng sữ dụng số trình compiler khác, nhiên so với IDE đại borland lại mặt quản lý tính thuận tiện Chính lẽ mà hack thư viện graphics thư viện khác đời, hôm thư viện muốn giới thiệu graphics.h Micheal Micheal thay đỗi BGI library (thư viện BGI) thành thư viện có tên WinBGIm để sữ dụng tốt windows Và bạn sữ dụng tốt hàm đặc biệt borland dev-c++ IV Cách sử dụng thư viện đồ họa Dev-C++ Đầu tiên bạn tải file đính kèm máy mình, giải nén file graphics.h libbgi.a + File graphics.h để thư mục C:\Dev-Cpp\include + File libbgi.a để thư mục C:\Dev-Cpp\lib Trang Báo cáo Bài Tập Lớn mơn học Đồ Họa Máy Tính (Nếu bạn cài mặc đinh Dev C++ ổ C) Tiếp theo bạn khởi động Dev C++ lên, vào File >New > Project >Empty Project (Nhớ chọn C++ Project) >OK Đặt tên cho Project mình! Nhấn chuột phải lên project bạn >New File Nhấn Alt + P ->Chọn thẻ Parameters > Copy paste vào Linker dìng đây: -lbgi -lgdi32 -lcomdlg32 -luuid -loleaut32 -lole32 (Bao gồm dấu "-") >OK Phần 2: Ý tưởng xây dựng chương trình cài đặt thuật toán I Qui định hiển thị đối tượng chiều 1.1 Một số khái niệm Cửa sổ (window) vùng chọn để hiển thị hệ tọa độ giới thực Vùng quan sát (viewport) vùng đƣợc chọn thiết bị hiển thị để đối tượng cửa sổ ánh xạ vào Cửa sổ xác định thấy thiết bị hiển thị, vùng quan sát xác định nơi hiển thị Ở nên phân biệt khái niệm cửa sổ đƣợc dùng phần với khái niệm cửa sổ đƣợc dùng chương trình ứng dụng hệ điều hành Windows Thơng thường cửa sổ vùng quan sát có dạng hình chữ nhật, có cạnh song song với trục tọa độ Tuy nhiên chúng cịn có số dạng khác đa giác, hình trịn, … Quá trình ánh xạ vùng định nghĩa hệ tọa độ giới thực vào vùng hệ tọa độ thiết bị gọi phép biến đổi hệ quan sát (viewing transformation) Trang Báo cáo Bài Tập Lớn mơn học Đồ Họa Máy Tính Phép biến đổi hệ quan sát với cửa sổ vùng quan sát có dạng hình chữ nhật Quy trình hiển thị đối tượnng đồ họa hai chiều mơ tả qua sơ đồ sau : Trước tiên, đối tượng đ ƣợc mô tả đối tượng đồ họa sở thuộc tính chúng hệ tọa độ cục (modeling coordinates - MC) nhằm đơn giản hóa tận dụng đặc trƣng riêng loại Sau đó, dùng phép biến đổi hệ tọa độ để chuyển mô tả từ hệ tọa độ cục sang hệ tọa độ giới thực (world coordinates - WC) chứa toàn đối t ƣợng thành phần Phép chuyển đổi đƣợc gọi phép chuyển đổi mơ hình (modeling coordinates transformation) Tiếp theo, định hệ tọa độ quan sát (viewing coordinates - VC), hệ tọa độ mơ tả vị trí người quan sát đối tượng Nhờ việc sử dụng hệ tọa độ mà mơ tả, đối tượng quan sát nhiều góc độ vị trí khác Trang Báo cáo Bài Tập Lớn mơn học Đồ Họa Máy Tính Chuyển đổi từ Chuyển đổi từ Chuyển đổi Ánh xạ từ hệ hệ tọa độ cục hệ giới từ hệ tọa độ tọa độ thiết bị sang hệ thực sang hệ quan sát sang chuẩn sang tọa độ tọa độ quan hệ tọa đồ hệ tọa độ giới thực sát thiết bị chuẩn thiết bị Qui trình hiền thị đối tượng chiều Sau chuyển mô tả đối t ƣợng từ hệ tọa độ giới thực sang hệ tọa độ quan sát, định nghĩa cửa sổ hệ tọa độ này, đồng thời định nghĩa vùng quan sát hệ tọa độ thiết bị chuẩn (normalized device coordinates - NDC) có tọa độ chiều thay đổi khoảng từ đến Sau thực phép ánh xạ từ cửa sổ sang vùng quan sát, tất phần đối tượng nằm vùng quan sát bị xén (clip) toàn nằm vùng quan sát ánh xạ sang hệ tọa độ thiết bị (device coordinates - DC) Việc đưa hệ tọa độ thiết bị chuẩn nhằm giúp cho việc tƣơng thích dễ dàng với nhiều loại thiết bị hiển thị khác nhau.Bằng cách thay đổi vị trí vùng quan sát quan sát đối tượng vị trí khác hình hiển thị, đồng thời, cách thay đổi kích thƣớc vùng quan sát, thay đổi kích thước tính cân xứng đối tượng hiển thị Chúng ta thực hiệu ứng thu phóng cách ánh xạ cửa sổ có kích thước khác vào vùng quan sát có kích thước cố định Khi cửa sổ đƣợc thu nhỏ, phần nằm cửa sổ phóng to giúp dễ dàng quan sát chi tiết mà thấy cửa sổ lớn 1.2 Hệ tọa độ quan sát hệ tọa độ thiết bị chuẩn 1.2.1 Hệ tọa độ quan sát Để thiết lập hệ tọa độ quan sát, trƣớc tiên ta chọn điểm P 0(x0, y0) hệ tọa độ giới thực làm gốc tọa độ Trang Báo cáo Bài Tập Lớn mơn học Đồ Họa Máy Tính Sau sử dụng vector V mô tả hướng quan sát để định hướng cho trục tung yv hệ tọa độ Vector V gọi view-up vector Từ V tính vector đơn vị v = (v xvy ) u = (ux,uy ) tương ứng cho trục tung yv trục hoành xvcủa hệ tọa độ Các vector đơn vị dùng để tạo thành hai dòng ma trận quay MR để đưa trục xv yv trùng với trục xw ywcủa hệ trục tọa độ giới thực Ma trận phép chuyển điểm hệ tọa độ giới thực sang hệ tọa độ quan sát tích hai ma trận phép biến đổi : phép tịnh tiến gốc tọa độ hệ quan sát gốc tọa độ hệ tọa độ giới thực, phép quay đưa trục hệ tọa độ quan sát trùng với trục hệ tọa độ giới thực MWC,VC =MTMR 1.2.2 Hệ tọa độ thiết bị chuẩn Do cách định nghĩa hệ tọa độ thiết bị khác nên hình ảnh hiển thị thiết bị chưa hiển thị xác thiết bị Chính cần phải xây dựng hệ tọa độ thiết bị chuẩn đại diện chung cho thiết bị để mơ tả hình ảnh giới thực mà không phụ thuộc vào thiết bị Trong hệ tọa độ này, tọa độ x, y đƣợc gán giá trị khoảng từ đến Như vậy, vùng không gian hệ tọa độ thiết bị chuẩn hình vng đơn vị có góc trái (0,0) góc phải (1,1) Trang Báo cáo Bài Tập Lớn mơn học Đồ Họa Máy Tính // - Polygon( ) // / *************************************************************** **********/ void Polygon(const int n,const int coordinates[]) { if(n>=2) { Line(coordinates[0],coordinates[1], coordinates[2],coordinates[3]); for(int count=1;countx_2) { x1=x_2; y1=y_2; x2=x_1; y2=y_1; } int dx=abs(x2-x1); int dy=abs(y2-y1); int inc_dec=((y2>=y1)?1:-1); if(dx>dy) { int two_dy=(2*dy); int two_dy_dx=(2*(dy-dx)); int p=((2*dy)-dx); int x=x1; int y=y1; Trang 31 Báo cáo Bài Tập Lớn mơn học Đồ Họa Máy Tính putpixel(x,y,color); while(xdy) { int two_dy=(2*dy); int two_dy_dx=(2*(dy-dx)); int p=((2*dy)-dx); int x=x1; int y=y1; Trang 34 Báo cáo Bài Tập Lớn mơn học Đồ Họa Máy Tính putpixel(x,y,color); while(x