Một số đặc thù khi cài đặt cácthuật toán xây dựng lưới tam giác Delaunay

Một phần của tài liệu Phát triển các mô hình và thuật toán biểu diễn, xử lý, khai thác dữ liệu không gian và ứng dụng giải một số bài toán GIS (Trang 63 - 65)

Delaunay và lưới tam giác Delaunay ràng buộc

Nhận xét rằng trong một số phép tính toán sử dụng trong quá trình cài đặt các thuật toán xây dựng lưới tam giác Delaunay và lưới tam giác Delaunay ràng buộc có thể bị mất độ chính xác khi làm việc với số thực, và điều này dẫn đến chương trình thực hiện bị sai. Nếu không giải quyết tốt vấn đề này thì khả năng ứng dụng vào thực tế bị bỏ ngỏ. Đây chính là câu trả lời tại sao các sản phẩm GIS thương mại chỉ ứng rất hạn chế việc xây dựng lưới tam giác Delaunay vào các công việc mà họ phải kiểm soát được sai số tính toán. Bản thân ứng dụng mô phỏng thuật toán xây dựng lưới tam giác Delaunay ràng buộc theo dòng quét của chính Vid Domiter chạy bị lỗi ngay chỉ với dữ liệu đường Polyline gồm 30 điểm lấy ngẫu nhiên trên mặt phẳng [82] . Do vậy, nếu không giải quyết được vấn đề này thì các thuật toán trên không thể đưa vào ứng dụng thực tế.

Một cách tiếp cận giải quyết là sử dụng các bộ thư viện tính toán với độ chính xác cao. Tuy nhiên, các bộ thư viện làm việc trên số thực này thực tính toán khá chậm và là giảm tốc độ thực thi của các thuật toán mà nó ứng dụng. Để cải thiện tốc độ tính toán có thể đưa về tính toán trên các số nguyên lớn [85] . Cách tiếp cận này làm cho thuật toán chạy nhanh và ổn định hơn nhưng các sai số phát sinh bởi tính toán trên số nguyên có thể làm bùng nổ dữ liệu (đặc biệt khi hiện thực thuật toán xây dựng lưới tam giác Delaunay ràng buộc – phát sinh thêm nhiều điểm giao của các cạnh ràng buộc).

Shewchuk đã xây dựng thư viện tính toán nhanh và chính xác một số phép kiểm tra cơ bản như kiểm tra hướng của đa giác hay xác định một điểm có thuộc đường tròn cho trước hay không. Ông ấy định hướng các tính toán này được thích ứng theo

nghĩa là chỉ làm các việc cần nhất thiết nhằm hướng đến một kết quả chính xác. Các nghiên cứu này đã được Shewchuk trình bày trong công trình [24] .

Cách tiếp cận nêu trên khá phức tạp khi sử dụng cho các ứng dụng thực thi trên nhiều hệ điều hành khác nhau, đặc biệt là trên các hệ thống nhúng. Vì vậy, trong luận án này tác giả đề cập cách giải quyết đơn giản hơn dựa trên khái niệm radius– epsilon (r-epsilon) nhưng vẫn bảo đảm được tính ổn định và tốc độ thực thi thuật toán. Chúng ta lần lượt khảo sát các bài toán sau:

Bài toán 1: Xác định điểm p có nằm trong đường tròn tâm c bán kính radius hay không.

Để kiểm tra điểm p có nằm trong đường tròn c hay không ta có thể sử dụng phép kiểm tra như sau:

distance(center(c), p) < radius(c) – r-epsilon.

Phép kiểm tra này cho phép loại bỏ khả năng “đánh võng” để thỏa điều kiện Delaunay khi điểm p nằm “gần” trên đường tròn.

Bài toán 2: Xác định điểm p có thuộc đoạn thẳng l cho trước hay không. Xem Hình 2.34a.

Điều này tương đương phép kiểm tra đường tròn tâm p bán kính r-epsilon có cắt đoạn thẳng l hay không. Bài toán này rất hay sử dụng trong quá trình cài đặt thuật toán xây dựng lưới tam giác Delaunay ràng buộc.

Bài toán 3: Xác định đoạn thẳng l1 có thuộc đoạn thẳng l2 cho trước hay không. Điều này tương đương phép kiểm tra lần lượt đường tròn có tâm p1 và p2 (đỉnh đầu mút của đoạn l1) với bán kính r-epsilon có cắt đoạn thẳng l2 hay không. Bài toán này cũng rất hay sử dụng trong quá trình cài đặt thuật toán xây dựng lưới tam giác Delaunay ràng buộc. Xem Hình 2.34c.

Bài toán 4: Xác định một điểm p nằm nằm trong tam giác t hay không. Ở đây đòi hỏi xác định:

- Điểm p có trùng với cạnh nào của tam giác t hay không. - Điểm p có thực sự nằm bên trong tam giác t hay không.

Trước tiên, ta xác định điểm p có thực sự nằm trong tam giác t hay không. Điều này ta dựa trên tích hữu hướng các cặp vector tạo bởi hai cạnh kề đỉnh của tam giác. Nếu đồng thời ba giá trị tương ứng này cùng dấu (cùng > 0 trong trường hợp cài đặt của tác giả) thì điểm p nằm hoàn toàn bên trong tam giác t.

t p r-epsilon (b) l p r-epsilon (a) p1 r-epsilon p2 r-epsilon l2 l1 (c)

Hình 2.34. Mộtsố tình huốngsử lý sai sốdựa trên r-epsilon

Sau đó, chúng ta sẽ kiểm tra đường tròn tâm p với bán kính r-epsilon có chứa đỉnh nào của tam giác t hay không. Nếu có, ta trả về đỉnh đó. Nếu không, ta kiểm tra xem đường tròn trên có cắt cạnh nào của tam giác không. Nếu đường tròn đó cắt nhiều hơn một cạnh của tam giác t thì ta tính khoảng cách từ điểm p xuống các cạnh đó rồi trả về cạnh có khoảng cách gần p nhất. Xem Hình 2.34b.

Một phần của tài liệu Phát triển các mô hình và thuật toán biểu diễn, xử lý, khai thác dữ liệu không gian và ứng dụng giải một số bài toán GIS (Trang 63 - 65)

Tải bản đầy đủ (PDF)

(175 trang)