quan hệ hình học, cập nhật các thông số về kích thước vùng của vùng Client:
Lớp CMainFrame : Có chức năng tạo màn hình vùng Client.
Lớp CApp : Có chức năng thực hiện ứng dụng kiểu đơn tài liệu (SDI).
Lớp CView : Có chức năng hiển thị những hiện thực cuả chương trình kiểm tra các quan hệ hình học.
Lớp CDoc : Có chức năng xử lý việc lưu trữ dữ liệu.
Lớp CDialog : Có chức năng nhập, xuất dữ kiện.
II. MỘT SỐ KIỂU DỮ LIỆU ĐƯỢC SỬ DỤNG TRONG CHƯƠNG TRÌNH
a. Các đỉnh của đa giác P phẳng được lưu trữ lần lượt trong danh sách kiểu CPoint như P[0].x, P[0].y; P[1].x,P[1].y; …. Với đỉnh cuối được nhận biết bởi chỉ số đa giác kèm theo.
b. Kiểu dữ liệu điểm trong không gian ba chiều (3D), được khai báo như sau:
typedef struct { long x; long y; long z; } point3d ;
c. Cấu trúc dữ liệu mô tả Wireframe bao gồm: +Danh sách đỉnh chứa tọa độ các đỉnh
+Danh sách cạnh chứa các cặp đỉnh nối cạnh đó. typedef struct { int NumV; int NumE; point3d vert[20]; int edge[30][2]; } Wireframe;
Kiểu dữ liệu dùng để tạo danh sách cạnh từ các đỉnh liên tiếp nhau: typedef struct { CPoint A; CPoint B; } TypeListEdge;
Kiểu dữ liệu lưu trữ các điểm, có kèm theo cờ để phân biệt các loại điểm khác nhau (điểm giao nhau giữa 2 đa giác, điểm này đã được duyệt hay chưa duyệt; hay đỉnh của đa giác) được dùng trong thủ tục kiểm tra quan hệ hai đa giác, được khai báo như sau:
typedef struct {
CPoint P;
int CFlag;
} ListPoint;
III. CÁCH TỔ CHỨC CÁC HÀM TRONG OPENGL 3D
Trong phần kiểm tra trong 3D, có các phương thúc xử lý các thao tác như sau:
1. Những hàm được sử dụng trong lớp CkiemTra3Dview
Construction/destruction lớp CView
CKiemTra3DView::CKiemTra3DView() CKiemTra3DView::~CKiemTra3DView()
Các hàm tạo cửa sổ, vẽ của lớp CView
BOOLCKiemTra3DView::PreCreateWindow(CREATESTRUCT& cs) void CKiemTra3DView::OnDraw(CDC* pDC)
void CKiemTra3DView::AssertValid() const
void CKiemTra3DView::Dump(CDumpContext& dc) const
Hàm tạo ngữ cảnh để phù hợp với việc vẽ các vật thể 3D
int CKiemTra3DView::OnCreate(LPCREATESTRUCT pCreateStruct)
Các hàm điều chỉnh kích thước, tạo màu nền void CKiemTra3DView::OnDestroy()
void CKiemTra3DView::OnSize(UINT nType, int cx, int cy) BOOL CKiemTra3DView::OnEraseBkgnd(CDC* pDC) void CKiemTra3DView::GLResize(GLsizei w, GLsizei h) void CKiemTra3DView::GLSetupRC()
void CKiemTra3DView::Khoitaopalette()
BOOL CKiemTra3DView::OnQueryNewPalette()
void CKiemTra3DView::OnPaletteChanged(CWnd* pFocusWnd)
Hàm nhấn các phím mũi tên để quan sát vật thể
void CkiemTra3Dview::OnKeyDown(UINT nChar, UINT nRepCnt, INT Flags)
Các hàm thực hiện các thao tác nhập tọa độ cho mặt phẳng, điểm, đường thẳng void CKiemTra3DView:: OnNhapMPhang1()
void CKiemTra3DView:: OnNhapMPhang2() void CKiemTra3DView:: OnNhapTDDiem() void CKiemTra3DView:: OnNhapTDDuong1() void CKiemTra3DView:: OnNhapTDDuong2()
Các hàm thực hiện các thao tác kiểm tra, tính toán giữa các đối tượng điểm, đường thẳng, mặt phẳng.
void CKiemTra3DView:: OnKtraDiemMP() void CKiemTra3DView:: OnVeGiao2MP() void CKiemTra3DView:: OnKtraDiem_Duong() void CKiemTra3DView:: OnKtra2DThang() void CKiemTra3DView:: OnKtraDuong_MP() void CKiemTra3DView:: OnTinhGoc2MP()
void CKiemTra3DView:: OnTinhGocDuong_MP() void CKiemTra3DView:: OnTinhGoc2DT()
void CKiemTra3DView:: OnTinhKCDiem_Duong() void CKiemTra3DView:: OnTinhKC2Duong() void CKiemTra3DView:: OnTinhKC2MP() void CKiemTra3DView:: OnDiemDongPhang() void CKiemTra3DView:: Ve_Hai_MP()
void CKiemTra3DView:: On2MPhang() void CKiemTra3DView:: GT_hai_mp1() void CKiemTra3DView:: GT_hai_mp3()
void CKiemTra3DView:: OnVe_KC_Diem_MP() void CKiemTra3DView:: OnTinh_KC_Diem_MP() void CKiemTra3DView:: Ve_Diem_MP()
Các hàm thực hiện việc vẽ, demo các vật thể void CKiemTra3DView:: GLRenderScene() void CKiemTra3DView:: Cube()
void CKiemTra3DView:: HinhChop() void CKiemTra3DView:: Wireframchop() void CKiemTra3DView:: OnCube() void CKiemTra3DView:: Onscence()
void CKiemTra3DView:: OnHinhchop()
void CkiemTra3Dview:: OnWireframWireframchop()
Hàm thực hiện thao tác xoá màn hình void CKiemTra3DView:: OnClearScreen()
2. Những hàm được sử dụng trong lớp CkiemTra3Ddoc
CkiemTra3DDoc:: CkiemTra3DDoc() CkiemTra3DDoc:: ~ CkiemTra3DDoc() BOOL CkiemTra3DDoc:: OnNewDocument() void CkiemTra3DDoc:: Serialize(CArchive& ar)
End