THIẾT kế hệ THỐNG KIỂM TRA các QUAN hệ HÌNH học TRONG KHÔNG GIAN 2d và 3d

98 600 0
THIẾT kế hệ THỐNG KIỂM TRA các QUAN hệ HÌNH học TRONG KHÔNG GIAN 2d và 3d

Đ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

Lu ận v ăn t ốt nghi ệp Trong lĩnh vực công nghệ máy tính công nghệ thông tin có bước phát triển nhảy vọt, hỗ trợ vào lĩnh vực sống xã hội, sản phẩm công nghệ thông tin biến đổi hàng ngày, hàng Trong lĩnh vực toán học, sản phẩm công nghệ thông tin hỗ trợ đắc lực cho việc học tập nghiên cứu Đề tài thực là: “THIẾT KẾ HỆ THỐNG KIỂM TRA CÁC QUAN HỆ HÌNH HỌC TRONG KHÔNG GIAN 2D VÀ 3D“ Đề tài sử dụng ngôn ngữ lập trình Visual C++ để thể Về góc độ học tập, nghiên cứu thấy đề tài giúp hiểu rõ thêm kiến thức phần đồ họa máy tính cho vấn đề kiểm tra thực số toán hình học thêm phong phú hơn, tạo thêm phần hấp dẫn môn học Trong thời gian thực đề tài thực yêu cầu đề tài Việc thực đề tài mang ý nghĩa đánh giá lại trình học tập, nghiên cứu Nên mặt tinh thần cố gắng tìm hiểu, nghiên cứu, chuẩn bị chu đáo cho việc thực Nhưng tiếp thu có giới hạn định, lĩnh vực máy tính sở toán học rộng lớn, không gian diễn dịch vô hạn, thực ý tưởng toán học thực được, việc thể thuật toán máy tính có vấn đề khó thể thực hiện, đề tài chắn nhiều thiếu sót định Mong quý thầy cô, anh chị bạn thông cảm, đóng góp ý kiến giúp đỡ Tôi thành thật cảm ơn …! Thi ết k ế h ệ th ống ki ểm tra cácc quan h ệ hình h ọc trang Lu ận v ăn t ốt nghi ệp SINH VIÊN THỰC HIỆN LÊ QUỐC THÁI PHẦN I: GIỚI THIỆU I SƠ LƯỢC VỀ HỆ THỐNG KIỂM TRA CÁC QUAN HỆ HÌNH HỌC Để cho người đọc tham khảo đề tài “THIẾT KẾ HỆ THỐNG KIỂM TRA CÁC QUAN HỆ HÌNH HỌC“ dễ dàng hình dung được, xin giới thiệu sơ lược đề tài Nhiệm vụ thực đề tài: Thiết kế hệ thống kiểm tra quan hệ hình học trong:  Không gian hai chiều (2D)  Không gian ba chiều (3D) Với ngôn ngữ thể môi trường Visual C++ Đề tài áp dụng kiến thức sở toán học không gian vector đồ họa máy tính, để xây dựng thuật toán kiểm tra quan hệ hình học Để dễ dàng xin trình bày ví dụ điển sau: Ví dụ: cho đường thẳng a qua hai điểm A B đường thẳng b qua hai điểm C D không gian 2D hay 3D hai đường thẳng có tương quan với nhau, trùng nhau, cắt với góc đó, chéo (trong không gian Thi ết k ế h ệ th ống ki ểm tra cácc quan h ệ hình h ọc trang Lu ận v ăn t ốt nghi ệp 3D), hay song song… Sau đưa vào điều kiện giả thiết ban đầu (Input), chương trình thực đưa kết kiểm tra (output) giả thiết hai đường thẳng a b tương quan với nhau? Cắt góc độ, song song, hay trùng Đó mặt thuật toán chương trình kiểm tra, tác vụ thực vấn đề Với toán đưa kết luận với dòng thông điệp thấy đề tài trở nên đơn giản không phong phú hấp dẫn qua ý kiến người đọc tham khảo Một tác vụ đồng thời với toán mà nhiệm vụ đề tài yêu cầu thực đưa vào giả thiết toán chẳng hạn hai điểm A B với tọa độ xác định đó, qua hai điểm thực vẽ lên đoạn thẳng qua hai điểm A B Từ thấy vấn đề cách trực quan hơn, hay vẽ góc hai đường thẳng, với thể đề tài trở nên hấp dẫn phong phú hơn, tất nhiên vấn đề khó khăn cho người thực đề tài Trong phần nội dung trình bày chi tiết đề tài “THIẾT KẾ HỆ THỐNG KIỂM TRA CÁC QUAN HỆ HÌNH HỌC TRONG 2D VÀ 3D“ II GIỚI THIỆU SƠ LƯỢC NGÔN NGỮ THỂ HIỆN ĐỀ TÀI II SƠ LƯỢC NGÔN NGỮ Ở phần I giới thiệu sơ lược “THIẾT KẾ HỆ THỐNG KIỂM TRA CÁC QUAN HỆ HÌNH HỌC“, trình bày ví dụ yêu cầu nhiệm vụ để thực tác vụ kiểm tra vấn đề đề tài Để thực vấn đề nghiên cứu thực môi trường ngôn ngữ Visual C++ Visual C++ phần mềm lập trình hướng đối tượng phát triển sở ngôn ngữ lập trình C C++ Ở thể đề tài ngôn ngữ Visual C++ lẽ ngôn ngữ xem ngôn ngữ hỗ trợ (support user) mạnh phổ biến Cùng mục đích sâu xa đề tài sau ngôn ngữ xây dựng ý tưởng đề tài “THIẾT KẾ HỆ THỐNG KIỂM Thi ết k ế h ệ th ống ki ểm tra cácc quan h ệ hình h ọc trang Lu ận v ăn t ốt nghi ệp TRA CÁC QUAN HỆ HÌNH HỌC“ ngày thêm đầy đủ, phong phú, hấp dẫn ứng dụng mang tính thiết thực Tôi nghiên cứu tìm hiểu tổng quát ngôn ngữ Visual C++, thực chương trình điển hình ngôn ngữ lập trình hướng đối tượng Và phần tìm hiểu phần thực yêu cầu đề tài, cụ thể phương diện tính toán thuật toán thể trực quan đồ hoạ máy tính ngôn ngữ Visual C++ Trong Visual C++ phần đồ họa thể lớp CDC (Class Device Context) với nhiều hàm thành viên hỗ trợ cho việc vẽ điểm, đường, đa giác, tô màu… Đặc biệt ngôn ngữ Visual C++ có hỗ trợ cho việc vẽ đối tượng hình học chuột Nhưng ngôn ngữ thực với đối tượng hình học 2D, đối tượng hình học 3D chưa có, cần phải tự thiết kế Trong trình nghiên cứu, nhận thấy ngôn ngữ Visual C++ có thư viện OPENGL thư viện API hỗ trợ cho việc thực chương trình đồ họa, 2D 3D mạnh, phần kiểm tra quan hệ hình học phần 3D thực OPENGL Từ chuyển hướng sang nghiên cứu OPENGL để thực cho phần 3D Để hiểu thực khó khăn không ta bắt đầu nghiên cứu làm quen với ngôn ngữ Visual C++ Sau nghiên cứu hiểu yếu tố OPENGL có nhận xét OPENGL ứng dụng để thực chương trình đồ họa máy tính hấp dẫn đẹp mắt Khi cài cách sử dụng có phần dễ dàng hơn, cần tìm hiểu số hàm thư viện hàm thành viên OPENGL đáp ứng yêu cầu Còn việc thực cài đặt theo lý thuyết đồ họa máy tính phép biến hình, thiết lập chế độ hình, khởi tạo đồ họa, setviewport, tạo Pallette màu, thiết lập độ sâu hình ảnh, độ phản chiếu hình ảnh, độ tương phản… tất OPENGL hỗ trợ hầu hết OpenGL định nghĩa “giao diện phần mềm cho phần cứng đồ họa ” Thực chất, OpenGL thư viện hàm đồ họa, xem tiêu chuẩn thiết kế công Thi ết k ế h ệ th ống ki ểm tra cácc quan h ệ hình h ọc trang Lu ận v ăn t ốt nghi ệp nghiệp cho đồ họa ba chiều Với giao diện lập trình mạnh mẽ, OpenGL cho phép tạo ứng dụng 3-D phức tạp với độ tinh vi, xác cao, mà người thiết kế đánh vật với núi công thức toán học mã nguồn phức tạp Và OpenGL tiêu chuẩn công nghiệp, ứng dụng tạo từ dùng phần cứng hệ điều hành khác Nhận xét OPENGL thấy OPENGL thư viện đồ họa WINDOWS ta thấy OPENGL thực ngôn ngữ Visual C++ mà cho phép thực Visual Basis, Borland C++ II GIỚI THIỆU CÁC HÀM CỦA NGÔN NGỮ ĐƯỢC SỬ DỤNG a Các hàm lớp CDC (Class Device Context) Trong CDC có nhiều hàm thành viên phục vụ cho trình kết xuất hình ảnh thiết bị Trong phần thực đề tài, xin đưa hàm sử dụng đề tài  Vẽ điểm: SetPixel ( int x, int y, int color ); Hàm thuộc lớp CClientDC phần màu sử dụng macro RGB (red, green, blue) Ví du: Để vẽ điểm , ta thực sau: CClientDC dc (this); dc.SetPixel (100,100,GRB(0,0,0); Để thể tọa độ điểm hệ trục tọa độ hai chiều, Visual C++ dùng lớp CPoint, đối tượng thuộc lớp thể hai thành phần x y Ví dụ ta khai báo điểm point sau: Thi ết k ế h ệ th ống ki ểm tra cácc quan h ệ hình h ọc trang Lu ận v ăn t ốt nghi ệp CPoint point point.x=100; point.y=100;  Vẽ đường thẳng: Line (int x1, int y1, int x2, int y2); Hàm thuộc lớp CClientDC Ví dụ: Để vẽ đường thẳng ta thực bước sau CClientDC dc(this); dc.Line(x1,y1,x2,y2); Ngoài việc vẽ đường thẳng sử dụng hai hàm sau: MoveTo(int x, int y); Hàm dùng để di chuyển trỏ đến tọa độ x,y hình LineTo(int x, int y); Hàm dùng để vẽ đường thẳng từ điểm hành đến điểm x, y Cả hai hàm thuộc lớp CClientDC, việc sử dụng sau: CClientDC dc(this); dc.MoveTo(x,y); dc.LineTo(newx, newy);  Vẽ hình chữ nhật: Rectangle(int x1, int y1, int x2, int y2); Hàm thuộc lớp CclientDC Dùng để vẽ hình chữ nhật có tọa độ góc trái (x1, y1) tọa độ góc phải (x2, y2) Cú pháp vẽ hình chữ nhật sau: Thi ết k ế h ệ th ống ki ểm tra cácc quan h ệ hình h ọc trang Lu ận v ăn t ốt nghi ệp CClientDC dc(this); dc.Rectangle(x1, y1, x2, y2);  Vẽ hình Ellipse: Ellipse(int x1,int y1,intx2,int y2); Hàm có tham tương tự tham số hình chữ nhật, hàm thuộc lớp CClientDC Cú pháp vẽ hình Ellipse sau: CClientDC dc(this); dc.ellipse(int x1, int y1, intx2, int y2);  Hàm loan vùng kín: FloodFill(int x, int y, int color); Hàm dùng để tô màu vùng giới hạn đường biên khép kín Hàm thuộc lớp CClientDC có tác dụng tô màu với màu color tô hết vùng có tọa độ (x,y) vùng kín bao quanh điểm Cú pháp hàm sau: CClientDC dc(this); dc.FloodFill(x, y, color);  Tạo đường vẽ: CreatePen(typeline, width, color); Để tạo đường vẽ ứng dụng vẽ ta xét hàm CreatePen lớp Cpen, hàm có dạng sau: Cpen *pPen=new Cpen; pPen->CreatePen(typeline, width, color); Trong : • Tham số typeline kiểu đường vẽ, có giá trị định nghĩa sau: PS-SOLID Đường thẳng đồng Thi ết k ế h ệ th ống ki ểm tra cácc quan h ệ hình h ọc trang Lu ận v ăn t ốt nghi ệp PS-DASH Đường thẳng gồm gạch ngang đứt nét PS-DOT Đường thẳng gồm nét chấm đứt PS-DASDOT Đường thẳng gồm gạch ngang chấm đứt PS-DASHDOTDOT Đường thẳng gồm gạch ngang chấm đứt PS-NULL Đường thẳng vô hiệu lực không vẽ PS-INSIDEFRAME Đường thẳng nằm bên đường viền • Tham số width cho độ rộng nét vẽ tính pixel • Tham số color cho màu vẽ b Các hàm thư viện OpenGL OpenGL gồm hàm, hạt nhân có 115 hàm Tên hàm bắt đầu GL Windows NT hỗ trợ chủng loại hàm khác, bao gồm thư viện OpenGL utility(tên hàm bắt đầu GLU), thư viện OpenGL auxiliary(tên hàm bắt đầu AUX), hàm”WGL” (tên hàm bắt đầu WGL), hàm WIN32 API (tên hàm tiền tố đặc biệt) Bộ hàm hạt nhân cho phép thiết kế hình dạng khác nhau, tạo hiệu chiếu sáng, kết hợp antialiasing gán cấu trúc, thực biến đổi ma trận… Do hàm thể nhiều dạng khác tùy thuộc vào loại liệu mà chúng tiếp nhận, nên thực tế có 300 nguyên mẫu (prototype) hàm  Thư viện OpenGL utility gồm hàm cao cấp Các hàm đơn giản hoá việc sử dụng hình ảnh cấu trúc, thực việc biến đổi tọa độ mức cao, hỗ trợ tesselation đa giác, biểu diễn đối tượng có sở đa giác hình cầu, hình trụ hình dĩa  Thư viện OpenGl auxiliary gồm hàm đặc biệt dùng đơn giản hóa ví dụ lập trình sách dẫn lập trình OpenGL Các hàm phụ thuộc platform thực nhiệm vụ quản ký cửa sổ, điều khiển xuất/nhập, vẽ đối tượng 3D định Do hàm có mực đích thiết minh nên không dùng mã sản Thi ết k ế h ệ th ống ki ểm tra cácc quan h ệ hình h ọc trang Lu ận v ăn t ốt nghi ệp xuất  Các hàm “WGL”kết nối OpenGL với WINdows NT, cho phép người lập trình xây dựng chọn lựa ngữ cảnh biểu diễn, tạo bitmap font, hàm dùng Windows NT  Cuối cùng, hàm Win32 API dùng giải định dạng điểm ảnh tạo đệm đôi Trong phần này, trình bày số hàm sử dụng đề tài  Hàm vẽ điểm, đường, đa giác: Được bắt đầu hàm: glBegin (Glenum mode) Để bắt đầu đỉnh primitive, tham số mode kiểu primitive Tham số mode có giá trị sau:  GL_POINTS: đỉnh sử dụng điểm  GL_LINES: đỉnh dùng để tạo đoạn thẳng  GL_LINE_STRIP: đỉnh sử dụng tạo đoạn thẳng nhẵn  GL_TRIANGLES: đỉnh sử dụng tạo tam giác  GL_TRIANGLE_STRIP: đỉnh sử dụng tạo tam giác có cạnh nhẵn  GL_POLYGON : đỉnh sử dụng tạo đa giác lồi glEnd ( ) Hàm dùng để chấm dứt danh sách đỉnh mà rõ primitive khởi tạo hàm glBegin Ví du: Vẽ đường thẳng từ điểm glBegin(GL_LINES) glVertex3f(0.0f, 0.0f, 0.0f); Thi ết k ế h ệ th ống ki ểm tra cácc quan h ệ hình h ọc trang Lu ận v ăn t ốt nghi ệp glVertex3f(50.0f, 50.0f, 50.0f); glEnd( );  Hàm tọa độ điểm, đường, đa giác: glVertex2f (Glfloat x,Glfloat y) glVertex3f (Glfloat x,Glfloat y,Glfloat z)  Hàm biến đổi tọa độ: • glLoadIdentity(); thay ma trận hành ma trận đơn vị • glMultMatrix(); nhân ma trận hành với ma trận định • gl PopMatrix(void); lấy ma trận hành từ stack • glPushMatrix(void); đẩy ma trận hành vào stack • glTranslatef (Glfloat x, Glfloat y, Glfloat z); nhân ma trận hành ma trận tịnh tiến • gl Rotatef(Glfloat Angle, Glfloat x, Glfloat y, Glfloat z); nhân ma trận hành ma trận quay  Các hàm liên quan đến màu: • glColor3f (Glfloat red, Glfloat green, Glfloat blue); đặt màu hành thành phần red, green, blue với giá trị từ 0,0 đến 1,0 • glClearColor(GLclampf red, GLclamp green, Glclamp blue, Glclamp alpha); đặt màu cho việc xóa buffer màu • glClear(GL_COLOR_BUFFER_BIT); xóa buffer màu, xóa cửa sổ màu xóa hành  Các hàm liên quan đến ánh sáng: • glLightf(Glenum light, Glenum pname, GLfloat param); Thi ết k ế h ệ th ống ki ểm tra cácc quan h ệ hình h ọc trang 10 Lu ận v ăn t ốt nghi ệp } Wireframe; Kiểu liệu dùng để tạo danh sách cạnh từ đỉnh liên tiếp nhau: typedef struct { CPoint A; CPoint B; } TypeListEdge; Kiểu liệu lưu trữ điểm, có kèm theo cờ để phân biệt loại điểm khác (điểm giao đa giác, điểm duyệt hay chưa duyệt; hay đỉnh đa giác) dùng thủ tục kiểm tra quan hệ hai đa giác, khai báo sau: typedef struct { CPoint P; int CFlag; } ListPoint; III CÁCH TỔ CHỨC CÁC HÀM TRONG 2D Các hàm giới thiệu nhóm lại thành nhóm giúp cho việc theo dõi dễ dàng 1- Những hàm sử dụng lớp CkiemTra2DView.cpp  Construction/destruction lớp CView CKiemTra2DView:: CKiemTra2DView() CKiemTra2DView:: ~CKiemTra2DView()  Các hàm tạo cửa sổ, vẽ lớp CView Thi ết k ế h ệ th ống ki ểm tra cácc quan h ệ hình h ọc trang 84 Lu ận v ăn t ốt nghi ệp BOOL CKiemTra2DView::PreCreateWindow(CREATESTRUCT& cs) void CKiemTra2DView:: OnDraw(CDC* pDC)// Debug void CKiemTra2DView::AssertValid() const void CKiemTra2DView::Dump(CDumpContext& dc) const CTestHHDoc* CKiemTra2DView::GetDocument()  Các hàm phục vụ vẽ 2D void CKiemTra2DView::OnVediem() void CKiemTra2DView::OnUpdateVediem(CCmdUI* pCmdUI) void CKiemTra2DView::OnVeduongthang1() void CKiemTra2DView::OnUpdateVeduongthang1(CCmdUI* pCmdUI) void CKiemTra2DView::OnVeduongthang2() void CKiemTra2DView::OnUpdateVeduongthang1(CCmdUI* pCmdUI) void CKiemTra2DView:: OnVedagiac1() void CKiemTra2DView::OnUpdateVedagiac1(CCmdUI* pCmdUI) void CKiemTra2DView::OnVedagiac2() void CKiemTra2DView::OnUpdateVedagiac2(CCmdUI* pCmdUI)  Các hàm liên quan đến mouse void CKiemTra2DView::OnLButtonDown(UINT nFlags, CPoint point) void CKiemTra2DView::OnLButtonUp(UINT nFlags, CPoint point) void CKiemTra2DView::OnRButtonDown(UINT nFlags, CPoint point) void CKiemTra2DView::OnMouseMove(UINT nFlags, CPoint point)  Tính Max ,Min giá trị(thủ tục tìm giá trị lớn hai giá trị) int Max(int x, int y) Thi ết k ế h ệ th ống ki ểm tra cácc quan h ệ hình h ọc trang 85 Lu ận v ăn t ốt nghi ệp { int tam; tam=(x>=y)? x:y; return tam; int Min(int x, int y) { int tam; tam=(x>=y)? y:x; return tam; } }  Các hàm kiểm tra điểm P bên / bên đa giác BOOL TestPoint_Boundary (CPoint P,UINT n,CPoint dayP[]) BOOL Giaodiem(CPoint P,UINT n,CPoint dayP[]) void CKiemTra2DView::OnTestDiem()  Các hàm kiểm tra quan hệ đường thẳng double LengthOfSegment(CPoint A,CPoint B) void CKiemTra2DView::OnTinhgoc() void CKiemTra2DView::OnHinhchieu() UINT Intersect(CPoint A,CPoint B,CPoint C,CPoint D,CPoint &M)  Các hàm kiểm tra quan hệ đoạn thẳng đa giác void Trungdiem(CPoint A,CPoint B,CPoint &TDiem) void ClippingLine(CPoint A,CPoint B,UINT nDinh,CPoint DGiac[], CPoint DsachDcat[],UINT &SoDcat) void CKiemTra2DView::OnDoanthang_Dagiac()  Hàm kiểm tra Đa giác lồi hay lõm? long Toado(CPoint A, CPoint B) void CKiemTra2DView:: OnTest2Dagiac()  Hàm tính diện tích đa giác void CKiemTra2DView::OnTinhdientich() Thi ết k ế h ệ th ống ki ểm tra cácc quan h ệ hình h ọc trang 86 Lu ận v ăn t ốt nghi ệp  Nhóm hàm có liên quan tới phép chiếu song song phối cảnh void InitProjection(double &t1,double &t2,double &t3,double &t4,double &t5,double &t6,double &t7,double &t8,float xRot,float yRot) void Projection(BOOL PhepChieu ,float xRot,float yRot, Wireframe &WF) void CKiemTra2DView:: OnChieuPhoiCanh() void CKiemTra2DView::OnUpdateChieuPhoiCanh(CCmdUI* pCmdUI) void CKiemTra2DView:: OnChieuSongSong() void CKiemTra2DView::OnUpdateChieuSongSong(CCmdUI* pCmdUI)  Nhóm hàm liên quan đến thao tác hình lăng trụ void CKiemTra2DView:: OnLangTru() void CKiemTra2DView::OnChieuLangTru() void CKiemTra2DView::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags)  Nhóm hàm liên quan đến thao tác hình chóp void CKiemTra2DView::OnNhapDinhChop() void CKiemTra2DView:: OnChieu_Chop()  Nhóm hàm liên quan đến thao tác hình nón void CKiemTra2DView::OnHinhnon() void CKiemTra2DView::OnChieu_Non()  Các hàm kiểm tra tính đồng phẳng đa giác void CKiemTra2DView::OnNhapDagiac() void CKiemTra2DView::PlanarPolygon()  Tô màu đa giác void CKiemTra2DView::OnTomaudagiac() Thi ết k ế h ệ th ống ki ểm tra cácc quan h ệ hình h ọc trang 87 Lu ận v ăn t ốt nghi ệp  Kiểm tra quan hệ đa giác void CKiemTra2DView::OnTest2Dagiac() 2- Những hàm sử dụng lớp CKiemTra2DDoc.cpp CkiemTra2DDoc::CkiemTra2DDoc() CkiemTra2DDoc::~ CkiemTra2DDoc() BOOL CkiemTra2DDoc::OnNewDocument() void CkiemTra2DDoc::Serialize(CArchive& ar) IV CÁCH TỔ CHỨC CÁC HÀM TRONG OPENGL 3D Trong phần kiểm tra 3D, có phương thúc xử lý thao tác sau: 1- Những hàm sử dụng lớp CkiemTra3Dview  Construction/destruction lớp CView CKiemTra3DView::CKiemTra3DView() CKiemTra3DView::~CKiemTra3DView()  Các hàm tạo cửa sổ, vẽ 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ẽ vật thể 3D int CKiemTra3DView::OnCreate(LPCREATESTRUCT pCreateStruct) Thi ết k ế h ệ th ống ki ểm tra cácc quan h ệ hình h ọc trang 88 Lu ận v ăn t ốt nghi ệp  Các hàm điều chỉnh kích thước, tạo màu 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 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 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 thao tác kiểm tra, tính toán đối tượng điểm, đường thẳng, mặt phẳng void CKiemTra3DView:: OnKtraDiemMP() void CKiemTra3DView:: OnVeGiao2MP() void CKiemTra3DView:: OnKtraDiem_Duong() Thi ết k ế h ệ th ống ki ểm tra cácc quan h ệ hình h ọc trang 89 Lu ận v ăn t ốt nghi ệp 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 việc vẽ, demo 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 thao tác xoá hình Thi ết k ế h ệ th ống ki ểm tra cácc quan h ệ hình h ọc trang 90 Lu ận v ăn t ốt nghi ệp void CKiemTra3DView:: OnClearScreen() 2- Những hàm sử dụng lớp CkiemTra3Ddoc CkiemTra3DDoc:: CkiemTra3DDoc() CkiemTra3DDoc:: ~ CkiemTra3DDoc() BOOL CkiemTra3DDoc:: OnNewDocument() void CkiemTra3DDoc:: Serialize(CArchive& ar) PHẦN IV: HƯỚNG DẪN SỬ DỤNG CHƯƠNG TRÌNH Trong phần này, đề cập cách sử dụng thao tác việc kiểm tra quan hệ hình học phần 2D 3D I Giao diện phần 2D  Màn hình giao diện chương trình, người sử dụng xem thông tin chương trình chọn thao tác kiểm tra 2D 3D Thi ết k ế h ệ th ống ki ểm tra cácc quan h ệ hình h ọc trang 91 Lu ận v ăn t ốt nghi ệp Giao diện bao gồm thao tác:  Kiểm tra 2D  Kiểm tra 3D  Đề tài  Thoát chương trình Thi ết k ế h ệ th ống ki ểm tra cácc quan h ệ hình h ọc trang 92 Lu ận v ăn t ốt nghi ệp  Màn hình làm việc phần 2D, bao gồm đề mục thao tác 2D, thao tác 3D thao tác xử lý tương ứng Người sử dụng dùng phím Enter hay tổ hợp phím để chọn thao tác phù hợp Trong phần kiểm tra 2D bao gồm đối tượng điểm, đường thẳng, đa giác thao tác kiểm tra tương ứng với đối tượng hình học Thi ết k ế h ệ th ống ki ểm tra cácc quan h ệ hình h ọc trang 93 Lu ận v ăn t ốt nghi ệp  Màn hình làm việc người dùng chọn thao tác kiểm tra đối tượng hình học II Giao diện phần 3D Trong phần 3D, xin giới thiệu số hình ảnh demo chương trình Thi ết k ế h ệ th ống ki ểm tra cácc quan h ệ hình h ọc trang 94 Lu ận v ăn t ốt nghi ệp Kiểm tra điểm có đồng phẳng với mặt phẳng hay không? Vẽ vật thể phụ thuộc vào yêu cầu người dùng Thi ết k ế h ệ th ống ki ểm tra cácc quan h ệ hình h ọc trang 95 Lu ận v ăn t ốt nghi ệp III Đề nghị hướng phát triển Tạo thêm chức kích hoạt lại đối tượng hình học thể vùng Client như: • Kéo giản kích thước • Dịch chuyển đối tượng tuỳ ý • Cập nhật lại liệu cho vị trí Từ tương quan đựơc thiết kế đề tài này, xây dựng lên nhiều toán hình học khác Thi ết k ế h ệ th ống ki ểm tra cácc quan h ệ hình h ọc trang 96 Lu ận v ăn t ốt nghi ệp TÀI LIỆU THAM KHẢO  [1] Lê Tấn Hùng, Huỳnh Quyết Thắng, Kỹ thuật đồ họa, Nhà xuất Khoa Học Kỹ Thuật 2000 [2] Lê Minh Trí, Kỹ lập trình Windows Visual C++ 6.0 (Tập 2), Nhà xuất Thanh Niên 2001 [3] Dương Quang Thiện, Lập trình Windows dùng Visual C++ 5.0 MFC (Tập 1, 3), Nhà xuất Thống Kê 1998 [4] Dương Quang Thiện, Nhập môn lập trình Windows dùng Visual C++, Nhà xuất Thống Kê 1998 [5] Trần Quốc Bình, Học Visual C++ 21 ngày, Nhà xuất Mũi Cà Mau [6] FrancisS.Hill,Jr, Computer Graphics, Nhà xuất MacMillan 1990 [7] Richard S Wright, Jr , Michael Sweet, Thi ết k ế h ệ th ống ki ểm tra cácc quan h ệ hình h ọc trang 97 Lu ận v ăn t ốt nghi ệp OpenGL SuperBible, Waite Group Press 1996 [8] David J Kruglinski, Inside Visual C++ (Fourth Edition), Microsoft Press 1997 Thi ết k ế h ệ th ống ki ểm tra cácc quan h ệ hình h ọc trang 98 [...]... phẳng • Hình học giải tích trong không gian Phần lý thuyết cơ sở toán học này rất cần thiết cho việc thiết kế chương trình thực hiện việc kiểm tra các quan hệ hình học, không gian vector là cơ sở lý thuyết toán học tất yếu để xây dựng các cấu trúc đồ họa máy tính I.1 Giới thiệu về vector: Điểm (point): Mô tả các vị trí của đồ hình và có nhiều cách để diễn đạt Trong hai chiều biểu diễn bằng cách dùng... QUAN Trong phạm vi của môn hình học thì không gian diễn dịch của nó rất lớn, chính vì vậy tôi thiết kế thuật toán trên các đối tượng hình học cơ bản Và từ những thuật toán này chúng ta có thể mở rộng ra cho một diễn dịch rộng lớn hơn II.1 CÁC QUAN HỆ HÌNH HỌC TRONG 2D 1 Các đối tượng hình học cơ bản: • Điểm • Đường thẳng • Đa giác 2 Sự tương quan giữa các đối tượng hình học: • Điểm - Đường thẳng •... DUNG Trong phần giới thiệu tôi đã trình bày những nội dung sơ lược mang tính tổng quát của đề tài Phần nội dung tôi trình bày chi tiết hơn theo thứ tự logic các vấn đề từ lý thuyết toán học đến các thuật toán chương trình I LÝ THUYẾT CƠ SỞ TOÁN HỌC Các lý thuyết cơ sở toán học được sử dụng cho các thuật toán trong đề tài “THIẾT KẾ HỆ THỐNG KIỂM TRA CÁC QUAN HỆ HÌNH HỌC“ bao gồm: • Hình học giải tích trong. .. - Đa giác 3 Kiểm tra sự tương quan giữa các đối tượng hình học: a Điểm - Đường thẳng  Kiểm tra điểm có thuộc đường thẳng? Thi ết k ế h ệ th ống ki ểm tra cácc quan h ệ hình h ọc trang 31 Lu ận v ăn t ốt nghi ệp  Tính khoảng cách từ điểm đến đường thẳng nếu điểm không thuộc đường thẳng b Điểm - Đa giác  Kiểm tra điểm bên trong hay bên ngoài đa giác? c Đường thẳng - Đường thẳng  Kiểm tra hai đường... Mặt phẳng  Kiểm tra đường thẳng thuộc mặt phẳng? Thi ết k ế h ệ th ống ki ểm tra cácc quan h ệ hình h ọc trang 33 Lu ận v ăn t ốt nghi ệp  Kiểm tra đường thẳng và mặt phẳng cắt nhau?  Kiểm tra đường thẳng và mặt phẳng song song?  Kiểm tra đường thẳng và mặt phẳng vuông góc?  Tính góc giữa đường thẳng và mặt phẳng nếu đường thẳng và mặt phẳng cắt nhau  Tính khoảng cách giữa đường thẳng và mặt phẳng... đối tượng hình học cơ bản: • Điểm Thi ết k ế h ệ th ống ki ểm tra cácc quan h ệ hình h ọc trang 32 Lu ận v ăn t ốt nghi ệp • Đường thẳng • Mặt phẳng 2 Sự tương quan giữa các đối tượng hình học: • Điểm - Đường thẳng • Điểm - Mặt phẳng • Đường thẳng - Đường thẳng • Đường thẳng - Mặt phẳng • Mặt phẳng - Mặt phẳng 3 Kiểm tra sự tương quan giữa các đối tượng hình học: a Điểm - Đường thẳng  Kiểm tra điểm... Tính hình chiếu của đoạn thẳng trên đường thẳng d Đường thẳng - Đa giác  Kiểm tra đường thẳng nằm bên trong hay bên ngoài đa giác  Clip một đoạn thẳng vào đa giác e Đa giác - Đa giác  Kiểm tra sự tương quan giữa hai đa giác  Cắt nhau? • Lồng nhau hay rời nhau? • Tính diện tích giao nhau của hai đa giác  Kiểm tra đa giác lồi, lõm  Tính diện tích của đa giác II.2 CÁC QUAN HỆ HÌNH HỌC TRONG 3D 1 Các. .. SỰ TƯƠNG QUAN GIỮA CÁC ĐỐI TƯỢNG HÌNH HỌC Trong phần này tôi trình bày cách thực hiện một vấn đề, được xây dựng theo logic nhằm mục đích để người đọc hoặc tham khảo có thể dễ dàng kiểm tra so sánh đối chiếu giữa thuật toán với cơ sở toán học III.1 CÁC QUAN HỆ HÌNH HỌC TRONG MẶT PHẲNG (2D) 1 Tính góc giữa hai đường thẳng Cơ sở toán học: Đây là ứng dụng quan trọng của tích vô hướng Hình a dưới cho thấy... xa ) Hệ phương trình trên tương đương với hệ phương trình sau: a 2 x - a1 y + 0 + a1 y a - a 2 x a = 0 Thi ết k ế h ệ th ống ki ểm tra cácc quan h ệ hình h ọc trang 30 Lu ận v ăn t ốt nghi ệp a 3 x + 0 - a1 z + a 1 z a - a 3 x a = 0 Phương trình tổng quát của đường thẳng qua 2 điểm trong không gian là hệ phương trình bậc nhất 3 biến x, y, z như trên II CÁC ĐỐI TƯỢNG HÌNH HỌC VÀ SỰ TƯƠNG QUAN Trong. .. mặt Như vậy nó tỉ lệ với n, gọi là Kn, nên khoảng cách là| Kn | Vì Kn nằm trên mặt nên n (Kn)=D n S Thi ết k ế h ệ th ống ki ểm tra cácc quan h ệ hình h ọc trang 23 Lu ận v ăn t ốt nghi ệp d Kiểm tra nửa không gian trong và ngoài của một điểm Xét điểm Q, giả sử đường E đi qua điểm A và có chuẩn hướng ra n như hình vẽ: E E n ϕ A inside Góc ϕ giữa n và Q -A < 90 0 , nếu Q nằm phía ngoài, vì vậy tích

