delaunay triangulation

30
BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI VIỆN CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG Hình học tính toán ĐỀ TÀI 7 Tam giác phân Delaunay (Delaunay Triangulation) Giảng viên hướng dẫn: Huỳnh Thị Thanh Bình Nhóm thực hiện: Nhóm 1 Nguyễn Văn Nghị 20101940 Vũ Văn Hiệp 20101545

Upload: ken-godofwar

Post on 07-Feb-2016

39 views

Category:

Documents


0 download

DESCRIPTION

The report's about delaunay triangulation for vietnamses

TRANSCRIPT

Page 1: Delaunay Triangulation

BỘ GIÁO DỤC VÀ ĐÀO TẠOTRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI

VIỆN CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG

Hình học tính toán

ĐỀ TÀI 7Tam giác phân Delaunay (Delaunay Triangulation)

Page 2: Delaunay Triangulation

Giảng viên hướng dẫn: Huỳnh Thị Thanh Bình

Nhóm thực hiện: Nhóm 1 Nguyễn Văn Nghị 20101940 Vũ Văn Hiệp 20101545

Hà Nội, tháng 4 - 2014

M C L CỤ ỤLời nói đầu..................................................................................................................3Chương 1.....................................................................................................................4Giới thiệu sơ lược về biểu đồ Voronoi........................................................................4

1. Biểu đồ Voronoi..................................................................................................42. Một số tính chất của biểu đồ Voronoi.................................................................4

a. Phức hợp Voronoi....................................................................................................................4

b. Đỉnh Voronoi...........................................................................................................................5

c. Bậc...........................................................................................................................................5

d. Bao lồi.....................................................................................................................................5

e. Kích thước...............................................................................................................................5

3. Định lý quan trọng của biểu đồ Voronoi............................................................5Chương 2.....................................................................................................................6Tam giác phân của một tập điểm trên.........................................................................6mặt phẳng và Tam giác phân Delaunay......................................................................6

1. Tam giác phân của một tập điểm trên mặt phẳng...............................................62. Bài toán mô hình hóa một phần bề mặt Trái Đất................................................93. Tam giác phân Delaunay..................................................................................114. Xây dựng tam giác phân Delaunay...................................................................15

2

Page 3: Delaunay Triangulation

Lời nói đầuTrong toán học cũng như hình học tính toán, tam giác phân Delaunay (Delaunay

Triangulation) là một cấu trúc quan trọng và có nhiều ứng dụng thực tế. Nó được coi là cấu trúc đối ngẫu của biểu đồ Voronoi (Voronoi Diagram) cho nên nó kế thừa tất cả những thuộc tính đáng quan tâm của loại biểu đồ này. Ngoài ra, tam giác phân Delau nay tự nó còn có những thuộc tính đặc biệt khác. Chính vì vậy, trong khi học học phần Hình học tính toán này, chúng em đã quyết định chọn đề tài 7 nghiên cứu về Tam giác phân Delaunay làm đề tài bài tập lớn. Trong báo cáo này, chúng em sẽ áp dụng tam giác phân Delaunay vào một bài toán cụ thể, đó là mô hình hóa một phần bề mặt địa hình Trái Đất.

Nội dung báo cáo gồm 3 phần chính:- Phần 1: Giới thiệu sơ lược về biểu đồ Voronoi.- Phần 2: Giới thiệu tam giác phân của một tập điểm trên mặt phẳng ứng dụng trong

giải bài toán mô hình hóa một phần bề mặt Trái Đất và một trường hợp riêng của nó: Tam giác phân Delaunay.

- Phần 3: Xây dựng tam giác phân Delaunay cho bài toán mô hình hóa một phần bề mặt Trái Đất.

Do thời gian nghiên cứu trình độ hiện tại của nhóm có hạn nên chắc chắn trong quá trình thực hiện đề tài không tránh khỏi những sai lầm, thiếu sót cả về nội dung lẫn hình thức. Trong quá trình nghiên cứu, chúng em đã nhận được sự chỉ bảo, giúp đỡ tận tình của cô Huỳnh Thị Thanh Bình cũng như các bạn sinh viên cùng lớp, để có thể hoàn thành báo cáo này. Chúng em xin chân thành cảm ơn!

3

Page 4: Delaunay Triangulation

Chương 1 Giới thiệu sơ lược về biểu đồ Voronoi

1. Biểu đồ VoronoiBiểu đồ Voronoi là một trong những cấu trúc quan trọng nhất của hình học tính toán,

thường được dùng để mã hóa thông tin lân cận. Cho P≔{p1 , p2 , …, pn } là tập các điểm trên mặt phẳng hay bất kỳ không gian n chiều khác. Ta cũng gọi các điểm này là site. Gọi V ( p ) là ô Voronoi của site pi, là tập các điểm q nằm trên mặt phẳng mà gần pi hơn các site khác.

Ta cũng có thể định nghĩa ô Voronoi dựa trên khái niệm giao của các nửa mặt phẳng. Cho 2 site pi, p j, tập các điểm gần pi hơn p j tạo nên một nửa mặt phẳng mở với đường bao

là đường trung trực của cạnh pi p j. Ký hiệu nửa mặt phẳng này là h¿, p j¿. Dễ thấy một

điểm q nằm trên V ( pi ) nếu và chỉ nếu q nằm trong phần giao nhau của các h¿, p j¿ với i≠ j

. Vì giao của các nửa mặt phẳng là một đa giác lồi nên V ( pi ) cũng là đa giác lồi (ngoại trừ

các điểm pi nằm trên bao lồi của P là không có bao đóng).

Ta định nghĩa biểu đồ Voronoi của tập điểm P là những gì còn lại của mặt phẳng sau

khi đã loại bỏ hết các ô Voronoi (không tính biên của chúng). Ký hiệu làVor(P). Dễ thấy,

biểu đồ Voronoi chứa một tập các đoạn thẳng và các tia.

Hình 1.1 Biểu đồ Voronoi

2. Một số tính chất của biểu đồ Voronoi

a. Phức hợp VoronoiBiểu đồ Voronoi là một phức hợp các ô mà các mặt là các đa giác lồi. Mỗi điểm A trên

cạnh của biểu đồ Voronoi cách đều ít nhất hai láng giềng gần nhất của nó là pi, p j. Tồn tại

một đường tròn tâm A đi qua pi , p jvà không có một site nào khác nằm trong đường tròn này (Hình 1.2a).

4

Page 5: Delaunay Triangulation

Hình 1.2: Các tính chất của biểu đồ Voronoi

b. Đỉnh Voronoi

Đỉnh Voronoi là nơi ba ô Voronoi V ( pi ) ,, V ( p j ), V ( pk ) giao nhau. Đỉnh này cách đều

cả ba site do đó là tâm của đường tròn đi qua 3 site và không chứa thêm site nào khác bên trong nó(Hình 1.2b).

