Điểm trung tâm trong sơ đồ của bạn là một cạnh suy biến của sơ đồ Voronoi. Nếu bạn tạo sơ đồ Voronoi cho đám mây điểm không đều, mọi đỉnh sẽ có độ 3. Một đỉnh có độ 4 (hoặc nhiều hơn) chỉ có thể xảy ra khi hai (hoặc nhiều) đỉnh trùng nhau. Điều đó có nghĩa là có một cạnh có độ dài bằng không giữa chúng. Nhưng cạnh đó vẫn phải có một cạnh tương ứng trong tam giác Delaunay. Vấn đề là tùy ý trong số hai cạnh có thể bạn chọn, bởi vì cạnh có độ dài bằng không có hướng liên quan.
Để hình dung những gì tôi đang nói, hãy xem xét bắt đầu với bốn điểm cách nhau ít thường xuyên hơn (như chúng ta bắt đầu chỉ với các đỉnh cấp 3) và dần dần chuyển chúng sang các vị trí thông thường.
Chúng tôi có thể làm điều này theo hai cách khác nhau, cả hai đều dẫn đến trường hợp thoái hóa trong sơ đồ của bạn. Bạn sẽ thấy rằng bạn kết thúc với hai tam giác Delaunay khác nhau, cả hai đều là giới hạn hợp lệ cho trường hợp suy biến:
Tôi giả sử rằng mã của bạn thiếu trường hợp suy biến này vì lý do này hay lý do khác, nhưng không thực sự thấy cách bạn tính toán tam giác Delaunay từ sơ đồ Voronoi, không thể chỉ ra cho bạn thêm điều này.
Cũng lưu ý rằng việc có độ thoái hóa thậm chí cao hơn (bằng hơn bốn điểm phân bố ở các góc bằng nhau xung quanh một vòng tròn) có thể cần phải chú ý thêm:
Những hình ảnh động này cũng cho thấy (ngay cả trong trường hợp không suy biến), các cạnh Voronoi và Delaunay tương ứng không nhất thiết thực sự giao nhau trong phạm vi hữu hạn của chúng. Điều đó có thể làm cho khó khăn hơn khi thấy rằng 2 (hoặc 3) cạnh tam giác đa giác đều ở cuối thực sự tương ứng với một số cạnh suy biến nằm ở trung tâm. Cũng lưu ý rằng trong tổng số có 5 hình tam giác khác nhau của hình ngũ giác và 14 hình tam giác của hình lục giác (mặc dù tôi không biết liệu tất cả 14 có thể thu được bằng cách làm biến dạng hình tam giác không suy biến).
Chỉnh sửa (bởi OP)
Các sơ đồ Voronoi được tính toán với Boost.polygon cho phép đi qua từng đỉnh Voronoi và mỗi cạnh được liên kết với các đỉnh đó (theo chiều kim đồng hồ hoặc ngược chiều kim đồng hồ). Theo cách này, có thể tạo một hình tam giác cho mỗi cặp cạnh (hai cạnh được kết nối sẽ liên kết với 3 ô).