1. Trang chủ
  2. » Luận Văn - Báo Cáo

0964Vẽ đồ thị bằng cấu trúc logic

59 1 0

Đ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

Thông tin cơ bản

Tiêu đề Vẽ Đồ Thị Bằng Cấu Trúc Logic
Tác giả V Quang Huy
Người hướng dẫn Thầy Trương Hoàng Vinh
Trường học Đại học Mở Thành Phố Hồ Chí Minh
Chuyên ngành Công Nghệ Thông Tin
Thể loại Khóa Luận Tốt Nghiệp
Năm xuất bản 2012
Thành phố Thành Phố Hồ Chí Minh
Định dạng
Số trang 59
Dung lượng 1,4 MB

Nội dung

B GIÁO D C VÀ ÀO T O TR NG IH CM TP.H CHÍ MINH KHOA CƠNG NGH THƠNG TIN KHÓA LU N T T NGHI P tài: V đ th b ng c u trúc logic GV H ng D n : TR NG HOÀNG VINH SV Th c hi n : V QUANG HUY MSSV : 0851010110 L p : TH08A1 Thành ph H Chí Minh – Tháng N m 2012 Lời cảm ơn Tôi xin chân thành gửi lời cảm ơn đến tồn thể thầy giáo phụ trách giảng dạy trường Đại học Mở Thành Phố Hồ Chí Minh nói chung q thầy khoa CƠNG NGHỆ THƠNG TIN nói riêng Trong suốt q trình học tập trường, q thầy tận tình giảng dạy truyền đạt cho tơi kiến thức lý thuyết đến kiến thức thực hành Hơn nữa, q thầy tận tình truyền đạt kinh nghiệm quý báu kiến thức ứng dụng thực tế, kĩ thuật chuyên môn, qua góp phần lớn việc tạo điều kiện thuận lợi cho q trình học tập, giúp tơi dễ dàng nắm vững kiến thức học ứng dụng thực tiễn Đặc biệt, xin chân thành gửi lời cảm ơn sâu sắc đến thầy Trương Hoàng Vinh trực tiếp hướng dẫn định hướng để chọn, thực đề tài cho đồ án môn học Thầy giúp đỡ dẫn trực tiếp kinh nghiệm thực tế cung cấp tài liệu cho tham khảo, tạo điều kiện cho hồn thành khóa luận thời hạn Do chưa có nhiều kinh nghiệm, nên trình thực đề tài cịn nhiều thiếu sót Tơi mong muốn nhận đóng góp ý kiến q thầy bạn để đề tài hoàn thiện Cuối cùng, gửi lời chúc tốt đẹp đến quý thầy khoa CƠNG NGHỆ THƠNG TIN tồn thể thầy cô dạy trường Đại học Mở Thành Phố Hồ Chí Minh Mục lục Giới thiệu đề tài, lý chọn kết mong đợi 1.1 Giới thiệu đề tài 7 1.2 1.3 Lý chọn đề tài Phương pháp nghiên cứu 7 1.4 1.5 Kết mong đợi Kết cấu khóa luận Nội dung nghiên cứu 2.1 2.2 2.3 Cơ sở lý thuyết đề tài 2.1.1 Tóm tắt đề tài 9 2.1.2 Các khái niệm sử dụng đề tài 2.1.3 2.1.4 2.1.5 Phạm vi nghiên cứu Cấu trúc logic đồ thị Các quan hệ đồ thị logic 11 12 Cơ sở kĩ thuật đề tài 13 2.2.1 2.2.2 Ngôn ngữ lập trình: Java SE Thư viện đồ họa hỗ trợ: OpenGL 13 15 2.2.3 Thư viện API JOGL giúp tương tác với OpenGL thông qua Java Hiện thực đề tài 16 16 2.3.1 Cấu trúc chương trình 16 2.3.2 2.3.3 Minh họa sử dụng Cài đăt 19 28 Triển vọng ứng dụng đề tài 59 Danh sách hình vẽ 2.1 Ví dụ minh họa điều kiện trường hợp D1 10 2.2 Ví dụ minh họa điều kiện trường hợp D2 10 2.3 2.4 Ví dụ minh họa điều kiện trường hợp D3 Minh họa đồ thị logic với tập đỉnh V = {A, B, C, D, E} tập cạnh E = {a, b, c, d, e} 11 11 2.5 2.6 Minh họa đồ thị logic với tập đỉnh V = {A, B, C, D, E} tập cạnh E = {a, c, b, d, e} Quan hệ đỉnh A,B cạnh e 12 12 2.7 2.8 Quan hệ cắt crossG ⊆ EG × EG Quan hệ thứ tự (e,f,g) với (e,g,f) 13 13 2.9 Caption for LOF 14 2.10 Caption for LOF 2.11 Lưu đồ hoạt động chương trình vẽ đồ thị 15 17 2.12 Sơ đồ lớp chương trình 18 2.13 Sơ đồ lớp hỗ trợ sử dụng chương trình 2.14 Giao diện chương trình - menu vùng vẽ 19 20 2.15 Chương trình chạy lần 21 2.16 Hộp thoại yêu cầu nhập số đỉnh 2.17 Hộp thoại yêu cầu chọn quan hệ cạnh đồ thị 21 21 2.18 Đồ thị vẽ từ thông tin cung cấp 2.19 Menu "Thao tác" chương trình 22 22 2.20 Đồ thị vẽ lại, giữ ngun thơng số trước 23 2.21 Hộp thoại cho phép chỉnh sửa lại đồ thị, ta bỏ bớt cạnh AC đồ thị 2.22 Đồ thị vẽ lại với thông tin mới, cạnh AC loại bỏ so với Hình 2.18 23 24 2.23 Menu cho phép chọn dạng đồ thị - Đồ thị tự hay đồ thị thường 24 2.24 Minh họa đồ thị vẽ theo dạng tự 2.25 Minh họa đồ thị vẽ theo dạng thường 25 25 2.26 Menu cho phép chuyển qua lại không gian chiều chiều 2.27 Đồ thị không gian chiều 26 27 2.28 Đồ thị không gian chiều tương tác 2.29 Minh họa hoạt động chương trình vẽ đồ thị khơng gian chiều 28 29 2.30 Caption for LOF 30 2.31 Caption for LOF 2.32 Đồ thị chương trình thực 39 40 2.33 Minh họa việc sinh ngẫu nhiên đỉnh 2.34 Minh họa điểm nằm nằm tam giác 40 41 2.35 Minh họa đa giác lồi 42 2.36 Minh họa đa giác lõm 2.37 Đồ thị thường 42 44 2.38 Minh họa vẽ cạnh trường hợp góc preEdge = DAC góc xét α = DAB với α > preEdge 2.39 Minh họa vẽ cạnh trường hợp góc preEdge = DAC góc xét α = DAB 45 với α < preEdge 2.40 Đồ thị tự 45 47 2.41 Minh họa công thức (2.20) (2.21) đường tròn 50 2.42 Hai hình ellipse, hình to hình nhỏ 2.43 Hai hình ellipse chồng lên 51 51 2.44 Xóa nửa bên hình ellipse nhỏ 2.45 Xóa nửa bên hình ellipse lớn 51 52 2.46 Sự dao động đáng kể hình dạng đường cong phép nội suy Lagrange tăng số lượng điểm sử dụng 55 2.47 Đồ thị biểu diễn phép nội suy tuyến tính Lagrange tập hợp điểm cho trước 56 2.48 Các menu có chương trình 58 Chương Giới thiệu đề tài, lý chọn kết mong đợi 1.1 Giới thiệu đề tài Vấn đề ứng dụng lý thuyết đồ thị ứng dụng nhiều hệ thống đồ số hay GIS (hệ thống thơng tin địa lý) Do đó, vấn đề giảm thiểu sở lưu trữ liệu đồ (đồ thị) đến mức tối đa mà giữ nguyên trạng đồ (đồ thị) cấp thiết Đề tài nghiên cứu ứng dụng kết Emeric Bên cạnh mong muốn phát triển kết cho số trường hợp riêng đặc biệt 1.2 Lý chọn đề tài Vấn đề nêu đề tài vấn đề mới, có tiềm mở rộng tương lai Tuy nhiên, vấn đề dừng lại việc nghiên cứu lý thuyết mà chưa có ứng dụng thực tiễn để minh họa vấn đề Chính thế, mong muốn thực vấn đề nêu đề tài, giới hạn số trường hợp đặc biệt Thơng qua việc thực nó, chúng tơi dựa vào tiếp tục phát triển mở rộng lý thuyết 1.3 Phương pháp nghiên cứu Dựa kết việc nghiên cứu lý thuyết đề tài, đề phương pháp nghiên cứu sau: - Tiếp tục đào sâu nghiên cứu lý thuyết - Nghiên cứu ứng dụng, cơng cụ để thực đề tài - Dựa nghiên cứu được, thực kết đạt thành mô hình 2D - 3D 1.4 Kết mong đợi Xây dựng ứng dụng minh họa từ kết Phát triển lý thuyết cho số trường hợp đặc biệt 1.5 Kết cấu khóa luận Khóa luận bao gồm phần sau • Chương 1: Giới thiệu đề tài • Chương 2: Nội dung nghiên cứu • Chương 3: Triển vọng ứng dụng đề tài Chương Nội dung nghiên cứu 2.1 2.1.1 Cơ sở lý thuyết đề tài Tóm tắt đề tài Biễu diễn hình vẽ đồ thị cấu trúc logic monadic bắt đầu phát triển Courcelle cộng vào năm 1998 Cơng trình mối liên hệ thành phần cấu trúc đồ thị như: mối quan hệ giao nhau, thứ tự cạnh đỉnh đồ thị theo chiều nhằm giúp vẽ đồ thị hoàn chỉnh cho dạng đồ thị đầy đủ (graph complete) Tiếp nối công việc Courcell, Gioan cơng bố cơng trình vẽ đồ thị phẳng cấu trúc logic bậc bậc hai Bài báo giới thiệu kết biểu diễn đồ thị cấu trúc logic số trường hợp đặc biệt 2.1.2 Các khái niệm sử dụng đề tài - Đỉnh (vertex) - Cạnh (edge) - Cấu trúc đồ thị (logical structure) - Tam giác biến (triangle mutations) Đồ thị mà chúng tơi trình bày giới thiệu báo hữu hạn, không khuyên liên thông Ta ký hiệu tập hợp đỉnh đồ thị G VG hay V , tập hợp cạnh đồ thị EG hay E Một cách hình thức, ta xem mặt phẳng S mặt phẳng biểu diễn hình học 2D ( cách tương tự biểu diễn hình máy tính PC ) 2.1.3 Phạm vi nghiên cứu Ta gọi hình vẽ đồ thị mặt phẳng S ánh xạ điểm tương ứng với đỉnh đồ thị G =< V, E >, đường cong tương ứng với cạnh theo ràng buộc sau để tránh việc đồ thị dạng tự rơi vào lớp tốn NP-Complex - khơng giải được: • D1: Hai đỉnh đồ thị khơng biểu diễn điểm B Courcelle, The monadic second-order logic of graphs XIII: graph drawings with edge crossings, Th Comp Sci 244, pp 63-94 (2000) E Gioan – Complete graph drawings up to triangle mutations - LNCS, 2005, Volume 3787/2005, 139 − 150 Hình 2.1: Ví dụ minh họa điều kiện trường hợp D1 Trên hình ví dụ minh họa cho điều kiện D1, ta thấy hình bên trái, đỉnh có trùng tên, điều sai với điều kiện đề tài • D2: Một đường cong biểu diễn cạnh đồ thị đường nối liền hai đỉnh đồ thị Hai đường cong cắt tối đa lần Hai đường cong giao cắt Hình 2.2: Ví dụ minh họa điều kiện trường hợp D2 Ở hình bên trái, cạnh đồ thị cắt điểm, cịn hình bên phải, có cạnh cắt điểm • D3: Ba đường cong không giao (cắt) điểm Chúng có điểm chung xuất phát từ đỉnh 10 Hình 2.3: Ví dụ minh họa điều kiện trường hợp D3 Như hình bên, ta thấy đồ thị bên trái vi phạm điều kiện đề tài, cạnh cắt điểm Còn bên phải đỉnh A đỉnh xuất phát cạnh, phù hợp với điều kiện đề tài 2.1.4 Cấu trúc logic đồ thị Ví dụ minh họa cấu trúc logic đồ thị Hình 2.4: Minh họa đồ thị logic với tập đỉnh V = {A, B, C, D, E} tập cạnh E = {a, b, c, d, e} 11 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 } } drawEdge ( graphics2d , e , preEdge , preAngle ) ; if ( preEdge != null ) { // neu nam cung dinh preAngle = angle2Edge (e , preEdge ) ; if ( preAngle > 0) { preEdge = e ; } else { preEdge = null ; preAngle = 0; } } else { preEdge = e ; preAngle = 0; } } Đoạn mã minh họa cho việc vẽ cạnh trước cạnh sau: 10 11 12 13 14 15 16 17 18 19 if ( preEdge == null ) // neu truoc no khong co canh nao g2d drawLine ( from , to ) ; else { // tinh goc giua canh moi va canh cu double angle = angle2Edge (e , preEdge ) ; if ( angle > preAngle || angle < 0) g2d drawLine ( from , to ) ; else { // ve kieu cong Lagrange // nam sau -> ve binh thuong // g2d drawLagrange ( arrP ) ; } } Với đồ thị tự do, công việc đơn giản cần vẽ cạnh nối với đỉnh mà không cần quan tâm đến thứ tự cần vẽ Đoạn code sau minh họa cho việc vẽ nối cạnh đồ thị tự if ( m _ is F re eD r aw in g ) { Random r = new Random () ; if ( r nextBoolean () ) g2d drawSpings ( from , to ) ; // ve theo kieu xoan oc lo xo else 46 10 11 g2d drawLine ( from , to ) ; return ; } Sau thực thao tác vẽ, kết ta thu Hình 2.40: Đồ thị tự Các lớp hỗ trợ Cũng tương tự không gian chiều, với không gian chiều xây dựng số lớp hỗ trợ để giúp cho việc cài đặt đồ thị Các lớp hỗ trợ gồm có phần lớp hỗ trợ đồ họa lớp hỗ trợ toán học Cac lớp hỗ trợ bao gồm lớp sau • Các lớp hỗ trợ đồ họa: GLCanvas2D, GLGraphics2D • Các lớp hỗ trợ toán học: Geometry2D, LineEq, Polymonial, Term • Các lớp khác: EdgeDlg2D Trong khơng gian chiều, số lớp có thay đổi như: Các lớp hỗ trợ tốn học • Lớp LineEq giúp thực đối tượng đường thẳng không gian chiều theo công thức A.x + B.y + C = Ngồi ra, đối tượng đường thằng cịn cho phép người dùng vào điểm để xem điểm thuộc miền đường thẳng với cơng thức public double resubs tituti on ( Point p ) { return A * p x + B * p y + C ; } 47 • Lớp Geometry2D tương tự lớp Geometry3D, lớp cung cấp phương thức ỗ trợ tinh tốn như: xoay điểm khơng gian, tính góc điểm, đoạn thẳng, tính diện tích tam giác, chuyển đổi từ radians sang độ ngược lại Một số phương thức tiêu biểu lớp kể đến như: - Tính khoảng cách điểm không gian chiều theo công thức sau: d= (Bx − Ax )2 + (By − Ay )2 (2.8) - Xoay điểm quanh điểm trục cho trước Giả sử ta có điểm P, điểm xoay quanh điểm C cho trước với góc α ta có cơng thức sau dx = Px − Cx (2.9) dy = Py − Cy (2.10) Px = dx cos α − dy sin α + Cx (2.11) Py = dy sin α + dy cos α + CY (2.12) (2.13) - Lấy góc điểm cho trước Giả sử ta có điểm A, B, C góc α = ABC tính cơng thức sau a = distance(B, A) (2.14) b = distance(B, C) (2.15) c = distance(A, C) a + b2 − c α = arccos 2ab (2.16) (2.17) • Lớp Term: lớp thực cho khái niệm số hạng Một số hạng gồm có thành phần là: hệ số số mũ Ví dụ 2x3 số hạng Ngồi ra, cịn có chức số vào số hạng • Lớp Polymonial 11 thực cho khái niệm đa thức biến Một đa thức biến gồm có nhiều số hạng, có dạng sau p(x) = a0 + a1 x + a2 x2 + + an−1 xn−1 + an xn (2.18) Các hệ số ∈ R đa thức biến R Nếu an = p(x) đa thức biến bậc n Đa thức viết ngắn gọn nhờ kí hiệu σ (sigma) i=0 p(x) = xi (2.19) n Với việc cài đặt đa thức, chức nhập đa thức, lớp đa thức có chức tính tốn, rút gọn cộng, trừ, nhân đa thức GLCanvas2D Đây lớp thực vùng vẽ Tương tự không gian chiều, lớp có chức nơi để ta vẽ lên Việc vẽ lên thơng qua đối tượng GL, thực thư viện đồ họa OpenGL Việc cài đặt, khởi tạo giống môi trường không gian chiều 11 Có tham khảo thêm Wikipedia: Polymonial 48 GLGraphics2D Đây lớp giao tiếp với thư viện đồ họa OpenGL bên để thực thao thác vẽ hình học phẳng Bản chất GLGraphics2D tương tự GLGraphics3D giới hạn vùng nhìn sử dụng phép chiếu song song để thực môi trường không gian chiều Trong lớp hỗ trợ này, chúng tơi cài đặt số thành phần bao gồm • Phần khởi tạo: người dùng cần phải cung cấp thông số để khởi tạo đối tượng GLGraphics2D phần Thuộc tính GLGraphics2D gồm có: GL2 m_gl ; GLU m_glu ; GLUT m_glut ; TextRenderer m_tr ; Dimension Color3f Color3f dimension ; m_drawColor = new Color3f ( Color BLACK ) ; m_fillColor = new Color3f ( Color WHITE ) ; Phương thức khởi tạo bao gồm thông tin đối tượng vẽ kích thước vùng vẽ: // // dat che ve d m_gl glMatrixMode ( GL2 GL_PROJECTION ) ; m_gl glOrtho (0 , dimension getWidth () , dimension getHeight () , , , 1) ; m_gl glMatrixMode ( GL2 GL_MODELVIEW ) ; // cai dat mot so thuoc tinh khac Chế độ vẽ không gian chiều thực qua phép chiếu song song glOrthor với thông tin (left, right, bottom, top, nearVal, farVal) • Các phương thức vẽ: giống GLGraphics3D, GLGraphics2D ta cần định nghĩa số phương thức vẽ khác Trong không gian chiều, phương thức vẽ gồm có: vẽ đường thẳng, đường trịn, ellipse, vẽ cung, vẽ đường benzier, đường cong dựa việc nội suy đa thức Lagrange - Vẽ đường thẳng: đường thẳng đường OpenGL hỗ trợ Do đó, ta cần dựa vào hàm OpenGL cung cấp sẵn thực phương thức Phương thức nhận vào tọa độ hai điểm A, B tiến hành vẽ đường thẳng nối tọa độ hai điểm Cài đặt sau: 10 11 12 13 14 public void drawLine ( Point2D A , Point2D B ) { m_gl glPushMatrix () ; // dat mau cho duong thang m_gl glColor3f ( m_drawColor R , m_drawColor G , m_drawColor B ) ; m_gl glBegin ( GL2 GL_LINES ) ; m_gl glVertex2d ( A getX () , A getY () ) ; m_gl glVertex2d ( B getX () , B getY () ) ; m_gl glEnd () ; m_gl glPopMatrix () ; } - Vẽ đường tròn: Với đường tròn, thư viện đồ họa OpenGL khơng hỗ trợ sẵn Vì vậy, ta phải tự cài đặt phương thức để vẽ đường tròn Giả sử, ta có đường trịn có bán kính r = 1, P 49 điểm nằm đường tròn Gọi PO đường thẳng nối từ gốc tọa độ O(0,0) tới điểm P Đưởng thẳng PO tạo với trục Ox góc α Ta có tọa độ điểm P suy từ công thức sau: Px = cosα (2.20) Py = sinα (2.21) Hình 2.41: Minh họa cơng thức (2.20) (2.21) đường trịn Từ đó, dựa vào (2.20) (2.21), ta vẽ vịng trịn cách cho góc α chạy từ 0◦ đến 360◦ Ta tìm tập điểm P, nối tập điểm lại, ta có đường trịn Tuy nhiên, áp dụng cơng thức này, đường trịn ln ln vẽ với tâm trùng với gốc tọa độ O(0,0) bán kính r = Vì vậy, ta cần dời tâm đến điểm cần vẽ, tính tốn lại cho đường trịn có bán kính mong muốn Với C tâm đường tròn, r bán kính, ta có cơng thức tổng qt sau Px = r.cosα + Cx (2.22) Py = r.sinα + Cy (2.23) Phương pháp vẽ nêu cài đặt sau: 10 11 12 13 14 15 16 17 18 19 public void drawCircle ( Point2D center , double radius ) { double angle , x , y ; // ve duong thang chinh m_gl glColor3f ( m_drawColor R , m_drawColor G , m_drawColor B ) ; m_gl glBegin ( GL GL_LINE_LOOP ) ; for ( int i =0; i B y -> doi vi tri A va B Point tmpA , tmpB ; if ( A y ve duong thang noi toi tmp1 x = x + ( D E FA UL T _W _L A RG E - D EF AU L T_ W _S MA L L ) - 5; tmp1 y = y ; if ( Geometry2D distance ( tmp1 , tmp ) < ( D E FA UL T _W _L A RG E ) ) { drawLine ( tmp1 , tmp ) ; break ; } } else { // ve duong cong len drawArc (x , y , DEFAULT_W_SMALL , DEFAULT_H_LARGE , 180 , 360) ; s = false ; } } // rotate back rotateR ( - angle , tmpA x , tmpA y ) ; } 53 - Vẽ đường cong Lagrange: đường cong Lagrange thực dựa theo khái niệm cách tính trình bày Đa thức Lagrange 12 Xét dãy điểm mặt phẳng (x0 , y0 ), (x1 , y1 ), , (xn , yn ) đó, xi < xj với i < j Đa thức nội suy bậc n xác định sau: n fn (x) = yi Li,n (x) (2.24) i=0 đó, Li,n (x) = (x − x0 ) (x − xi−1 )(x − xi+1 ) (x − xn ) (xi − x0 ) (xi − xi−1 )(xi − xi+1 ) (xi − xn ) (2.25) Cơng thức biểu diễn ngắn gọn sau: n n fn (x) = i=0 ( yi j=0 j=i x − xj ) xi − xj (2.26) có nghĩa tích n phần tử với j biến thiên từ đến n ngoại trừ j = 12 Đồ họa máy tính mơ hình hóa hình học – Vera B.Anand – Người dịch: TS Nguyễn Hữu Lộc – Nhà xuất Tổng hợp TP.HCM – 2000 54 Hình 2.46: Sự dao động đáng kể hình dạng đường cong phép nội suy Lagrange tăng số lượng điểm sử dụng Có thể thấy rằng, thừa số yi x = xi , x giá trị tọa độ khác Với n = 1, ta phương trình đường thẳng qua điểm: x − x0 x − x1 y0 − y1 x0 − x1 x1 − x0 x0 − x = y0 + (y1 − y0 )( ) x0 − x1 f1 (x) = Đa thức Lagrange có khuyết điểm bậc đa thức phụ thuộc vào số lượng điểm sử dụng Nếu cần độ xác cao số lượng điểm sử dụng tăng, kết tạo đa thức bậc cao có dao động đáng kể hình dạng đường 55 cong, ví dụ Hình 2.40 Trong hầu hết ứng dụng kĩ thuật, dao động không chấp nhận Ví dụ minh họa Sử dụng đa thức Lagrange để thực phép nội suy điểm sau: P1 (1, 1), P2 (2, 2), P3 (3, 3), P4 (4, 2), P5 (5, 1) Cách giải Phương trình (2.21) sử dụng để giải toán này: (x − 1)(x − 3)(x − 4)(x − 5) (x − 2)(x − 3)(x − 4)(x − 5) ](1) + [ ](2) (1 − 2)(1 − 3)(1 − 4)(1 − 5) (2 − 1)(2 − 3)(2 − 4)(2 − 5) (x − 1)(x − 2)(x − 4)(x − 5) (x − 1)(x − 2)(x − 3)(x − 5) +[ ](3) + [ ](2) (3 − 1)(3 − 2)(3 − 4)(3 − 5) (4 − 1)(4 − 2)(4 − 3)(4 − 5) (x − 1)(x − 2)(x − 3)(x − 4) ](1) +[ (5 − 1)(5 − 2)(5 − 3)(5 − 4) f (x) = [ Hình 2.47: Đồ thị biểu diễn phép nội suy tuyến tính Lagrange tập hợp điểm cho trước Đồ thị phương trình nội suy điểm cho trước nêu lên hình Hình 2.41 Đường thẳng qua tất điểm, biểu diễn kết cách xác Dễ thấy hàm nội suy Lagrange dao động chung quanh đồ thị giá trị xác Dựa theo khái niệm trình bày trên, phương thức vẽ đường cong dựa việc nội suy đa thức Lagrange thực sau: Đầu tiên, với điểm cho trước, ta tìm đa thức rút gọn từ công thức (2.24) Sau có cơng thức này, ta giá trị x từ điểm đến điểm cuối tập điểm mà ta cần vẽ đa thức Kết thu sau thực phép tập tọa độ (x, y) tương ứng Với tập tọa độ này, ta cần nối tất chúng lại có đường cong Lagrange 56 Edge2D Lớp hộp thoại có chức tương tự Edge3D, đối tượng cho phép nhập thông tin cần thiết để từ thơng tin xây dựng nên cấu trúc đồ thị vẽ đồ thị Lớp hộp thoại cung cấp thơng tin cho đồ thị ngồi việc nhập đồ thị cịn cho phép chỉnh sửa lại thơng tin đồ thị Các thuộc tính hộp thoại gồm private final JPanel contentPanel = new JPanel () ; // mang chua cac Check Box private ArrayList < JCheckBox > m_checkBoxes = new ArrayList < JCheckBox >() ; private Graph2D m_graph ; private boolean okPressed ; private boolean modifyMode = false ; Cách thức hoạt động lớp tương tự đồ thị không gian chiều Cài đặt Applet Đây lớp chương trình, lớp dùng kết hợp thành phần trình bày vào chương trình Lớp kế thừa từ JApplet, có khả nhúng vào web cách dễ dàng Ngoài thuộc tính lớp cịn lưu trữ thông tin đồ thị đối tượng cần thiết Lớp Applet có thuộc tính sau: 10 11 GLCanvas3D canvas3d ; GLCanvas2D canvas2d ; // thong so thi Graph3D graph3d = new Graph3D () ; Graph2D graph2d = new Graph2D () ; // thong tin che boolean mode3d = false ; enum GraphStyle { NORMAL , FREE_STYLE }; Như trình bày trên, lớp Applet để chạy chương trình kết thừa từ lớp JApplet Do đó, ta cần phải định nghĩa lại phương thức sau để chương trình chạy • init(): phương thức để khởi tạo Applet, gọi Applet khởi chạy Trong hàm này, cài đặt thông số cho đồ thị, môi trường vẽ giao diện chương trình sau // thiet lap OpenGL GLProfile profile = GLProfile getDefault () ; // cai dat che do hoa : OpenGL 1.0 , 2.0 , 3.0 O lay lay thong so mac dinh GL Capabi lities caps = new GLC apabil ities ( profile ) ; // chua thong so r e n d e r i n g // them tinh nang khu rang cua caps setNumSamples (16) ; // khu rang cua 16 mau caps s e t S a m p l e B u f f e r s ( true ) ; // bat buffer // khoi tao canvas3d 10 canvas3d = new GLCanvas3D ( caps , this ) ; 11 12 // khoi tao canvas2d 13 canvas2d = new GLCanvas2D ( caps , this ) ; 14 57 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 // gan canvas3d g etCont entPan e () add ( canvas2d ) ; // gioi han so khung hinh / giay bang cach su dung F P S A n i m a t o r animator = new FPSAnimator ( canvas3d , FPS , true ) ; animator start () ; // start the a n i m a t i o n loop setSize (800 , 600) ; // kich thuoc vung ve cho graph2d graph2d setDimension ( getSize () ) ; // gan menu vao chuong trinh i nitCom ponent s () ; Trong lúc khởi tạo, chúng tơi cho chương trình khởi tạo ln thơng tin menu hiển thị thông qua hàm initComponents Hàm có chức sinh menu có chương trình hình sau Hình 2.48: Các menu có chương trình • destroy(): phương thức gọi ứng dụng • start(), stop(): phương thức tự động gọi chương trình chạy chuyển qua chế độ Ngoài phương thức bắt buộc phải định nghĩa lại Trong lớp này, chúng tơi cịn xây dựng phương thức giúp cho việc xử lý kiện tương ứng người dùng chọn vào menu tương ứng menu Một số phương thức kể đến như: • setGraphStyle( ): đặt chế độ đồ thị, có loại đồ thị tự đồ thị thường Chức có đồ thị khơng gian chiều • showInputDlg2D( ), showInputDlg3D( ): gọi hộp thoại cho phép nhập thông tin đồ thị Cho phép nhập số đỉnh đồ thị quan hệ đỉnh • showModifyDlg2D( ), showModifyDlg3D( ): gọi hộp thoại cho phép chỉnh sửa lại thông tin đồ thị, thông tin chỉnh sửa quan hệ cạnh đồ thị 58 Chương Triển vọng ứng dụng đề tài Mặc dù việc thực đề tài dừng lại mức bản, thu kết tích cực sau: • Đã xây dựng tổ chức chương trình • Sử dụng thư viện đồ họa để thực chương trình • Hiện thực phần đề tài, với mục tiêu người dùng xây dựng chỉnh sửa đồ thị theo ý Tuy nhiên, đề tài tồn đọng số khuyết điểm sau: • Do việc tính tốn dựa nhiều vào số sinh ngẫu nhiên, đơi lúc chương trình hiển thị khơng theo ý muốn • Các thuật tốn tính tốn phức tạp, nặng nề Khơng phù hợp với số máy có cấu hình khơng cao • Một số lý thuyết chưa thực đầy đủ Đề tài có triển vọng phát triển tương lai, có điều kiện phát triển thành chương trình lớn thực số trường hợp đặc biệt đề tài, tiếp tục mở rộng phạm vi nghiên cứu, bổ sung hồn thiện số thiếu sót mà chương trình cịn mắc phải 59 Tài liệu tham khảo • Sách, báo: - [1] Complete Graph Drawings up to triangle mutations – Emeric Gioan – December 2004 - [2] Đồ họa máy tính mơ hình hóa hình học – Vera B.Anand – Người dịch: TS Nguyễn Hữu Lộc – Nhà xuất Tổng hợp TP.HCM – 2000 - [3] Đồ họa vi tính (Tập I, II) – Nguyễn Quốc Cường, Hoàng Đức Hải – Nhà xuất Giáo dục – 1999 - [4] OpenGL Programming Guide - Dave Shreiner - The Khronos OpenGL ARB Working Group - Addison-Wesley - 2010 • Internet - [5] Java Binding for the OpenGL API http://www.jogamp.org/jogl - [6] Tutorial on JOGL 2.0 http://www3.ntu.edu.sg/home/ehchua/programming/opengl/JOGL2.0.html - [7] Java SE Application Design With MVC http://www.oracle.com/technetwork/articles/javase/mvc-136693.html - [8]Java Documents http://docs.oracle.com/javase/1.4.2/docs/api/org/w3c/dom/Document.html - [9]Stack Overflow http://stackoverflow.com/questions/tagged/java - [10] Lagrange polynomial http://en.wikipedia.org/wiki/Lagrange_polynomial - [11] Polynomial http://en.wikipedia.org/wiki/Polynomial - [12] Heron’s fomula http://en.wikipedia.org/wiki/Heron’s_formula - [13]Một số diễn đàn http://diendan.congdongcviet.com http://www.javaworld.com/community/ 60

Ngày đăng: 20/10/2022, 06:29

HÌNH ẢNH LIÊN QUAN

Hình 2.2: Ví dụ minh họa về điều kiện của trường hợp D2 - 0964Vẽ đồ thị bằng cấu trúc logic
Hình 2.2 Ví dụ minh họa về điều kiện của trường hợp D2 (Trang 9)
Hình 2.8: Quan hệ thứ tự (e,f,g) với (e,g,f) - 0964Vẽ đồ thị bằng cấu trúc logic
Hình 2.8 Quan hệ thứ tự (e,f,g) với (e,g,f) (Trang 12)
Hình 2.9: Minh họa một cách đơn giản cơ cấu hoạt động của Java Applet. Người sử dụng dùng trình duyệt Web (browser) để xem các trang thông tin, trong đó có nhúng đối tượng Java Applet - 0964Vẽ đồ thị bằng cấu trúc logic
Hình 2.9 Minh họa một cách đơn giản cơ cấu hoạt động của Java Applet. Người sử dụng dùng trình duyệt Web (browser) để xem các trang thông tin, trong đó có nhúng đối tượng Java Applet (Trang 13)
Hình 2.10: Kiến trúc của Eclipse5 - 0964Vẽ đồ thị bằng cấu trúc logic
Hình 2.10 Kiến trúc của Eclipse5 (Trang 14)
Hình 2.11: Lưu đồ hoạt động của chương trình vẽ đồ thị - 0964Vẽ đồ thị bằng cấu trúc logic
Hình 2.11 Lưu đồ hoạt động của chương trình vẽ đồ thị (Trang 16)
Hình 2.12: Sơ đồ các lớp chính trong chương trình - 0964Vẽ đồ thị bằng cấu trúc logic
Hình 2.12 Sơ đồ các lớp chính trong chương trình (Trang 17)
Hình 2.13: Sơ đồ các lớp hỗ trợ được sử dụng trong chương trình - 0964Vẽ đồ thị bằng cấu trúc logic
Hình 2.13 Sơ đồ các lớp hỗ trợ được sử dụng trong chương trình (Trang 18)
Hình 2.14: Giao diện của chương trình - thanh menu và vùng vẽ - 0964Vẽ đồ thị bằng cấu trúc logic
Hình 2.14 Giao diện của chương trình - thanh menu và vùng vẽ (Trang 19)
Hình 2.15: Chương trình được chạy lần đầu tiên - 0964Vẽ đồ thị bằng cấu trúc logic
Hình 2.15 Chương trình được chạy lần đầu tiên (Trang 20)
Hình 2.20: Đồ thị được vẽ lại, giữ nguyên thông số trước đó - 0964Vẽ đồ thị bằng cấu trúc logic
Hình 2.20 Đồ thị được vẽ lại, giữ nguyên thông số trước đó (Trang 22)
Hình 2.22: Đồ thị được vẽ lại với thông tin mới, cạnh AC đã được loại bỏ so với Hình 2.18 - 0964Vẽ đồ thị bằng cấu trúc logic
Hình 2.22 Đồ thị được vẽ lại với thông tin mới, cạnh AC đã được loại bỏ so với Hình 2.18 (Trang 23)
Hình 2.25: Minh họa đồ thị được vẽ theo dạng thường - 0964Vẽ đồ thị bằng cấu trúc logic
Hình 2.25 Minh họa đồ thị được vẽ theo dạng thường (Trang 24)
Hình 2.24: Minh họa đồ thị được vẽ theo dạng tự do - 0964Vẽ đồ thị bằng cấu trúc logic
Hình 2.24 Minh họa đồ thị được vẽ theo dạng tự do (Trang 24)
Hình 2.26: Menu cho phép chuyển qua lại giữa khơng gian 3 chiều và 2 chiều - 0964Vẽ đồ thị bằng cấu trúc logic
Hình 2.26 Menu cho phép chuyển qua lại giữa khơng gian 3 chiều và 2 chiều (Trang 25)
Hình 2.27: Đồ thị trong không gian 3 chiều - 0964Vẽ đồ thị bằng cấu trúc logic
Hình 2.27 Đồ thị trong không gian 3 chiều (Trang 26)
Hình 2.28: Đồ thị trong khơng gian 3 chiều khi tương tác - 0964Vẽ đồ thị bằng cấu trúc logic
Hình 2.28 Đồ thị trong khơng gian 3 chiều khi tương tác (Trang 27)
Hình 2.29: Minh họa hoạt động của chương trình vẽ đồ thị trong không gian 3 chiều - 0964Vẽ đồ thị bằng cấu trúc logic
Hình 2.29 Minh họa hoạt động của chương trình vẽ đồ thị trong không gian 3 chiều (Trang 28)
GLGraphics3D với mục đích đơn giản hóa việc vẽ hình. Lớp GLGraphics3D sẽ tương tác trực tiếp với các hàm thư viện OpenGLđể thực thi các thao tác vẽ - 0964Vẽ đồ thị bằng cấu trúc logic
raphics3 D với mục đích đơn giản hóa việc vẽ hình. Lớp GLGraphics3D sẽ tương tác trực tiếp với các hàm thư viện OpenGLđể thực thi các thao tác vẽ (Trang 33)
khả năng vẽ hình cho GLGraphics3D, ta cần định nghĩa các phương thức vẽ tương ứng trong lớp - 0964Vẽ đồ thị bằng cấu trúc logic
kh ả năng vẽ hình cho GLGraphics3D, ta cần định nghĩa các phương thức vẽ tương ứng trong lớp (Trang 34)
Hình 2.32: Đồ thị được chương trình hiện thực - 0964Vẽ đồ thị bằng cấu trúc logic
Hình 2.32 Đồ thị được chương trình hiện thực (Trang 39)
Hình 2.37: Đồ thị thường - 0964Vẽ đồ thị bằng cấu trúc logic
Hình 2.37 Đồ thị thường (Trang 43)
Hình 2.40: Đồ thị tự do - 0964Vẽ đồ thị bằng cấu trúc logic
Hình 2.40 Đồ thị tự do (Trang 46)
1 public void drawCir cle (P oint2D cente r, double radiu s) - 0964Vẽ đồ thị bằng cấu trúc logic
1 public void drawCir cle (P oint2D cente r, double radiu s) (Trang 49)
ellipse, một hình to và một hình nhỏ. - 0964Vẽ đồ thị bằng cấu trúc logic
ellipse một hình to và một hình nhỏ (Trang 50)
Hình 2.45: Xóa một nửa bên trên của hình ellipse lớn - 0964Vẽ đồ thị bằng cấu trúc logic
Hình 2.45 Xóa một nửa bên trên của hình ellipse lớn (Trang 51)
12 Đồ họa máy tính và mơ hình hóa hình học – Vera B.Anand – Người dịch: TS Nguyễn Hữu Lộc – Nhà xuất bản Tổng hợp TP.HCM – 2000 - 0964Vẽ đồ thị bằng cấu trúc logic
12 Đồ họa máy tính và mơ hình hóa hình học – Vera B.Anand – Người dịch: TS Nguyễn Hữu Lộc – Nhà xuất bản Tổng hợp TP.HCM – 2000 (Trang 53)
Hình 2.46: Sự dao động đáng kể hình dạng đường cong của phép nội suy Lagrange khi tăng số lượng các điểm sử dụng - 0964Vẽ đồ thị bằng cấu trúc logic
Hình 2.46 Sự dao động đáng kể hình dạng đường cong của phép nội suy Lagrange khi tăng số lượng các điểm sử dụng (Trang 54)
cong, ví dụ như Hình 2.40. Trong hầu hết các ứng dụng kĩ thuật, các dao động này - 0964Vẽ đồ thị bằng cấu trúc logic
cong ví dụ như Hình 2.40. Trong hầu hết các ứng dụng kĩ thuật, các dao động này (Trang 55)
Hình 2.48: Các menu chính có trong chương trình - 0964Vẽ đồ thị bằng cấu trúc logic
Hình 2.48 Các menu chính có trong chương trình (Trang 57)
trình như hình sau - 0964Vẽ đồ thị bằng cấu trúc logic
tr ình như hình sau (Trang 57)

TRÍCH ĐOẠN

TÀI LIỆU CÙNG NGƯỜI DÙNG

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

TÀI LIỆU LIÊN QUAN

w