c. BậcTừ 3 điểm trên mặt phẳng ta xác định được một đường tròn. Nếu ta giả thiết về trường

hợp tổng quát rằng không có 4 điểm nào nằm cùng trên một đường tròn thì tất cả các đỉnh Voronoi đều có bậc là ba.

d. Bao lồiMột ô của biểu đồ Voronoi là không khép kín nếu và chỉ nếu site tương ứng nằm trên

bao lồi (khi đó site này là điểm gần nhất so với các điểm ở vô cực) của P. Vì vậy, ta dễ dàng trích xuất được bao lồi trong thời gian tuyến tính.

e. Kích thướcNếu gọi n là số site thì biểu đồ Voronoi là một đồ thị phẳng với đúng n mặt. Theo công

thức Euler thì số đỉnh voronoi gần bằng 2n và số cạnh không ít hơn 3n + 1.

3. Định lý quan trọng của biểu đồ VoronoiĐịnh lý được phát biểu như sau:

Định lý 1.1 Cho P là tập điểm trong mặt phẳng và Vor(P) là biểu đồ Voronoi của P, ta có:

a. Một điểm q là đỉnh của Vor(P) nếu và chỉ nếu đường tròn rỗng lớn nhất của nó C p(q) chứa không ít hơn 3 site trên biên của nó.

b. Đường trung trực d của đoạn pi p j (site pi , p j∈ P) chứa cạnh của Vor(P) nếu

và chỉ nếu có một điểm q ∈ d sao cho C p(q) chỉ đi qua pi, p j và không chứa site nào khác bên trong.

Trên đây là một số tính chất chung nhất của biểu đồ Voronoi. Ở chương sau, ta sẽ nghiên cứu khái niệm tam giác phân của một tập điểm trên mặt phẳng và cấu trúc đối ngẫu của biểu đồ Voronoi là tam giác phân Delaunay.

5

Page 6: Delaunay Triangulation

Chương 2Tam giác phân của một tập điểm trên

mặt phẳng và Tam giác phân Delaunay

1. Tam giác phân của một tập điểm trên mặt phẳngCho P≔{p1 , p2 , …, pn } là tập các điểm trong mặt phẳng. Ta định nghĩa phép chia mặt

phẳng cực đại S là phép chia sao cho không thể thêm vào S một cạnh nào nối hai đỉnh mà không phá vỡ tính phẳng. Nói cách khác, bất cứ cạnh nào không thuộc vào S cắt một trong

số các cạnh đã tồn tại. Một phép tam giác phân của P được định nghĩa là một phép chia

mặt phẳng cực đại với tập đỉnh là P.Với định nghĩa trên, rõ ràng một tam giác phân là tồn tại. Do mọi mặt bị giới hạn đều là

đa giác và mọi đa giác đều có thể thực hiện tam giác phân nên mỗi mặt ngoại trừ mặt không bị giới hạn đều là tam giác. Còn với các mặt không bị giới hạn, không khó để chỉ ra

rằng bất kì đoạn thẳng nào nối hai điểm liên tiếp nhau trên biên của bao lồi của P đều là cạnh của một tam giác phân T nào đó. Điều này ngụ ý rằng hợp của các mặt không giới hạn thường là phần bù của bao lồi. Số tam giác (và số cạnh) trong các phép tam giác phân P là như nhau. Số lượng chính xác phụ thuộc vào số điểm của P nằm trên biên của bao

lồi của P theo định lý sau:

Định lý 2.1 Cho P là một tập n điểm không thẳng hàng trong mặt phẳng. k là số điểm

của P nằm trên biên của bao lồi của P. Khi đó, bất kì phép tam giác phân nào của P cũng

đều có 2n – 2 – k tam giác và 3n – 3 – k cạnh.

Chứng minh: Gọi T là một tam giác phân của P, m là số lượng tam giác của T , n f là số mặt của phép tam giác phân và bằng m+1. Mọi tam giác đều có 3 cạnh và các mặt không

bao có k cạnh. Ngoài ra, mỗi cạnh đều thuộc về 2 mặt. Do đó, tổng số cạnh của T là: ne := (3 m+k )/2. Theo công thức Euler:

n−ne+n f=2

Thay giá trị ne theo n và k, n f theo m vào công thức ta có: m=2 n−2−k và ne=3 n−3−k.

Gọi T là một tam giác phân của P và giả thiết nó có m tam giác. Xét 3m góc của các tam giác của T , sắp xếp chúng theo thứ tự tăng dần. Gọi α 1, α 2 ,… ,α 3 m là dãy các góc kết

quả với giá trị tăng dần, α i≤ α j với i< j. Gọi A (T )≔(α 1 , α 2 , …, α 3 m) là véctơ góc của T .

