Giáo trình Lý thuyết đồ họa: Phần 2 - Trường ĐH Công nghiệp Quảng Ninh

80 2 0
Giáo trình Lý thuyết đồ họa: Phần 2 - Trường ĐH Công nghiệp Quảng Ninh

Đ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

Phần 2 của giáo trình Lý thuyết đồ họa tiếp tục cung cấp cho học viên những nội dung về: biểu diễn các đối tượng ba chiều; thiết kế đường và mặt cong Bezier và B-Spline; khử đường và mặt khuất; tạo bóng vật thể 3D;... Mời các bạn cùng tham khảo!

CHƯƠNG V BIỂU DIỄN CÁC ðỐI TƯỢNG BA CHIỀU 5.1 MƠ HÌNH WIREFRAME Mơ hình WireFrame thể hình dáng đối tượng 3D danh sách : • Danh sách ñỉnh : lưu tọa ñộ ñỉnh • Danh sách cạnh : lưu cặp ñiểm ñầu cuối cạnh Các dỉnh cạnh đánh số thứ tự cho thích hợp Ví dụ: Biểu diễn nhà thơ sơ (hình 5.1) Danh sách ñỉnh Vector Z x y z 0 1 0.5 1.5 0 0 1 1 0.5 1.5 10 1 Có nhiều cách để lưu giữ mơ hình P4 P9 P5 P10 P3 P8 Y P1 P2 P6 P7 X Hình 5.1 WireFrame Ở đây, dùng cấu trúc record dựa mảng: Const MaxDinh = 50; { Số ñỉnh tối ña} MaxCanh = 100; {Số cạnh tối ña} Type ToaDo3D = record x, y, z:real; end; WireFrame = Record Chương V Biểu diễn ñối tượng ba chiều Sodinh: MaxDinh; Dinh: array [1 MaxDinh] of ToaDo3D; Socanh : Maxcanh; Canh :array[1 Maxcanh, 2] of MaxDinh; end; Khi đó, ta dùng biến để mô tả nhà : Var House : WireFrame; với biến house trên, ta gán giá trị sau: Danh sách cạnh Cạnh ðỉnh ñầu ðỉnh cuối With House Do 1 Begin 2 sodinh:=10; 3 socanh:=17; 4 dinh[1].x:=0; 5 dinh[1].y:=0; 6 dinh[1].z:=0; 7 8 {Số ñỉnh thứ 9 10 cạnh số 1} 10 10 11 12 13 end; 14 5.2 VẼ MƠ HÌNH WIREFRAME VỚI CÁC 15 10 16 17 canh[1, 1]:=1; canh[1, 2]:=2; {Số ñỉnh thứ hai cạnh số 1} PHÉP CHIẾU ðể vẽ ñối tượng WireFrame, ta vẽ cạnh danh sách cạnh mô hình Vấn đề làm để vẽ ñường thẳng không gian chiều vào mặt phẳng? ðể làm ñiều này, ta phải bỏ bớt ñi chiều mơ hình biểu diễn, tức ta phải dùng phép chiếu từ 3D → 2D 64 Chương V Biểu diễn ñối tượng ba chiều Kỹ thuật chung ñể vẽ ñường thẳng 3D là: Chiếu ñiểm ñầu mút thành ñiểm 2D Vẽ ñường thẳng ñi qua ñiểm vừa ñược chiếu Sau ñây thủ tục xác định hình chiếu điểm qua phép chiếu phối cảnh: Procedure Chieu(P3D:ToaDo3D; E:Real; Var P2D:ToaDo2D); Var t:Real; Begin If (P3D.x >=E) OR (E=0) Then Writeln(‘ðiểm nằm sau mắt mắt nằm mặt phẳng nhìn’); Esle Begin t := 1/(1 - P3D.x/E); P2D.y := t*P3D.y; P2D.z := t*P3D.z; End; End; 5.3 VẼ CÁC MẶT TOÁN HỌC Ta vẽ mặt cong dựa phương trình tham số mặt Ví dụ: (a) (b) Hình 5.2 (c) • Mặt Ellipsoid: (hình 5.2.a) x=Rx.cos(u).cos(v) y=Ry.sin(u).cos(v) 65 Chương V Biểu diễn ñối tượng ba chiều z=Rz.sin(v) Trong đó: 0≤ u ≤ 2π • Mặt -π/2 ≤ v ≤ π/2 Hypeboloid: (hình 5.2.b) x=u y=v z=u2 - v2 Trong u,v ∈[-1,1] • Hình xuyến: (hình 5.2.c) x=(R + a.cos(v)).cos(u) y=(R + a.cos(v)).sin(u) z= a.sin(v) Trong ñó: 0≤ u ≤ 2π -π/2 ≤ v ≤ π/2 • Hình trụ trịn (Cylinder) x = R.cos(u) y = R.sin(u) z=h • Hình nón (Cone) p(u,v) = (1-v).P0 + v.P1(u) đó: P0: đỉnh nón  x = R cos(u) u,v ∈ [0,1]  y = R sin(u) P1(u): đường trịn  • Chảo Parabol (Paraboloid) x = a.v.cos(u) y = b.v.sin(u) u∈[-π,π], v ≥ z = v2 Phương pháp vẽ đường viền theo u v 66 Chương V Biểu diễn ñối tượng ba chiều ðể vẽ ñường viền u giá trị u’ v chạy từ VMin ñến VMax ta làm sau: • Tạo tập hợp giá trị v[i] ∈ [VMin ,VMax], xác ñịnh vị trí P[i] = (X(u’,v[i]), Y(u’,v[i]), Z(u’,v[i])) • Chiếu ñiểm P[i] lên mặt phẳng • Vẽ ñường gấp khúc dựa ñiểm 2D P’[i] Sau ñây thủ tục vẽ họ ñường cong theo u: Procedure HoDuongCongU; Var P: ToaDo3D; u,v,du,dv:Real; Begin u:=UMin; du:=0.05; dv:=0.05; While u

Ngày đăng: 25/10/2022, 00:42

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

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

Tài liệu liên quan