BÁO CÁO MÔN HỌC ĐỒ HỌA MÁY TÍNH ĐỀ TÀI: SỬ DỤNG THƯ VIỆN OPENGL MÔ PHỎNG CHUYỂN ĐỘNG CỦA TÀU VŨ TRỤ

31 14 0
BÁO CÁO MÔN HỌC ĐỒ HỌA MÁY TÍNH ĐỀ TÀI: SỬ DỤNG THƯ VIỆN OPENGL MÔ PHỎNG CHUYỂN ĐỘNG CỦA TÀU VŨ TRỤ

Đ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

lOMoARcPSD|18034504 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 ĐỀ TÀI: SỬ DỤNG THƯ VIỆN OPENGL MÔ PHỎNG CHUYỂN ĐỘNG CỦA TÀU VŨ TRỤ Sinh viên thực : NGUYỄN HUY HOÀNG NGUYỄN ĐỨC HOÀNG HOÀNG NGỌC LONG PHẠM THỊ HUYỀN Giảng viên hướng dẫ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 Downloaded by vu ga (vuchinhhp2@gmail.com) lOMoARcPSD|18034504 PHIẾU CHẤM ĐIỂM Sinh viên thực hiện: ST T Họ tên sinh viên NGUYỄN HUY HOÀNG 19810310305 NGUYỄN ĐỨC HOÀNG 19810310299 HOÀNG NGỌC LONG 19810310284 PHẠM THỊ HUYỀN 19810310303 Nội dung thực Điểm Chữ ký 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 Downloaded by vu ga (vuchinhhp2@gmail.com) Ghi lOMoARcPSD|18034504 CHƯƠNG 1: ĐỒ HỌA HAI CHIỀU .6 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 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 tốn tơ màu qt .26 Downloaded by vu ga (vuchinhhp2@gmail.com) lOMoARcPSD|18034504 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 Downloaded by vu ga (vuchinhhp2@gmail.com) lOMoARcPSD|18034504 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 toá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 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 chuyên nghiệp, hoà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 Downloaded by vu ga (vuchinhhp2@gmail.com) lOMoARcPSD|18034504 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 Downloaded by vu ga (vuchinhhp2@gmail.com) lOMoARcPSD|18034504 2.2.3 Kết đạt Hình 1.13 Đường trịn vẽ thuật tốn Midpoint Thuật tốn vẽ Ellipse 3.1.Thuật tố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 Downloaded by vu ga (vuchinhhp2@gmail.com) lOMoARcPSD|18034504 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 (x i+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 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)2b2] + 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 (x i, 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) Downloaded by vu ga (vuchinhhp2@gmail.com) lOMoARcPSD|18034504 => 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 elip Downloaded by vu ga (vuchinhhp2@gmail.com) lOMoARcPSD|18034504 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 (x i,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ồi đườ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 (di < 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ó: Downloaded by vu ga (vuchinhhp2@gmail.com)

Ngày đăng: 09/01/2023, 23:26

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

  • Đang cập nhật ...

Tài liệu liên quan