Gọi T ' là một phép tam giác phân khác của tập điểm P và A (T ' )≔(α ' 1, α ' 2 ,…, α ' 3 m) là

véctơ góc tương ứng. Ta nói rằng véctơ góc của T lớn hơn véctơ góc của T ' nếu A (T ) theo

thứ tự từ điển lớn hơn A (T ' ). Nói cách khác, nếu tồn tại chỉ số i, với 1 ≤ i ≤3m sao cho :α j=α ' j với∀ j<i , vàα i>α 'i

Kí hiệu: A (T )> A (T ' ).

6

Page 7: Delaunay Triangulation

Một tam giác phân T được gọi là tối ưu góc nếu A (T )≥ A (T ' ) với mọi tam giác phân

T ' của P. Dưới đây, ta sẽ tìm hiểu khi nào một tam giác phân là tối ưu góc. Trước tiên, ta

nhắc lại định lý Thales quen thuộc. Gọi góc nhỏ hơn tạo bởi 3 điểm p, q, r là ∠ pqr.

Định lý 2.2 Cho C là một đường tròn, l là đường thẳng cắt C ở 2 điểm a và b. Có 4 điểm p, q, r và s nằm về cùng một nửa mặt phẳng bờ l. Giả sử p và q nằm trên đường tròn C, r nằm bên trong C và s nằm bên ngoài C. Khi đó:

∠arb>∠apb=∠aqb>∠asb

Hình 2.1: Minh họa định lý 2.2

Xét cạnh e=pi p j của tam giác phân T của P. Nếu e không phải cạnh nằm trên bao lồi

của P, nó là cạnh của 2 tam giác pi p j pk và pi p j p l. Nếu 2 tam giác trên tạo thành một tứ

giác lồi, chúng ta có thể tạo ra một tam giác phân mới T ' bằng cách loại bỏ cạnh pi p j khỏi

T và chèn cạnh pk pl vào thay thế. Chúng ta gọi thao tác này là flip cạnh. Điểm khác biệt

duy nhất giữa véctơ góc của T và T ' là sáu góc α 1, α 2 ,… ,α 6 trong A(T ) được thay thế bởi

sáu góc α ' 1 ,α '2 , …, α '6 trong A(T '). Hình bên dưới minh hoạ điều này.

Hình 2.3: Flip một cạnh

Chúng ta gọi cạnh e=pi p j là cạnh không hợp lệ nếu:min1 ≤i ≤6

α i< min1≤ i ≤6

α 'i

Nói cách khác, một cạnh là không hợp lệ nếu chúng ta có thể tăng góc nhỏ nhất một cách cục bộ bằng cách flip cạnh. Nhận xét sau đây rút ra được từ định nghĩa cạnh không hợp lệ.

7

Page 8: Delaunay Triangulation

Nhận xét 2.3 Cho T là một tam giác phân có một cạnh không hợp lệ e. Cho T ' là tam

giác phân thu được từ T bằng cách flip cạnh e. Khi đó, A ¿) > A(T ¿.

Có thể thấy rằng không cần thiết phải tính toán các góc α 1, α 2 ,… ,α 6, α ' 1 ,α '2 , …, α '6 để kiểm tra cạnh đã cho có hợp lệ hay không. Thay vào đó, chúng ta có thể sử dụng tiêu chuẩn đơn giản trong bổ đề bên dưới đây. Sự đúng đắn của bổ đề được chứng minh bằng định lý Thales.

Bổ đề 2.4 Cho cạnh pi p j là cạnh chung của 2 tam giác pi p j pk và pi p j p l. Gọi C là

đường tròn ngoại tiếp tam giác pi p j pk. Cạnh pi p j là không hợp lệ nếu và chỉ nếu điểm pl

nằm ở bên trong đường tròn C. Ngoài ra, nếu các điểm pi , p j , pk và pl tạo ra một tứ giác

lồi và không cùng nằm trên một đường tròn thì chắc chắn có một cạnh pi p j hoặc pk pl là cạnh không hợp lệ.

Chú ý rằng tiêu chuẩn này là đối xứng đối với pk và pl: pl nằm trong đường tròn ngoại

tiếp tam giác pi p j pk nếu và chỉ nếu pk nằm trong đường tròn ngoại tiếp tam giác pi p j p l.

Khi tất cả 4 điểm cùng nằm trên một đường tròn, cả pi p j và pk pl đều hợp lệ. Chú ý rằng 2 tam giác chung nhau 1 cạnh không hợp lệ phải ghép thành một tứ giác lồi. Điều kiện này đảm bảo luôn thực hiện flip được cạnh không hợp lệ.

Chúng ta định nghĩa một tam giác phân hợp lệ là một tam giác phân không chứa bất kì cạnh không hợp lệ nào. Từ nhận xét ở trên, có thể thấy rằng bất kì tam giác phân tối ưu góc nào cũng là hợp lệ. Tìm ra một tam giác phân hợp lệ khá đơn giản nếu chúng ta có một tam giác phân khởi đầu. Chúng ta đơn giản flip các cạnh không hợp lệ cho đến khi tất cả các cạnh đều hợp lệ. Thuật toán tìm tam giác phân hợp lệ được miêu tả như sau:

Algorithm LEGALTRIANGULATION(T )Input. Một tam giác phân T bất kì của tập điểm P.Output. Một tam giác phân hợp lệ của P.

while T chứa cạnh không hợp lệ pi p j

do (* Flip cạnh pi p j*)

Cho pi p j pk và pi p j p l là 2 tam giác có chung cạnh pi p j.

Xoá cạnh pi p jkhỏi T và thêm cạnh pk pl thay thế vào.return T

Thuật toán này có tính dừng vì theo Nhận xét 1.3, véctơ góc của T tăng lên sau mỗi

bước lặp của thuật toán. Bởi vì chỉ có một số hữu hạn các tam giác phân khác nhau của P nên thuật toán tính dừng. Một khi thuật toán kết thúc, kết quả sẽ là một tam giác phân hợp lệ. Mặc dù thuật toán nói trên có tính dừng, tuy nhiên, nó quá chậm để áp dụng trên thực tế. Chúng ta sẽ để thuật toán này qua một bên. Sau cùng, ta sẽ cần đến một thủ tục tương

tự. Nhưng đầu tiên, ta sẽ tìm một cách tiếp cận hoàn toàn khác, hoặc có vẻ như khác biệt.2.

8

Page 9: Delaunay Triangulation

2. Bài toán mô hình hóa một phần bề mặt Trái ĐấtTa mô hình một phần bề mặt Trái Đất bằng địa hình (terrain). Địa hình là một bề mặt 2

chiều trong không gian 3 chiều với một thuộc tính đặc biệt: Mỗi đường thẳng đứng sẽ cắt địa hình tại một điểm nếu như đường thẳng đứng cắt không gian 3 chiều trên thực tế. Nói cách khác, địa hình là đồ thị của hàm

f : A⊂R2→ Rsao cho f ( p) là chiều cao ứng với mọi điểm p trong miền A của địa hình.

Hình 2.4: Khung nhìn phối cảnh của địa hìnhDĩ nhiên, ta không biết hết độ cao của mọi điểm trên Trái Đất mà chỉ có được độ cao

đó nơi ta đo đạc. Nghĩa là, khi nói về địa hình, ta chỉ biết giá trị hàm f của một tập hữu hạn các điểm mẫu P⊂A . Từ độ cao của những điểm mẫu này, bằng cách nào đó ta phải lấy xấp xỉ độ cao của các điểm khác trong miền. Một cách đơn giản là gán cho mọi điểm p∈ A độ cao của điểm mẫu gần nhất. Tuy nhiên, cách này làm cho địa hình bị rời rạc,

trông thiếu tự nhiên. Do đó, ta cần có một phương pháp xấp xỉ tốt hơn.

Hình 2.5: Gióng các điểm mẫu lên độ cao tương ứng

Đầu tiên, ta xác định một phép tam giác phân tập P là một phép chia mặt phẳng thành

các mặt có biên hình tam giác với các đỉnh là các điểm của P (giả thiết các điểm mẫu này đủ để tạo ra các tam giác phủ kín toàn bộ địa hình). Sau đó, ta gióng các điểm mẫu lên độ

9

Page 10: Delaunay Triangulation

cao của chúng, bằng cách này, ta có thể ánh xạ mọi tam giác trong tam giác phân thành tam giác trong không gian 3 chiều (Hình 2.5). Cái ta thu được là một địa hình đa diện, một đồ thị của một hàm liên tục tuyến tính từng khúc. Ta có thể sử dụng địa hình đa diện như là một xấp xỉ của địa hình gốc.

Một câu hỏi cần được đặt ra: Ta sẽ thực hiện phép tam giác phân các điểm mẫu như thế nào? Nhìn chung, có nhiều cách khác nhau. Nhưng cách nào là cách phù hợp nhất với mục đích của chúng ta, xấp xỉ một địa hình? Không có một câu trả lời rõ ràng. Ta không biết địa hình gốc, ta chỉ biết độ cao của các điểm mẫu. Vì không có thêm thông tin gì, và độ cao ở các điểm mẫu là độ cao đúng cho bất kỳ phép tam giác phân nào, tất cả các phép tam giác phân dường như đều tốt như nhau. Tuy nhiên, một số phép tam giác phân nhìn vẫn tự nhiên hơn. Ví dụ như hình 3 dưới đây cho thấy 2 phép tam giác phân của cùng một tập điểm mẫu:

Hình 2.6: Hai cách flip một cạnh khác nhau có thể dẫn đến thay đổi rất lớn

Nhìn vào độ cao của các điểm mẫu thì có thể hình dung ra các điểm này biểu thị một đỉnh núi. Phép tam giác phân (a) biểu thị đúng trực giác này. Tuy nhiên phép tam giác phân b, thay vì nối cạnh giữa 2 điểm có độ cao 980 và 990 nó lại nối cạnh giữa 2 điểm có độ cao 10 và 36 khiến ta có cảm giác có một thung lũng cắt ngang đỉnh núi. Bằng trực giác, ta có thể thấy nó sai. Ta có thể biến trực giác này thành tiêu chuẩn đánh giá phép tam giác phân (a) tốt hơn phép tam giác phân (b) hay không?

Vấn đề của phép tam giác phân (b) đó là độ cao của điểm q được xác định bới 2 điểm

tương đối xa nhau. Điều này xảy ra khi q nằm ở giữa cạnh của một tam giác dài và nhọn. Độ mỏng của tam giác là nguyên nhân của vấn đề. Vì vậy, có vẻ như một phép tam giác phân mà có những góc quá nhỏ là không tốt. Do đó, ta sẽ xếp hạng các phép tam giác phân theo góc nhỏ nhất của các tam giác có trong chúng. Nếu 2 phép tam giác phân có góc nhỏ nhất là bằng nhau thì sẽ xét đến góc nhỏ thứ 2 và lặp lại với các góc nhỏ thứ n khác. Vì chỉ có một số hữu hạn các phép tam giác phân với một tập điểm P cho trước nên với phương pháp này, chúng ta sẽ thu được một tam giác phân tốt nhất với góc nhỏ nhất là lớn nhất trong tất cả. Đây chính là tam giác phân chúng ta cần tìm.

10

Page 11: Delaunay Triangulation

3. Tam giác phân Delaunay

Hình 2.7: Đồ thị đối ngẫu của Vor(P)

Cho P là một tập n điểm (site). Ở chương 1 ta đã nhắc đến biểu đồ Voronoi của P là

một cách chia mặt phẳng thành n vùng, mỗi vùng tương ứng với 1 site của P sao cho vùng

của site p∈P chứa tất cả các điểm trong mặt phẳng gần với site p hơn so với các site khác.

Kí hiệu biểu đồ Voronoi của P là Vor(P). Vùng của site p được gọi là ô Voronoi của p, kí hiệu là V ( p ). Trong phần này, chúng ta sẽ tìm hiểu về đồ thị đối ngẫu của biểu đồ Voronoi.

Đồ thị G này có một nút ở mỗi ô Voronoi, tương ứng với một site, và có một cung giữa hai nút nếu các ô tương ứng có chung một cạnh. Điều này có nghĩa là tương ứng với mỗi cạnh

của Vor(P) là một cung của G . Ở trong hình bên trên, ta có thể thấy có một tương ứng

một – một giữa các cung của G và các cạnh của Vor(P).

Hình 2.8: Đồ thị Delaunay của DG(P)11

Page 12: Delaunay Triangulation

Ở hình này, các cung được chuyển thành các đoạn thẳng. Nút tương ứng với ô Voronoi (p)Ѵ là điểm p, và cung nối các nút thuộc (p)Ѵ và (q)Ѵ là đoạn pq. Chúng ta gọi đồ thị

đối ngẫu này là đồ thị Delaunay của P và kí hiệu là DG(P). (Mặc dù tên nghe như tiếng Pháp, đồ thị Delaunay không liên quan gì với họa sĩ người Pháp. Nó được đặt tên theo tên nhà toán học Nga Бори́�с Ни́кола́�еви́ч Делоне� (chuyển ngữ sang tiếng Anh là Boris Nikolaevich Delone) - người tìm ra nó. Dịch ra tiếng Anh là vậy nhưng, nhưng do cuốn sách của ông xuất bản bằng tiếng Pháp- mà thời điểm đó, ngôn ngữ của khoa học là tiếng Pháp và tiếng Đức, nên tên của ông được chuyển ngữ sang tiếng Pháp). Đồ thị Delaunay của một tập điểm có một số tính chất đặc biệt. Tính chất đặc biệt đầu tiên đó là nó luôn là đồ thị phẳng: Không có 2 cạnh nào của đồ thị cắt nhau.

Định lý 2.5 Đồ thị Delaunay của một tập điểm trên mặt phẳng là một đồ thị phẳng.

Chứng minh. Để chứng minh điều này, chúng ta cần xét đến tính chất của các cạnh trong biểu đồ Voronoi trong Định lý 1.1b theo thuật ngữ của đồ thị Delaunay:

Cạnh pi p j thuộc đồ thị Delaunay DG(P) nếu và chỉ nếu có một đường tròn C ij đi qua pi và p j và không có một site nào khác của P nằm trong nó. (Tâm của một đường tròn như

thế nằm trên cạnh chung của V ( p¿¿ i)¿ và V ( p¿¿ j)¿.)

Hình 2.6: Đường tròn có tâm nằm trên cạnh chung của V ( p¿¿ i)¿ và V ( p¿¿ j)¿

Gọi t ij là tam giác với các đỉnh pi, p j và tâm của C ij. Cạnh nối pi và tâm của C ij trong

tam giác t ij nằm trong V ( p¿¿ i)¿; tương tự, cạnh nối p j và tâm của C ij nằm trong

V ( p¿¿ j)¿. Gọi pk pl là một cạnh khác của DG(P) và định nghĩa đường tròn C kl và tam

giác t kl tương tự như C ij và t ij.

Giả sử, pi p j và pk pl cắt nhau. Vì pkvà pl nằm ngoài C ij nên chúng cũng nằm ngoài t ij.

Tương tự, pi p j phải cắt cạnh đi qua tâm C kl của tam giác t kl. Điều đó chứng tỏ, một trong

hai cạnh chứa tâm đường tròn C ij của tam giác t ij (giả dụ là a) phải cắt pk pl. Tương tự, một

trong hai cạnh chứa tâm đường tròn C kl của tam giác t kl (giả dụ là b) cũng phải cắt pi p j.

Suy ra, hai cạnh a và b phải cắt nhau. Điểm cắt nhau sẽ thuộc về 2 ô Voronoi Ѵ phân biệt. Điều này trái với lập luận các cạnh a, b thuộc về một ô Voronoi duy nhất.

12

Page 13: Delaunay Triangulation

Đồ thị Delaunay của tập điểm P là một trong 2 đồ thị của đồ thị đối ngẫu của biểu đồ

Voronoi. Như đã chỉ ra ở trên, mỗi đỉnh của Vor(P) đều nằm trong một mặt. Các cạnh bao quanh mặt tương ứng với các cạnh của biểu đồ Voronoi vốn gắn liền với đỉnh Voronoi

mà chúng đồng quy tại đó. Cụ thể, nếu một đỉnh v của Vor(P) là đỉnh được tạo bởi các ô Voronoi của các site p1 , p2 , p3 ,…, pk thì khi đó, mặt f của DG(P) nhận p1 , p2 , p3 ,…, pk làm đỉnh. Theo định lý của biểu đồ Voronoi phía trên, trong trường hợp này, các điểm p1 , p2 , p3 ,…, pk nằm trên cùng một đường tròn tâm v. Vì vậy, f không chỉ có k cạnh mà nó còn là một đa giác lồi.

Hình 2.7 Các site p1 , p2 , p3 ,…, pk tạo nên một đa giác lồi

Nếu các điểm của P phân bố một cách ngẫu nhiên thì xác suất để 4 điểm nằm trên cùng một đường tròn là rất nhỏ. Chúng ta nói rằng một tập hợp điểm thuộc vào một trường hợp

tổng quát nếu nó không chứa 4 điểm nằm trên cùng một đường tròn. Nếu P thuộc trường hợp tổng quát, thì tất cả các đỉnh của biểu đồ Voronoi đều có bậc là 3 và do đó, tất cả các

mặt bao đóng của DG(P) đều là tam giác. Điều này lý giải vì sao DG(P) thường được

gọi là tam giác phân Delaunay của P. Để chính xác hơn, chúng ta sẽ gọi là đồ thị Delaunay

của P. Chúng ta định nghĩa một tam giác phân Delaunay là một phép tam giác phân có

được bằng cách thêm các cạnh vào đồ thị Delaunay. Vì tất cả các mặt của DG(P) đều lồi nên để có được một tam giác phân như thế không khó. Có thể thấy, tam giác phân

Delaunay của P là duy nhất khi và chỉ khi DG(P) là một tam giác phân với P thuộc một trường hợp tổng quát.Chúng ta nhắc lại định lý 1.1 về biểu đồ Voronoi theo thuật ngữ của đồ thị Delaunay.

Định lý 2.6 Cho P là một tập điểm trong mặt phẳng.(i) Ba điểm pi , p j , pk∈P là các đỉnh thuộc cùng một mặt của đồ thị Delaunay của P khi và chỉ khi đường tròn ngoại tiếp 3 điểm này không chứa bất kì điểm nào khác của P bên trong.(ii) Hai điểm pi , p j∈ P tạo nên một cạnh của đồ thị Delaunay của P khi và chỉ khi

có một hình tròn C chứa pi , p j ở trên biên của nó và không chứa bất kì điểm nào khác của P ở bên trong.

13

Page 14: Delaunay Triangulation

Định lý 2.6 đặc tả chính xác các đặc trưng của một tam giác phân Delaunay.Định lý 2.7 Cho P là một tập hợp điểm trong mặt phẳng và T là một tam giác phân

của P. Khi đó, T là một tam giác phân Delaunay của P khi và chỉ khi mọi đường tròn

ngoại tiếp của các tam giác thuộc T không chứa điểm nào của P ở bên trong.

Bởi vì chúng ta đã lập luận ở trên rằng một tam giác phân đáp ứng được mục đích nội suy độ cao nếu như véctơ góc của nó là lớn nhất cho nên ở bước tiếp theo, chúng ta sẽ xem xét đến véctơ góc của tam giác phân Delaunay. Đầu tiên, chúng ta đề cập đến phép tam giác phân hợp lệ.

Định lý 2.8 Cho P là một tập hợp điểm trong mặt phẳng. Một tam giác phân T của P là hợp lệ nếu và chỉ nếu T là một tam giác phân Delaunay của P.

Chứng minh: Dễ dàng chứng minh điều kiện cần trực tiếp từ định nghĩa: bất kì tam giác phân Delaunay nào đều hợp lệ.

Để chứng minh điều kiện đủ, một tam giác phân hợp lệ là một tam giác phân Delaunay,

chúng ta sẽ sử dụng lập luận phản chứng. Giả sử, T là một tam giác phân hợp lệ của P nhưng không là tam giác phân Delaunay. Khi đó, theo định lý 2.6, có một tam giác pi p j pk

mà đường tròn ngoại tiếp của nó C ( pi p j pk) chứa ít nhất một điểm pl∈P bên trong nó.

Gọi e là cạnh pi p j của tam giác pi p j p l và tam giác pi p j pk không chứa pl. Với tất cả các

cặp ( p¿¿ i p j pk , pl)¿ trong T , chọn cặp có ∠ pi p l p j là cực đại. Xét tam giác pi p j pm kề với

tam giác pi p j pk ở cạnh e. Vì T là hợp lệ nên e cũng hợp lệ. Theo bổ đề 2.4, pm không

nằm bên trong C ( pi p j pk). Đường tròn ngoại tiếp C ( pi p j pm) của pi p j pm chứa một phần

đường tròn C ( pi p j pk), pmvà pk thuộc vào hai nửa mặt phẳng khác nhau với bờ là e.

Hình 2.8: Đường tròn ngoại tiếp C ( pi p j pm) của pi p j pm chứa một phần đường tròn

C ( pi p j pk), pmvà pk thuộc vào hai nửa mặt phẳng khác nhau với bờ là eSuy ra, pl ∈ C ( pi p j pm). Giả sử p j pm là cạnh của tam giác pi p j pm sao cho p j pm pl

không nằm trong pi p j pm. Khi đó, ∠ p j pl pm > ∠ pi p l p j theo định lý Thales. Điều này mâu

thuẫn với định nghĩa của cặp ( p¿¿ i p j pk , pl)¿.

14

Page 15: Delaunay Triangulation

Bởi vì bất kì tam giác phân tối ưu góc nào đều hợp lệ nên theo Định lý 2.8, bất kì tam

giác phân tối ưu góc nào của P cũng là một tam giác phân Delaunay của P. Khi P là một trường hợp tổng quát, sẽ chỉ có một tam giác phân hợp lệ duy nhất. Tam giác phân đó là tam giác phân duy nhất tối ưu góc và được gọi là tam giác phân Delaunay duy nhất, trùng

với đồ thị Delaunay. Nếu P không là trường hợp tổng quát, bất kì tam giác phân nào của đồ thị Delaunay cũng hợp lệ. Khi đó, không phải tất cả các tam giác phân Delaunay này đều tối ưu góc. Tuy nhiên, véctơ góc của chúng không khác biệt nhau quá nhiều. Ngoài ra, sử dụng định lý Thales có thể chứng minh rằng góc nhỏ nhất trong bất kì tam giác phân nào đều tạo bởi một tập hợp điểm nằm trên cùng một đường tròn. Nghĩa là, góc nhỏ nhất không phụ thuộc vào phép tam giác phân. Điều đó chứng tỏ bất kì tam giác phân nào biến đồ thị Delaunay thành tam giác phân Delaunay sẽ có góc nhỏ nhất là như nhau. Định lý sau đây tổng kết lại các lập luận bên trên.

Định lý 2.9 Cho P là một tập hợp điểm trong mặt phẳng. Bất kì phép tam giác phân tối

ưu góc nào của P đều là một tam giác phân Delaunay của P. Hơn thế nữa, bất kì tam giác

phân Delaunay nào của P đều là tam giác phân có góc nhỏ nhất là cực đại trong các

phép tam giác phân của P.

4. Xây dựng tam giác phân DelaunayChúng ta đã thấy rằng xây dựng được một tam giác phân Delaunay cho tập điểm P sẽ

giúp chúng ta có được một địa hình đa diện cho tập điểm mẫu P vì tam giác phân Delaunay đảm bảo cực đại góc nhỏ nhất. Từ đó, xấp xỉ được địa hình thực tế được chính xác hơn. Vậy làm thế nào để có thể xây dựng được một tam giác phân Delaunay? Ở các

phần trước, ta đã biết từ Vor(P), chúng ta có thể dễ dàng thu được đồ thị thị Delaunay DG(P) và bằng phép tam giác phân các mặt có nhiều hơn 3 điểm, chúng ta có thể thu được một phép tam giác phân Delaunay.

Trong phần này, chúng ta đề cập đến một phương pháp khác: xây dựng tam giác phân Delaunay một cách trực tiếp, sử dụng phương pháp tăng ngẫu nhiên. Phương pháp này dựa trên tư tưởng: xây dựng một tam giác đủ lớn để chứa được hết các điểm sẽ tránh được sự xuất hiện các hình thang không kín.

Hình 2.9: Xây dựng tam giác phân đủ lớn để chứa hết các điểm

15

Page 16: Delaunay Triangulation

Chúng ta sẽ bắt đầu xây dựng một tam giác phân Delaunay bằng việc xây dựng một

tam giác đủ lớn để chứa được hết tập hợp P. Chúng ta thêm vào 2 điểm p−1 và p−2 để cùng

với điểm cao nhất p0 của P tạo ra tam giác chứa tất cả các điểm còn lại của P. Điều này có

nghĩa là chúng ta sẽ tìm tam giác phân Delaunay của P∪{p−1 , p−2} thay vì tìm tam giác

phân Delaunay của P. Sau đó, để có được tam giác phân Delaunay của P ta sẽ bỏ đi 2 đỉnh p−1 , p−2 và các cạnh nối với chúng. Để công việc này diễn ra suôn sẻ, chúng ta sẽ chọn p−1 , p−2 đủ xa với tập hợp P để chúng không thể tác động đến bất kì tam giác nào trong

tam giác phân Delaunay của P. Cụ thể, chúng ta phải đảm bảo rằng chúng không nằm trên

bất kì đường tròn nào xác định bởi 3 điểm thuộc P. Chi tiết cách thực hiện sẽ được bàn sau. Đầu tiên, chúng ta sẽ xem xét thuật toán được sử dụng.

Thuật toán sẽ thực hiện tăng điểm ngẫu nhiên, nên nó sẽ thêm điểm mới một cách ngẫu nhiên và duy trì một tam giác phân Delaunay trong tập điểm đang xét. Xét điểm thêm mới pr: Đầu tiên, chúng ta sẽ tìm tam giác trong phép tam giác phân hiện tại chứa điểm pr. Sau

đó, chúng ta sẽ thêm cạnh nối pr với các đỉnh của tam giác đó. Nếu pr nằm trên một cạnh e

của phép tam giác phân thì chúng ta sẽ thêm cạnh nối pr với hai đỉnh đối diện trong hai tam giác nhận e làm cạnh. Hình dưới đây minh hoạ cho 2 trường hợp nói trên. Lúc này, chúng ta sẽ có được một tam giác phân mới, nhưng không có gì đảm bảo nó là tam giác phân Delaunay. Việc thêm điểm pr có thể tạo ra các cạnh không hợp lệ.

Hình 2.10: Hai trường hợp thêm điểm pr

Để phát hiện ra cạnh không hợp lệ, chúng ta gọi hàm LEGALIZEEDE với mỗi cạnh thêm mới. Hàm này sẽ thay thế cạnh không hợp lệ bằng một cạnh hợp lệ bằng cách flip cạnh. Thuật toán chính để xây dựng tam giác phân Delaunay như sau: (Có một chút mẹo ở

đây đó là chúng ta xét tập hợp P với n + 1 điểm thay vì n điểm)

Algorithm DELAUNAYTRIANGULATION(P)Input. Tập hợp P với n + 1 điểm trong mặt phẳng.

Output. Một tam giác phân Delaunay của P.

1. Gọi p0 là điểm cao nhất trong tập P (điểm nằm bên phải nhất trong số những điểm có toạ độ y lớn nhất).

16

Page 17: Delaunay Triangulation

2. Gọi p−1 , p−2 là 2 điểm trong R2 đủ xa để các điểm trong P nằm trong tam giác p0 p−1 p−2.

3. Khởi tạo T là tam giác phân chứa tam giác duy nhất p0 p−1 p−2.

4. Tạo một hoán vị ngẫu nhiên p1 , p2 , …, pn của tập P ¿{po }.5. for r ←1 to n6. do (* chèn pr vào T : *)

7. Tìm một tam giác pi p j pk∈T chứa điểm pr.8. if pr nằm bên trong tam giác pi p j pk

9. then Thêm cạnh nối pr với pi , p j , pk, nhờ đó, tam giác pi p j pk được tách thành 3 tam giác

10. LEGALIZEEDGE( pr, pi p j, T )

11. LEGALIZEEDGE( pr, p j pk, T )

12. LEGALIZEEDGE( pr, pk p i, T )

13. else (*pr nằm trên một cạnh của pi p j pk, giả sử đó là cạnh pi p j*)14. Thêm cạnh pr pk và pr pl với pl là đỉnh còn lại trong tam giác có chung

cạnh pi p j. Hai tam giác ban đầu sẽ được tách thành 4 tam giác15. LEGALIZEEDGE( pr, pi p l, T )

16. LEGALIZEEDGE( pr, pl p j, T )

17. LEGALIZEEDGE( pr, p j pk, T )

18. LEGALIZEEDGE( pr, pk pi, T )

19. Loại đỉnh p−1 , p−2 và tất cả các cạnh nối với chúng khỏi T .20. return T

Chúng ta sẽ nói chi tiết hơn về hàm LEGALIZEEDGE biến đổi tam giác phân thông thường thành tam giác phân Delaunay. Ở Định lý 2.8 đã nói rằng một tam giác phân thông thường là tam giác phân Delaunay nếu tất cả các cạnh của nó là hợp lệ. Trên tinh thần của thuật toán LEGALTRIANGULATION, chúng ta sẽ flip các cạnh không hợp lệ cho đến khi không còn cạnh nào là không hợp lệ nữa. Vấn đề đặt ra đó là các cạnh có thể là không hợp lệ vì việc chèn thêm đỉnh pr. Chú ý rằng cạnh pi p j đã là hợp lệ có thể trở nên không hợp lệ nếu như một trong số 2 tam giác nhận nó làm cạnh bị thay đổi. Bởi vậy, cạnh của các tam giác bị thay đổi mới cần phải kiểm tra lại. Việc kiểm tra cạnh này được thực hiện bởi hàm LEGALIZEEDGE. Nếu LEGALIZEEDGE flip một cạnh, điều đó có thể dẫn đến một cạnh khác là không hợp lệ. Bởi vậy, LEGALIZEEDGE phải thực hiện đệ quy đối với các cạnh có khả năng là không hợp lệ.

LEGALIZEEDGE( pr, pi p j, T )

(*pr là điểm được thêm vào, pi p j là cạnh của T có thể cần được flip *)

if pi p j là không hợp lệ

then Cho pi p j pk là tam giác có chung cạnh với tam giác pr pi p j

(* flip pi p j: *) Thay thế cạnh pi p j bằng pr pk

LEGALIZEEDGE( pr, pi pk, T )

LEGALIZEEDGE( pr, pk p j, T )

17

Page 18: Delaunay Triangulation

Việc kiểm tra một cạnh là hợp lệ hay không có thể được thực hiện bằng cách áp dụng Bổ đề 2.4. Phức tạp ở đây là sự xuất hiện các điểm đặc biệt p−1 , p−2. Chúng ta sẽ đề cập đến điều đó sau. Đầu tiên, chúng ta sẽ chứng minh rằng thuật toán là đúng đắn.

Để đảm bảo tính đúng đắn của thuật toán, chúng ta sẽ chứng minh rằng không còn một cạnh nào là không hợp lệ sau khi tất cả các lời gọi LEGALIZEEDGE đều được thực hiện xong. Từ hàm LEGALIZEEDGE, có thể rõ ràng thấy rằng mọi cạnh mới được tạo ra từ việc thêm mới pr đều nhận pr là một trong hai đầu mút.

Hình 2.11: Tất cả các cạnh được tạo liên thuộc với pr

Hình 2.11 minh hoạ điều này: Các tam giác bị huỷ và các tam giác mới có màu xám. Nhận xét quan trọng (sẽ được chứng minh bên dưới) là mọi cạnh mới đều hợp lệ. Vì vậy, chúng ta không cần thiết kiểm tra chúng. Cùng với nhận xét bên trên rằng một cạnh chỉ có thể không hợp lệ nếu một trong hai tam giác nhận nó làm cạnh bị thay đổi. Điều này đảm bảo thuật toán sẽ kiểm tra bất kì cạnh nào có thể trở thành không hợp lệ. Do đó, thuật toán là đúng đắn. Chú ý rằng, cũng như thuật toán LEGALTRIANGULATION, LEGALIZEEDGE không rơi vào vòng lặp vô hạn vì mỗi hành động flip cạnh làm véctơ của tam giác phân lớn lên.

Bổ đề 9.10 Mỗi cạnh mới được tạo ra trong DELAUNAYTRINGULATION hay trong LEGALIZEEDGE trong quá trình thêm đỉnh mới pr là một cạnh của đồ thị Delaunay của {p−2 , p−1 , p0 ,… , pr }.

18

Page 19: Delaunay Triangulation

Hình 2.12: Co nhỏ C ta được C’ đi qua pi , pr nằm trong C

Chứng minh: Xét các cạnh đầu tiên được tạo pr pi, pr p j, pr pk (có thể là pr pl) từ việc

tách tam giác pi p j pk (có thể là pi p j p l). Vì pi p j pk là một tam giác trong phép tam giác

phân Delaunay trước khi thêm đỉnh pr nên đường tròn ngoại tiếp C của pi p j pk không chứa

điểm pt nào (t <r ) bên trong nó. Bằng việc co nhỏ lại C chúng ta có thể tìm ra một đường

tròn C’ đi qua pi , pr nằm trong C. Vì C '∈C nên C’ không chứa một điểm pt nào trong

nó. Điều này cho thấy pr pi là một cạnh của đồ thị Delaunay sau khi thêm vào điểm pr.

Chứng minh tương tự với hai cạnh pr pi và pr pk cũng suy ra chúng là cạnh của đồ thị

Delaunay mới (và với cả pr pi nếu cạnh này tồn tại).

Xét trường hợp xảy ra flip cạnh bởi thuật toán LEGALIZEEDGE. Thí dụ, phép flip cạnh thay thế cạnh pi p j của tam giác pi p j p l bằng cạnh pr pl. Vì pi p j p l là một tam giác

Delaunay trước khi thêm đỉnh pr và bởi vì đường tròn ngoại tiếp C của nó có chứa pr –

nếu không, pi p j không phải không hợp lệ. Chúng ta có thể co đường tròn ngoại tiếp để có

được một đường tròn rỗng C’ chỉ chứa pr và pl trên biên của nó. Do đó, pr pi là một cạnh

của đồ thị Delaunay sau hành động thêm pr.Chúng ta đã chứng minh tính đúng đắn của thuật toán. Phần còn lại là trình bày cách

thức thực hiện hai bước quan trọng của thuật toán: làm thế nào để tìm ra tam giác chứa điểm pr trong DELAUNAYTRIANGULATION và làm thế nào để chọn được hai điểm p−1 và p−2 hợp lý. Chúng ta bắt đầu với vấn đề đầu tiên trước.

Để tìm ra tam giác chứa điểm pr, chúng ta sử dụng một phương pháp sau: trong khi xây dựng tam giác phân Delaunay, chúng ta cũng xây dựng một đồ thị có hướng không chu

trình D lưu vị trí điểm. Lá của D tương ứng với một tam giác của phép tam giác phân T

hiện tại. Các nút trong của D tương ứng với các tam giác thuộc về các tam giác phân ở các

bước trước đó đã bị huỷ bỏ. Sau khi khai báo T chúng ta sẽ khai báo D là một đồ thị có hướng không có chu trình (DAG) với một nút duy nhất tương ứng với tam giác p0 p−1 p−2.

Giả sử rằng ở một điểm nào đó chúng ta chia tam giác pi p j pk của tam giác phân hiện tại

thành hai (ba) tam giác mới. Tương ứng, ở D sẽ thêm hai (ba) lá mới và lá tương ứng với pi p j pk sẽ trở thành một nút trong với con trỏ trỏ đến hai (ba) lá này. Tương tự, khi chúng

ta thay thế hai tam giác pk p i p j và pi p j p l bằng hai tam giác pk p i p j và pk p l p j bằng một

19

Page 20: Delaunay Triangulation

phép flip cạnh, chúng ta tạo ra các lá cho hai tam giác mới và hai nút pk p i p j và pi p j p l có

con trỏ trỏ đến 2 lá mới này. Hình dưới đây minh hoạ cho sự thay đổi trong D vì thêm vào một điểm mới. Có thể thấy rằng khi chúng ta tạo ra lá cho một nút trong, tối đa có thể có ba con trỏ mới.

Sử dụng D chúng ta có thể xác định được vị trí điểm pr sắp thêm vào tam giác phân hiện tại. Việc đó có thể thực hiện được theo cách sau: Đầu tiên, chúng ta bắt đầu ở gốc của D, tương ứng với tam giác khởi tạo p0 p−1 p−2. Chúng ta sẽ kiếm tra ba con của gốc để xét

xem pr nằm trong tam giác nào và tiếp tục với các con tương ứng bên dưới đó. Thực hiện

đệ quy như vậy đến khi gặp một lá của D, chúng ta kết luận được lá đó tương ứng với tam giác trong tam giác phân hiện tại chứa pr. Vì mỗi nút có tối đa ba con nên hành động duyệt này có chi phí thời gian tuyến tính, phụ thuộc vào số nút trên đường đi tìm kiếm hay nói cách khác, phụ thuộc vào số tam giác được lưu trữ bởi D mà chứa pr.

20

Page 21: Delaunay Triangulation

Hình 2.13: Hiệu quả của việc chèn điểm pr vào tam giác ∆1 trên cấu trúc dữ liệu D

(phần của D không thay đổi bị bỏ qua trong hình)

21

Page 22: Delaunay Triangulation

Chỉ còn một điều băn khoăn nữa đó là làm thế nào để chọn p−1, p−2 và làm thế nào để

thực hiện kiểm tra một cạnh có là hợp lệ hay không. Nói cách khác, chúng ta phải chọn p−1

và p−2 đủ xa bởi vì chúng ta không muốn hai điểm đặc biệt này ảnh hưởng đến tam giác

phân Delaunay của P. Nhưng ngược lại, chúng ta cũng không muốn phải làm việc với một miền toạ độ quá lớn so với thực tế. Vì vậy, chúng ta sẽ xem hai điểm này là tượng trưng: thực tế, sẽ không thực sự gán toạ độ cho chúng mà thay vào đó thay đổi việc kiểm tra tuỳ thuộc vào vị trí điểm và cạnh không hợp lệ để đảm bảo chúng vẫn đúng như là chúng ta đã chọn hai điểm đủ xa so với yêu cầu.

Ở dưới đây, chúng ta nói rằng điểm p=(x p , y p) cao hơn điểm q=(xq , yq) nếu y p> yq

hoặc y p= yq và xq>x p và sử dụng cách so sánh này để sắp xếp các điểm trong P.

Cho l−1 là một đường nằm ngang nằm bên dưới tất cả các điểm thuộc P và l−2 là đường

nằm ngang nằm trên tất cả các điểm đó. Theo quy tắc nói trên, chúng ta chọn p−1 nằm trên

đường l−1 đủ xa về phía bên phải sao cho l−1 nằm bên ngoài tất cả các đường tròn đi qua 3

điểm không thẳng hàng của P. Do đó, cách sắp xếp các điểm trong P theo chiều kim đồng hồ cộng với p−1 tương tự với cách sắp xếp chúng với nhau. Tiếp theo, chúng ta cũng chọn p−2 nằm trên đường l−2 đủ xa về bên trái sao cho p−2 nằm ngoài mọi đường tròn tạo bởi 3

điểm không thẳng thẳng của tập P∪{p−1 }. Do đó, cách sắp xếp các điểm trong P∪{p−1 } theo chiều ngược kim đồng hồ cộng với p−2 cũng tương tự với cách sắp xếp chúng với nhau.

Tam giác phân Delaunay của P∪{p−1 , p−2} chứa tam giác phân Delaunay của P, các

cạnh nối p−1 với mọi điểm trên bao lồi P về bên phải, các cạnh nối p−2 với mọi điểm trên

bao lồi P về bên trái và cạnh p−1 p−2. Điểm thấp nhất của P và điểm cao nhất p0 của P đều

nối với p−1 và p−2.

Trong bước định vị điểm, chúng ta cần xác định rõ vị trí của điểm p j đối với đường

thẳng nối pi với pk. Theo cách lựa chọn p−1 và p−2, các điều kiện sau là tương đương nhau:

p j nằm về bên trái đường thẳng nối từ pi đến p−1;

p j nằm về bên trái đường thẳng nối từ p−2 đến pi;

p j theo thứ tự từ điển lớn hơn pi.

Chúng ta vẫn còn phải chỉ rõ cách thức xử lý p−1 và p−2 trong bước kiểm tra sự hợp lệ

của một cạnh. Gọi pi p j là cạnh sẽ được kiểm tra và pk và pl là hai đỉnh khác nhau của hai

tam giác nhận pi p j là cạnh (nếu chúng tồn tại). Có 3 khả năng xảy ra:

Nếu pi p j là một cạnh của tam giác p0 p−1 p−2 thì cạnh này luôn luôn hợp lệ. Nếu các chỉ số i, j, k, l đều không âm thì đây là trường hợp thông thường: Không có

điểm nào trong bốn điểm đang xét thuộc dạng điểm tượng trưng. Do đó, pi p j

không hợp lệ khi và chỉ khi pl nằm bên trong đường tròn đi qua pi, p j và pk.

Tất cả các trường hợp khác: Trong trường hợp này pi p j là hợp lệ nếu và chỉ nếu min(k,l) < min(i, j).Chỉ có khả năng sau cùng là cần chứng minh. Vì trường hợp pi p j là p−1 p−2 đã được xử

lý trong khả năng đầu tiên nên tối đa chỉ có một trong hai chỉ số i và j có khả năng là số âm. Mặt khác, hoặc là pk hoặc là pl là điểm pr mà chúng ta vừa thêm vào và do đó, tối đa có một trong hai chỉ số k và l là số âm.

22

Page 23: Delaunay Triangulation

Nếu chỉ có một trong bốn chỉ số là âm, khi đó, điểm có chỉ số âm nằm bên ngoài đường tròn đi qua ba điểm còn lại và phương pháp trên là đúng đắn.

Nếu không, cả min(i, j) và min(k, l) đều là số âm và vì p−2 nằm bên ngoài bất kì đường

tròn nào đi qua ba điểm thuộc P∪{p−1 } nên phương pháp trên cũng đúng đắn.

23