Luận án Nghiên cứu công nghệ thành lập và ứng dụng bản đồ số địa chính trong điều kiện Việt Nam

Trang 1

Trang 2

Trang 3

Trang 4

Trang 5

Trang 6

Trang 7

Trang 8

Trang 9

Trang 10
Tải về để xem bản đầy đủ
Bạn đang xem 10 trang mẫu của tài liệu "Luận án Nghiên cứu công nghệ thành lập và ứng dụng bản đồ số địa chính trong điều kiện Việt Nam", để tải tài liệu gốc về máy hãy click vào nút Download ở trên.
Tóm tắt nội dung tài liệu: Luận án Nghiên cứu công nghệ thành lập và ứng dụng bản đồ số địa chính trong điều kiện Việt Nam

40 sau, phải trước, phải sau, mặt trái, mặt phải. Các cạnh đều phải xác định hướng. Bảng 2.2. Bảng dữ liệu thửa đất cấu trúc Winged-edge Topology Cạnh Trái trước Trái sau Phải trước Phải sau Thửa trái Thửa phải Thửa Cạnh đầu e1 e7 -e2 -e3 e5 f1 f2 f1 e1 e2 e1 e6 f1 f2 e5 e3 e4 -e1 f2 e4 e5 -e3 f2 e5 -e1 e4 f2 e6 -e2 e7 f1 e7 e6 e1 f1 e2 f1 Hình 2.5. Hai thửa đất kề nhau f2 e3 e4 e5 e7 e6 e1 Phải trước Trái sau Trái trước Phải sau Mặt trái Mặt phải Hình 2.4. Mô hình cấu trúc Winged-edge Topology 41 Đặc điểm của cấu trúc này lưu trữ các cạnh theo hướng do đó việc xác định hướng của cạnh thửa cần đặc biệt quan tâm, từ đó mới xác định được các cạnh trái trước, trái sau, phải trước, phải sau. Ưu điểm: Khối lượng lưu trữ dữ liệu nhỏ do không dư thừa dữ liệu, mỗi cạnh liên kết với bốn cạnh khác. Nhược điểm: Nhìn vào bảng 2.2 cho thấy cách lưu trữ này tương đối phức tạp, phải tạo mô hình Topo trước thì mới xây dựng được cấu trúc dữ liệu. 2.4.2.2. Cấu trúc dữ liệu Doubly Connected Edge List (DCEL) DCEL là cấu trúc dữ liệu danh sách cạnh liên kết kép quản lý bản vẽ và mối quan hệ Topo giữa các thửa đất (Hình 2.6). Mỗi cạnh thửa đất được quản lý bởi hai nửa cạnh có hướng ngược nhau và nửa cạnh này là nửa cạnh đảo của nửa cạnh kia. DCEL quản lý dữ liệu bởi 3 bảng: Bảng danh sách đỉnh; bảng danh sách nửa cạnh và bảng danh sách vùng. - Bảng danh sách đỉnh (Bảng 2.3): Số hiệu đỉnh (số nguyên), tọa độ X (số thực), tọa độ Y (số thực), số hiệu nửa cạnh gắn liền với đỉnh (số nguyên) v1 v2 v3 v4 Hình 2.6. Mô hình cấu trúc danh sách cạnh liên kết kép v6 e1 e'1 e2 e'2 e4 e'4 e5 e'5 e3 e'3 a1 a2 v5 a3 42 Bảng 2.3. Bảng danh sách đỉnh Đỉnh Tọa độ X Tọa độ Y Nửa cạnh gắn liền với đỉnh v1 X1 Y1 e1 v2 X2 Y2 e2 v3 X3 Y3 e'2 v4 X4 Y4 e4 v5 X5 Y5 e3 v6 X6 Y6 e'5 - Bảng danh sách nửa cạnh (Bảng 2.4): Số hiệu nửa cạnh (số nguyên), số hiệu đỉnh gốc (số nguyên), số hiệu nửa cạnh đảo (số nguyên), số hiệu nửa cạnh trước (số nguyên), số hiệu nửa cạnh sau (số nguyên), số hiệu vùng bên phải của nửa cạnh (số nguyên). Ngoài ra còn có thể có cờ báo hiệu đưa nó vào lịch sử để lưu trữ (lô gíc) trong trường hợp cập nhật biến động đất đai. Bảng 2.4. Bảng danh sách nửa cạnh Nửa cạnh Đỉnh gốc Nửa cạnh đảo Vùng phải Nửa cạnh sau Nửa cạnh trước e3 v5 e'3 a2 e2 e4 e'3 v2 e3 a1 e5 e1 ... - Bảng danh sách vùng (Bảng 2.5): Số hiệu vùng (số nguyên), số hiệu nửa cạnh đường bao (số nguyên), danh sách số hiệu nửa cạnh của các vùng đảo tương ứng. 43 Bảng 2.5. Bảng danh sách vùng Vùng Danh sách nửa cạnh vùng bao Danh sách nửa cạnh vùng đảo a1 e1 Nil a2 e2 Nil a3 e'1 e1, e2 ... Ưu điểm: cấu trúc dữ liệu đơn giản, dễ quản lý, có thể tạo ngay được cấu trúc dữ liệu DCEL chính mà chưa cần tạo mô hình Topo, chỉ cần dựa vào mối quan hệ không gian giữa các nửa cạnh. Nhược điểm: mô hình này có nhược điểm là dung lượng lưu trữ lớn.. 2.4.2.3. Cấu trúc dữ liệu Link-Node Cấu trúc dữ liệu Link-Node là cấu trúc liên kết các điểm (Hình 2.7). + Link là chuỗi các đoạn không cắt nhau có cùng những thuộc tính chung và không cắt các link khác trừ điểm đầu và điểm cuối. + Node: là điểm đầu hoặc điểm cuối của Link, một Node có thể là điểm chung của nhiều Link. Các tọa độ của Node được lưu vào một file riêng biệt, nó có thể được tham chiếu tới các Link khác qua điểm đầu và điểm cuối của Link đó. 10 15 27 17 Hình 2.7. Mô hình cấu trúc dữ liệu Link-Node 23 100 101 152 1 2 21 0 16 19 151 153 154 3 44 Bảng 2.6. Bảng lưu trữ Nodes STT bản ghi Số hiệu Node X Y Links 1 15 X15 Y15 100,101,152 2 16 X16 Y16 101, 154, 153 3 19 X19 Y19 151, 153, 154 4 21 X21 Y21 100,152,151 ... Bảng 2.7. Bảng lưu trữ Links STT bản ghi Links Vùng Node Số điểm Tọa độ Trái Phải Từ Đến 1 100 0 1 21 15 2 X23, Y23, X10,Y10 2 101 0 2 15 16 0 3 151 0 2 19 21 0 4 152 2 1 15 21 0 5 153 3 2 16 19 0 6 154 0 3 16 19 2 X27, Y27, X17,Y17 ... Bảng 2.8. Bảng lưu trữ vùng STT bản ghi Số hiệu vùng 1 0 2 1 3 2 ... ... Ưu điểm của cấu trúc dữ liệu Link-Node là dung lượng lưu trữ ít hơn, thay các đoạn liền kề chung của hai vùng bằng các Link, ít dư thừa dữ liệu. Nhược điểm lưu trữ tương đối phức tạp, cần xác định chính xác các Nodes, các Links ngoài ra trên mỗi Link cần quản lý danh sách tọa độ các 45 điểm trong Link, cần phải tạo mô hình Topo trước mới tạo được cấu trúc dữ liệu. Qua nghiên cứu các mô hình dữ liệu cho thấy, các mô hình Topo đều thuận lợi cho việc quản lý mô hình Topo thửa đất, tuy nhiên cấu trúc dữ liệu DCEL quản lý các nửa cạnh độc lập là cấu trúc đơn giản, dễ hiểu, nên dễ xử lý. Chính vì vậy, trong nghiên cứu của luận án, chọn mô hình Topo với cấu trúc dữ liệu DCEL để nghiên cứu. Tuy vậy, làm thế nào để khi biên tập thửa đất phải phát sinh dữ liệu để bảo toàn cấu trúc như trên, khi cập nhật biến động đất đai không làm phá vỡ mối quan hệ Topo của thửa đất. Ngoài ra, quá trình cập nhật bản đồ địa chính với nhiều đơn vị cập nhật khác nhau vào bản đồ tổng thể lưu trữ trong hệ thống quản lý. Vậy cần xử lý như thế nào để không bị xung đột và có thể cập nhật được các dữ liệu đã được biên tập lên toàn hệ thống. Chương sau sẽ nghiên cứu sử dụng cấu trúc dữ liệu DCEL trong công nghệ thành lập và ứng dụng bản đồ số địa chính. 46 CHƯƠNG 3. SỬ DỤNG CẤU TRÚC DỮ LIỆU DCEL TRONG THÀNH LẬP VÀ ỨNG DỤNG BẢN ĐỒ SỐ ĐỊA CHÍNH Thuật toán tạo mô hình Topo đã được nghiên cứu trong [12], [13]. Các thuật toán tạo mô hình Topo đã được ứng dụng trong các mô đun phần mềm như Picklot, Famis, TMV-Map, AcadMap, ArcTopo ... Mô hình Topo DCEL được trình bày chi tiết trong [33], các mô hình Topo khác được mô tả trong các tài liệu [34] và [39]. Để thể hiện mối quan hệ Topo của các thửa đất hiện nay, chuẩn dữ liệu địa chính (Bộ Tài nguyên và Môi trường (2010)-điều 9)[3] đã quy định chuẩn định dạng dữ liệu và siêu dữ liệu theo ngôn ngữ định dạng GML, XML với cơ sở là cấu trúc dữ liệu DCEL. Các phần mềm biên tập bản đồ địa chính ở Việt Nam hiện nay hầu hết chỉ tập trung tạo mô hình Topo mà chưa chú trọng đến việc lưu trữ mối quan hệ Topo của các vùng. Chính vì vậy, mỗi khi có sự biến động về thông tin không gian của vùng cần phải xây dựng lại mô hình Topo. Quá trình này vừa tốn thời gian, vừa mất đi các thông tin thuộc tính của các vùng đã có. Sau khi tạo lại Topo người sử dụng phải gắn thêm các dữ liệu thuộc tính cho các vùng phát sinh và việc này thường khó kiểm soát bởi các vùng biến động có thể ở nhiều nơi trên bản vẽ. Chính vì vậy, người sử dụng thông thường gán lại toàn bộ cơ sở dữ liệu thuộc tính trên bản vẽ khi có bất kỳ một biến động nào về vùng dù chỉ những thay đổi nhỏ. Đây là một trong những công việc tốn thời gian và dễ nhầm lẫn, bỏ sót trong công tác nội nghiệp. Để giải quyết vấn đề này, cần phải xây dựng một hệ thống biên tập chuyên dụng với một mô hình cấu trúc dữ liệu Topo phù hợp đồng thời có các giải pháp để quản lý cơ sở dữ liệu khi có biến động về vùng mà vẫn đảm bảo mối quan hệ Topo giữa các vùng. Với cấu trúc dữ liệu lựa chọn là cấu trúc DCEL một số vấn đề quan trọng trong công tác thành lập và ứng dụng bản đồ 47 số như tạo mô hình Topo, biên tập thửa đất, chồng phủ các vùng cần có những giải pháp, thuật toán cụ thể để thực hiện. Trước hết cần nghiên cứu một số thuật toán cơ sở sẽ áp dụng trong việc sử dụng cấu trúc DCEL thành lập và ứng dụng bản đồ số địa chính. 3.1. Một số thuật toán cơ sở 3.1.1. Sắp xếp và tìm kiếm 3.1.1.1. Sắp xếp nhanh Trong các thuật toán sắp xếp chúng ta cần quan tâm đặc biệt đến những thuật toán có độ phức tạp O(nlogn) như QuickSort (sắp xếp nhanh), HeapSort (sắp xếp vun đống), MergeSort (sắp xếp trộn),... Trong số các thuật toán đã biết, QuickSort là thuật toán có tốc độ trung bình nhanh hơn cả, do đó nếu sử dụng QuickSort trong các bài toán đòi hỏi sắp sếp một số lượng lớn các đối tượng sẽ làm tăng đáng kể hiệu suất của chương trình. So với một số thuật toán sắp xếp khác như sắp xếp vun đống, sắp xếp trộn, ... độ ổn định của thuật toán QuickSort không cao. Vì vậy từ các nghiên cứu lý thuyết của QuickSort, khi sử dụng phải chủ động tránh các tình huống xấu hoặc trong trường hợp cần thiết biến đổi dữ liệu cho thích hợp với thuật toán. QuickSort là thuật toán được A.R. Hoare phát minh vào năm 1960. Các ưu điểm của thuật toán Quick Sort là chỉ sử dụng một ngăn xếp phụ nhỏ, chỉ cần khoảng trung bình O(nlogn) thao tác để sắp n phần tử, và có một vòng lặp "trong" ngắn. QuickSort thuộc loại "chia để trị" (divide and conquer). Nó thực hiện bằng cách phân hoạch một tập tin thành hai phần, sau đó sắp xếp các phần riêng biệt. Giả sử mảng cần sắp xếp là a(n), khi đó thuật toán QuickSort được thực hiện theo trình tự sau: [27] Hàm QuickSort (l, r) i = Phanhoach (l, r) 48 QuickSort (l, i-1); QuickSort (i+1, r) Kết thúc hàm Tham số l và r không giới hạn các tập tin con trong tập tin gốc cần sắp xếp; nếu gọi QuickSort(1,N) sẽ sắp toàn bộ tập tin. Thủ tục "Phanhoach" sẽ tổ chức lại mảng thỏa mãn ba điều kiện sau: - Phần tử a(i) đặt ở vị trí cuối cùng trong mảng với i nào đó. - Tất cả các phần tử trong a(l), ..., a(i-1) nhỏ hơn hay bằng a(i). - Tất cả các phần tử trong a(i+1), ..., a(r) lớn hơn hay bằng a(i). Đầu tiên chọn tùy ý a(r) là phần tử sẽ rơi vào vị trí đặt cuối cùng. Kế tiếp, quét từ trái của mảng cho đến khi gặp một phần tử lớn hơn a(r), và quét từ đầu phải cho đến khi gặp một phần tử nhỏ hơn a(r). Hai phần tử dừng việc quét dĩ nhiên không đúng vị trí trong mảng được phân hoạch cuối cùng nên phải hoán vị chúng (thực ra tốt nhất nên ngừng việc quét đối với những phần tử bằng a(r), dù là có thể đi vào một số hoán vị không cần thiết). Tiếp theo bảo đảm là tất cả các phần tử trên mảng ở bên trái con trỏ phải lớn hơn a(r). Khi các con trỏ giao nhau, quá trình phân hoạch gần như hoàn tất, còn lại là hoán vị a(r) với phần tử trái nhất của tệp tin con bên phải (phần tử do con trỏ trái trỏ đến). Kết thúc sắp xếp bằng cách sắp xếp hai tệp tin ở mỗi phía của thuật toán phân hoạch nhờ dùng vào đệ quy. 3.1.1.2. Tìm kiếm nhị phân Tìm kiếm nhị phân cũng dựa trên nguyên tắc "chia để trị": chia mảng thành hai phần, xác định xem phần nào chứa khóa, kế đến tiếp tục quá trình cho phần chứa khóa. Sở dĩ chúng ta có thể chia đôi và chỉ tiếp tục tìm trên một nửa mảng là nhờ vào giả thiết mảng đã được sắp xếp theo thứ tự khóa. Có thể giả sử mảng được sắp xếp tăng, trường hợp sắp xếp giảm thì tương tự. Để tìm khóa v có trong mảng hay không, trước tiên ta so sánh nó với phần tử 49 ở vị trí giữa của mảng, nếu v nhỏ hơn thì nó chỉ có thể ở trong một nửa đầu tiên của mảng; nếu v lớn hơn thì nó chỉ có thể ở trong một nửa còn lại của mảng. Kế đến áp dụng đệ quy phương pháp này. Bởi vì chỉ gọi đệ quy một lần, chúng ta có thể dùng phương pháp lặp. Giả sử mảng a đã được sắp xếp tăng theo thứ tự khóa, chúng ta có thể cài đặt hàm tìm kiếm nhị phân BinarySearch như sau:[27] Hàm BinarySearch(v) L = 1; R = N ; X = (L + R) / 2 Làm tới khi (v = X) nếu v > X thì L = X nếu v < X thì R = X Lặp Kết thúc hàm 3.1.2. Xác định điểm nằm ở phía nào của đoạn thẳng Đoạn thẳng được xem như một vectơ có chiều từ đầu mút thứ nhất đến đầu mút thứ hai. Khi giải quyết bài toán này, chúng ta cần chú ý đến các trường hợp ba điểm thẳng hàng. Theo cách giải quyết trong [27], hàm ccw có ba giá trị 1, -1 và 0, trong đó 1: điểm xét ở bên trái, -1 :điểm xét ở bên phải. Khi ba điểm thẳng hàng, 1: đầu mút thứ hai nằm giữa, -1: đầu mút thứ nhất nằm giữa, 0: điểm xét nằm trong đoạn thẳng. Hàm này được xây dựng trên cơ sở xét dấu của tích có hướng hai vectơ, vectơ thứ nhất là bản thân đoạn thẳng, vectơ thứ hai nối từ điểm thứ hai đến điểm xét. Gọi hai đầu mút của đoạn thẳng là P1(X1,Y1), P2(X2,Y2); điểm xét là P(X,Y), ta có: Hàm ccw(P1, P2, P) Nếu (X2- X1) (Y2- Y) - (Y2- Y1) (X2- X) > 0 thì ccw = 1 Nếu (X2- X1) (Y2- Y) - (Y2- Y1) (X2- X) < 0 thì ccw = -1 50 Còn nếu (X2- X1) (Y2- Y) - (Y2- Y1) (X2- X) = 0 thì Nếu (X2- X1) (X2- X) < 0 hoặc (Y2- Y1) (Y2- Y) < 0 thì ccw = -1, Ngược lại thì Nếu (X2- X1)2 + (Y2- Y1)2 (X2- X)2 + (Y2- Y)2 thì ccw = 0 Ngược lại thì ccw = 1 Kết thúc hàm 3.1.3. Kiểm tra giao của hai đoạn thẳng Trong mối quan hệ giữa hai đoạn thẳng, trường hợp thường gặp nhất là bài toán xác định giao điểm. Tuy nhiên đôi khi chúng ta chỉ muốn biết chúng có thực sự giao nhau hay không mà không cần xác định điểm giao. Trong trường hợp này, chúng ta chỉ cần kiểm tra điều kiện: hai đầu mút của đoạn thẳng này phải nằm ở hai phía so với đoạn thẳng kia và ngược lại, khi đó hàm ccw của hai đầu mút này sẽ có dấu ngược nhau [27]. Gọi P1, P2 là hai đầu mút của đoạn thẳng thứ nhất; P3, P4 là hai đầu mút của đoạn thẳng thứ hai, điều kiện để hai đoạn thẳng này giao nhau sẽ là: Hàm InterSect(P1, P2, P3, P4) Nếu ccw(P1, P2, P3).ccw(P1, P2, P4) 0 và ccw(P3, P4, P1).ccw(P3, P4, P2) 0 thì InterSect có giao Kết thúc hàm 3.1.4. Kiểm tra điểm nằm trong đa giác Bài toán này nhằm xác định xem một điểm có nằm trong miền một đa giác khép kín hay không. Bài toán Điểm nằm trong đa giác có nhiều ứng dụng trong thực tiễn. Đây là bài toán cần được giải quyết cho hầu hết các phần mềm đồ họa. Bài toán này sẽ được mở rộng để giải quyết các bài toán 51 phức tạp hơn như đoạn nằm trong một đa giác, miền nằm trong một đa giác [27]. Có thể liệt kê một số ứng dụng của các bài toán này: - Phục vụ cho thao tác chọn đối tượng theo vùng - Lọc các điểm ngoài biên trong xây dựng mô hình số độ cao - Phục vụ cho việc xử lý, phân tích các miền Như vậy, đầu vào của bài toán này sẽ là một điểm và một đường đa giác khép kín cho trước, còn đầu ra là câu trả lời "có" nếu điểm nằm trong, hoặc "không" nếu điểm nằm ngoài vùng có biên là đa giác nói trên. Giải pháp để giải quyết bài toán như sau: - Xác định số lượng các giao điểm của một nửa đường thẳng bất kỳ xuất phát từ điểm xét với đa giác nêu trên. - Nếu số này là lẻ thì điểm xét sẽ nằm trong đa giác - Còn nếu là chẵn thì điểm xét nằm ngoài. Thông thường, nên lấy nửa đường thẳng này song song với một trục tọa độ. Tuy nhiên cần phải xét các trường hợp biên: - Nửa đường thẳng đi qua một trong số các đỉnh của đa giác - Một trong số các đoạn của đa giác trùng với một phần của nửa đường thẳng này. Ta có thể thay thế nửa đường thẳng này bằng một đoạn thẳng song song với trục hoành, được gọi là đoạn thẳng kiểm tra với đầu mút thứ nhất là điểm xét, còn đầu mút thứ hai phải nằm ngoài đa giác bằng cách lấy điểm thứ hai có tọa độ X lớn hơn tọa độ X lớn nhất trong số các đỉnh của đa giác. Việc loại bỏ các trường hợp biên được thực hiện bằng cách bỏ qua khi đỉnh đa giác rơi trên đoạn thẳng kiểm tra, tức là không tăng biến đếm giao khi gặp các trường hợp này. 52 Trong trường hợp đa giác lồi, tình hình sẽ đơn giản hơn nếu ta sử dụng tính chất không bao giờ có hơn 2 giao điểm với đoạn thẳng kiểm tra. Thuật toán hàm Điểm nằm trong đa giác Hàm PntInPolygon Tạo đoạn thẳng kiểm tra e Cho i = 1 tới n+1 Nếu (ei,i+1 giao e) thì k = k+1 Tăng tiếp i Nếu k chẵn thì điểm nằm ngoài còn nếu k lẻ thì điểm nằm trong Kết thúc hàm Trong trường hợp khi đa giác là một hình chữ nhật bài toán trên sẽ trở nên đơn giản hơn nữa. Lúc đó điều kiện để điểm nằm trong hình chữ nhật là: maxmin XXX , maxmin YYY ; với Xmin, Ymin, Xmax, Ymax là các giá trị tọa độ cực trị của các đỉnh hình chữ nhật. 3.1.5. Phân hoạch không gian đối tượng Khi tổ chức một CSDL, người ta thường sắp xếp chúng theo một cách nào đó để thuận tiện cho việc tìm kiếm dữ liệu khi cần thiết. Việc này cũng tương tự việc tổ chức sắp xếp các từ trong một cuốn từ điển theo thứ tự ABC để thuận tiện cho việc tra cứu. Một ví dụ khác là việc sắp xếp các cuốn sách trong thư viện theo thứ tự của tên các tác giả hoặc sắp xếp theo chủ đề để người thủ thư có thể dễ dàng tìm thấy cuốn sách theo yêu cầu của người đọc. Việc sắp xếp dữ liệu theo thứ tự như vậy đòi hỏi một số phí tổn về thời gian và nguồn lực ban đầu, tuy nhiên việc tìm kiếm chúng sẽ được thực hiện nhanh chóng hơn nhiều. Đối với các loại dữ liệu khác nhau sẽ tương ứng với cách sắp xếp phù hợp khác nhau. Phân hoạch không gian là thuật ngữ để chỉ việc sắp xếp các đối tượng đồ họa theo đặc điểm vị trí của chúng trong không gian 53 với mục đích tương tự. Thông thường, việc tìm kiếm các đối tượng đồ họa được tìm kiếm theo một vùng phẳng nào đó. Trong các ứng dụng thực tế, vùng tìm kiếm được giới hạn bởi một hình chữ nhật là trường hợp thường gặp nhất[11]. Để thuận tiện cho việc phân hoạch, tạo một mảng Quad(), trong đó mỗi phần tử của mảng này là một cấu trúc có các thuộc tính như sau - RECT - hình chữ nhật của Quad - Id() - mảng các chỉ số các phần tử đồ họa thuộc Quad Hình chữ nhật ban đầu để khởi tạo việc phân chia các đối tượng đồ họa của bản vẽ phải chứa tất cả các phần tử. Có thể lấy hình chữ nhật Extent (Hình chữ nhật bao khít tất cả các đối tượng có trong bản vẽ) để sử dụng cho mục đích này và là Quad khởi điểm ("Quad mẹ") trong mảng, gọi là Quad0. Xuất phát từ Quad0, chia hình chữ nhật RECT thành 4 hình chữ nhật con, sẽ thu được 4 "Quad con" tương ứng. Lần lượt xét từng phần tử đồ họa, kiểm tra xem phần tử đó nằm trong hình chữ nhật của các Quad con vừa tạo không, nếu có chuyển chỉ số của phần tử này trong Quad mẹ sang mảng chỉ số phần tử của Quad con. Các phần tử đồ họa còn lại trong Quad mẹ là các phần tử có giao với các đường phân chia giữa các Quad con. Trong trường hợp các phần tử đồ họa chỉ là các điểm, trong Quad mẹ sẽ không còn phần tử nào. Quá trình phân hoạch tiếp tục được thực hiện đệ quy và điều kiện để dừng quá trình đệ quy là Nmin - số phần tử nhỏ nhất có trong Quad. Một điều kiện khác có thể sử dụng làm tiêu chuẩn để dừng quá trình phân hoạch là Ntg_max - số tầng lớn nhất của cây tứ phân hoặc Nquad_max - số Quad lớn nhất. Trong một phần mềm đồ họa, phân hoạch không gian có thể được sử dụng cho nhiều trường hợp khác nhau như khi thực hiện thao tác thu phóng, trượt bản vẽ, trong phạm vi cửa sổ màn hình chỉ có một số đối tượng được 54 hiển thị. Để tăng tốc độ, cần có biện pháp loại bỏ việc ánh xạ các đối tượng nằm ngoài cửa sổ màn hình. Một trong những biện pháp hiệu quả là phân hoạch các đối tượng trong mặt chiếu ảo dưới dạng cây tứ phân. Khi hiển thị, chỉ cần chú ý đến các phần tử thuộc các vùng Quad có giao với cửa sổ màn hình để vẽ. Cũng như màn hình, việc xuất các đối tượng ra các thiết bị ngoại vi khác như máy in, máy vẽ, có thể tăng tốc độ thực hiện bằng các biện pháp tương tự. Trong nhiều trường hợp, cần phải thực hiện việc chọn, tìm kiếm các đối tượng theo một chỉ tiêu chỉ vị trí nào đó. Khi vùng chọn là một hình chữ nhật, chỉ xét những đối tượng trong những Quad có giao với hình chữ nhật này cũng theo cách tương tự. 3.1.6. Tính diện tích đại số một đa giác Một đa giác có n đỉnh, mối đỉnh có tọa độ (xi, yi). Diện tích đại số của đa giác S được tính theo công thức cơ bản: n 1i 1i1ii yyx2 1S với yn+1 = y1; y0 = yn Diện tích đại số cho giá trị có dấu, nếu tính theo chiều kim đồng hồ sẽ có dấu dương, tính ngược chiều kim đồng hồ có dấu âm. 3.1.7. Xác định góc hợp bởi phương thẳng đứng với đoạn thẳng Một đoạn thẳng AB nối hai điểm A (xA, yA) và B (xB, yB). Góc α hợp bởi phương thẳng đứng từ A tới đoạn thẳng AB theo chiều kim đồng hồ được tính như sau: Đặt x = xB - xA; y = yB - yA; atn(x) là giá trị arctan của x π = 3.14159265358979 là hằng số Nếu y = 0 và x > 0 thì α = π/2 Nếu y = 0 và x < 0 thì α = 3π/2 55 Nếu y > 0 thì
File đính kèm:
luan_an_nghien_cuu_cong_nghe_thanh_lap_va_ung_dung_ban_do_so.pdf