Ngày đăng: 31/07/2016, 14:22

Từ khóa liên quan

Mục lục

  • Được bắt đầu bởi hàm:

  • PHẦN II: NỘI DUNG

    • Trong phần giới thiệu tôi đã trình bày những nội dung sơ lược mang tính tổng quát của đề tài. Phần nội dung tôi trình bày chi tiết hơn theo thứ tự logic các vấn đề từ lý thuyết toán học đến các thuật toán chương trình.

    • I. LÝ THUYẾT CƠ SỞ TOÁN HỌC

    • V. W = với i = 1,… ,n

      • II. CÁC ĐỐI TƯỢNG HÌNH HỌC VÀ SỰ TƯƠNG QUAN

        •  Đường thẳng

        •  Đường thẳng

        • III. CÁC THUẬT TOÁN KIỂM TRA SỰ TƯƠNG QUAN GIỮA CÁC ĐỐI TƯỢNG HÌNH HỌC

          • Cơ sở toán học:

          • Dựa vào hình vẽ trên, ta có:

          • SUBJ_LIST: a, 1, b, 2, c, 3, 4, d, 5, 6

            • Cơ sơ toán học:

              • Cho đến khi i=N-1

              • Begin

              • Ax + By + Cz + D = 0

              •  Tọa độ J(X2 , Y2 , Z2)

                • - Tính S là diện tích của đa giác đáy.

                • - Nhập h, chiều cao của hình lăng trụ.

                • - Tính thể tích đa giác V = S*h.

                • - Tính S là diện tích của đa giác đáy.

                • - Nhập h, chiều cao của hình chóp.

                • PHẦN IV: HƯỚNG DẪN SỬ DỤNG CHƯƠNG TRÌNH

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

Tài liệu liên quan