Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 31 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
31
Dung lượng
301,08 KB
Nội dung
TRƯỜNG ĐẠI HỌC ĐIỆN LỰC KHOA CÔNG NGHỆ THÔNG TIN BÁO CÁO MƠN HỌC ĐỒ HỌA MÁY TÍNH Đ TI: SỬ DỤNG THƯ VIỆN OPENGL MÔ PHỎNG CHUYỂN ĐỘNG CỦA T U VŨ TRỤ Sinh viên thực Giảng viên hướng dẫn : NGUYỄN HUY HO NG NGUYỄN ĐỨC HO NG HO NG NGỌC LONG PHẠM THỊ HUY N : NGÔ NGỌC TH NH Ngành : CÔNG NGHỆ THÔNG TIN Chuyên ngành : CÔNG NGHỆ PHẦN M M Lớp : D14CNPM5 Khóa : 2019 - 2023 Hà Nội, tháng năm 2022 PHIẾU CHẤM ĐIỂM Sinh viên thực hiện: ST Họ tên sinh viên Nội dung thực hiệnĐiểm Chữ ký T NGUYỄN HUY HOÀNG 19810310305 NGUYỄN ĐỨC HOÀNG 19810310299 HOÀNG NGỌC LONG 19810310284 PHẠM THỊ HUYỀN 19810310303 Giảng viên chấm: Họ tên Chữ ký Giảng viên chấm : Giảng viên chấm : MỤC LỤC Ghi CHƯƠNG 1: ĐỒ HỌA HAI CHI U Thuật toán vẽ đường thẳng 1.1.1 Thuật giải 1.1.2 Lưu đồ thuật toán 1.1.3 Kết đạt .9 1.2.Thuật toán Midpoint để vẽ đường thẳng 1.2.1 Thuật giải 1.2.2 Lưu đồ thuật toán .11 2.1.Thuật tốn Bressenham vẽ đường trịn 12 2.1.1 Thuật giải 12 2.1.2 Lưu đồ thuật toán 14 2.1.3 Kết đạt .15 2.2.Thuật tốn Midpoint vẽ đường trịn 15 2.2.1 Thuật giải 15 2.2.2 Lưu đồ thuật toán 17 2.2.3 Kết đạt .18 Thuật toán vẽ Ellipse 3.1.Thuật toán Bressenham vẽ Ellipse 18 3.1.1 Thuật giải 18 3.1.2 Kết đạt 20 3.2.Thuật toán Midpoint vẽ Ellipse 20 3.2.1 Thuật giải 20 3.2.2 Lưu đồ thuật toán 23 3.2.3 Kết đạt .24 Các thuật tốn tơ màu 4.1.Thuật tốn tô màu loang 24 4.1.1 Khái niệm 24 4.1.2 Giải thuật .24 4.1.3 Kết đạt .26 4.2.Thuật toán tô màu quét 26 4.2.1 Khái niệm 26 4.2.2 Thuật giải 27 4.2.3 Lưu đồ thuật toán 28 CHƯƠNG 2: PHÁT TRIỂN ỨNG DỤNG 29 Phát biểu toán 29 Các bước giải 29 2.2.Thiết lập hiệu ứng, màu sắc, kích thước cửa sổ, góc nhìn 30 2.3.Vẽ đối tượng đồ họa 30 2.4.Tạo hiệu ứng chuyển động cho đối tượng 31 LỜI MỞ ĐẦU Như thấy năm gần phát triển vượt bậc công nghệ đồ họa mang lại cho người tiện nghi, trải nghiệm mẻ, chân thực Vậy đồ họa máy tính : Đồ họa máy tính phương pháp công nghệ dùng việc chuyển đổi qua lại liệu hình ảnh máy tính Đồ họa máy tính lĩnh vực khoa học máy tính nghiên cứu tốn học, thuật tốn kĩ thuật phép tạo, hiển thị điều khiển hình ảnh hình máy tính Đồ họa máy tính có liên quan nhiều đến số lĩnh vực đại số, hình học giải tích, hình học họa hình, quang học, kĩ thuật máy tính, đặc biệt chế tạo phần cứng (các loại hình, thiết bị xuất, nhập, vỉ mạch đồ họa ) Là sinh viên khoa Công nghệ thông tin trường Đại học Điện Lực Chúng em tiếp xúc với môn học đồ họa máy tính Với kiến thức em học chúng em thực đề tài “MÔ PHỎNG CHUYỂN ĐỘNG PHĨNG T U VŨ TRỤ” Trong q trình thực nghiên cứu chúng em sử dụng thư viện đồ họa openGL sử dụng rộng rãi Có lẽ chương trình báo cáo chúng em chưa chun nghiệp, hồn chỉnh nhất, cịn có thiếu xót Vì em mong thầy bạn góp ý để nhóm em xây dựng đề đạt kết tốt CHƯƠNG 1: ĐỒ HỌA HAI CHI U Thuật toán vẽ đường thẳng 1.1.Thuật toán Bressenham để vẽ đường thẳng 1.1.1 Thuật giải Xét đoạn thẳng có hệ số góc 0= ⇒ Midpoint nằm phía đường thẳng ⇒ Lúc điểm thực Q nằm điểm Midpoint ⇒ Chọn Q(xi+1, yi+1) Mặt khác: pi+1 –pi = 2F(xi+1 +1 , yi+1 +1/2) – 2F(xi +1 , yi +1/2) ⇒ pi+1 –pi =2[A(xi+1 +1) + B(yi+1 +1/2) +C] – 2[A(xi +1) + B(yi+1/2) +C] ⇒ pi+1 –pi = 2A + 2B(yi+1 – yi) ⇒ pi+1 –pi = 2Dy – 2Dx(yi+1 – yi) Vậy pi+1 =pi + 2Dy pi =0 ta chọn yi+1 = yi +1 Ta tính giá trị p1 ứng với điểm ban đầu (x1 , y1) với nhận xét điểm (x1 , y1) điểm thuộc đường thẳng, tức có Ax1 + By1 + C =0 p1 = 2F(x1 +1, y1 +1/2) = 2[A(x1 +1) +B(y1 +1/2) +C] ⇒ p1 = 2(Ax1 + By1 +C) +2A +B ⇒ p1 = 2A + B ⇒ p1 = 2Dy-Dx 2.2.3 Kết đạt Hình 1.13 Đường trịn vẽ thuật tốn Midpoint Thuật toán vẽ Ellipse 3.1.Thuật toán Bressenham vẽ Ellipse 3.1.1 Thuật giải Tính khoảng cách từ điểm thực đến điểm vẽ được, xem khoảng cách ngắn Vẽ nửa elip, sau lấy đối xứng qua đường phân giác Phương trình đường elip có dang: x2/a2 + y2/b2 =1 => y2 = -(b2 / a2).x2 + b2 => x2 = -( a2 / b2).y2+ a2 Chúng ta vẽ nửa elip Ở nửa elip, lại phải vẽ theo hai nhánh khác Đó nhánh từ xuống, nhánh từ lên Hai nhánh cắt giao điểm mà hệ số góc tiếp tuyến với Elip -1.Chúng ta dễ dàng thấy nhánh vẽ từ xuống : x tăng lên đơn vị y tăng lên ; ngược lại với nhánh vẽ từ lên: y tăng lên đơn vị x tăng lên Nếu chọn cách vẽ liền mạch việc tăng lên không đồng tọa độ x y khiến đường elip không mịn, đứt gãy, xấu Do đó, muốn vẽ đường elip mịn nét, phải chia elip thành nhánh để vẽ Hình 1.14 Giao điểm vẽ từ nhánh − Xét nhánh từ xuống: Giả sử giao điểm (xi,yi) vẽ điểm cần vẽ điểm (xi+1, yi) (xi+1, yi-1) Thay (xi+1) vào phương trình ta được: y2 = -(b2 / a2).(xi +1)2 + b2 Đặt ● ● d1 = yi2 – y2 = yi2 + (b2 / a2).(xi +1)2 + b2 ● 2 2 d2 = y – (yi – 1) = -(b / a ).(xi +1) + b – (yi – 1) => pi = d1 - d2 = 2[b2/a2.(xi + 1)2-b2] + 2(yi2 + yi) -1 pi+1 = 2[b2/a2.(xi+1 + 1)2-b2] + 2((yi+1)2 + yi+1) -1 Suy ra: pi+1 - pi = b2/a2[(xi+1 + 1)2 - (xi + 1)2] + 2[(yi+1)2 + yi+1 - yi2 - yi] (*) pi pi+1 = pi + 2.(b2/a2).(2x+3) ● pi ≥ 89 chọn yi+1 = yi – Từ (*) => pi+1 = pi + 2.(b2/a2).(2x+3) – 4yi Với điểm (0, b) ta có: pi = 2(b2 / a2) – 2b + − Xét nhánh từ lên: Giả sử giao điểm (xi,yi) vẽ điểm cần vẽ điểm (xi, yi+1) (xi-1, yi+1) Thay (yi+1) vào phương trình ta được: x = -( a / b ).y 2+ a Đặt: ● d1 = xi – x = xi + (a / b ).(yi +1) + a ● d2 = x – (xi – 1) = -(a / b ).(yi +1) + a – (xi – 1) 2 = => pi = d1 - d2 = 2[a /b (yi + 1) -a ] + 2(xi + xi) -1 pi+1 2[a /b (yi+1 + 1) -a ] + 2((yi+1) + yi+1) -1 Suy ra: pi+1 - pi = a /b [(yi+1 + 1) - (yi + 1) ] + 2[(xi+1) + xi+1 - xi - xi] (*) ● pi pi+1 = pi + 2.(a /b ).(2y+3) ● pi ≥ chọn xi+1 = xi – từ (*) => pi+1 = pi + 2.(a /b ).(2y+3) – 4xi Với điểm (a,0) ta có: pi = 2(a / b ) – 2a + 3.1.2 Kết đạt Hình 1.15 Hình Ellipse vẽ thuật toán Bressenham 3.2.Thuật toán Midpoint vẽ Ellipse 3.2.1 Thuật giải Phương trình đường Elip: f(x,y) = b2x2 + a2y2 – a2b2 f(x,y) < (x,y) nằm bên elip f(x,y) = (x,y) nằm elip f(x,y) > (x,y) nằm bên ngồi elip Hình 1.16 Lựa chọn điểm thuật toán Midpoint ● Chia Elip làm phần điểm Q nơi có hệ số góc tiếp tuyến với Elip -1 (véc tơ gradient 1) (lý lại phải chia làm phần giải thích nhé) Tại vùng thứ nhất, x biến thiên nhanh y vùng thứ hai, y biến thiên nhanh x Nhớ lại cơng thức hệ số góc đường cong: dx/dy = fx/fy = (2b2x) /(2a2y) đó: fx fy đạo hàm riêng phần f(x,y) theo x, theo y ● Trong phần thứ nhất: Giả sử vẽ điểm (xi,yi) , điểm elip chọn bước nhảy i+1 T S Trung điểm I TS định điểm chọn Giá trị f(x,y) điểm I: di = f(xi + 1, yi – ½) = b2(xi + 1)2 + a2(yi – ½)2 – a2b2 +Nếu di ≥ trung điểm I nằm đường elip => điểm chọn S +Nếu di < trung điểm I nằm đường elip => điểm chọn T Ta lại có: di+1 = f(xi+1 + 1, yi+1 – ½) = b2(xi+1 +1)2 + a2(yi+1 – ½)2 – a2b2 Suy ra: di+1 – di = b2[(xi+1 +1)2 – (xi +1)2] +a2[(yi+1 – ½)2 – (yi – ½)2] Vì xi+1 = xi+1 nên di+1 – di = 2b2xi+1 + b2 + a2[(yi+1 – ½)2 – (yi – ½)2] + Nếu điểm chọn T (d i < 0) yi+1 = yi Ta có: di+1 = di + 2b2xi+1 + b2 (= di + fx + b2) = di + 2b2 (xi + 1) + b2 = di + b2 (2xi + 3) + Nếu điểm chọn S (di ≥ 0) yi+1 = yi – Ta có: