Tôi đang triển khai thuật toán quét của Fortune để tính toán sơ đồ Voronoi. Tài liệu tham khảo chính của tôi là "Hình học tính toán: Thuật toán và ứng dụng" của de Berg và cộng sự, và trong khi độ che phủ của chủ đề là rất rõ ràng, chúng vượt qua một số chi tiết nhỏ nhưng quan trọng mà tôi gặp khó khăn khi tự làm việc. Tôi đã tìm kiếm trên web để được trợ giúp, nhưng các trang web khác cung cấp một cái nhìn tổng quan thậm chí còn cao hơn sách giáo khoa, hoặc cung cấp mã giả tương tự được cung cấp bởi cuốn sách.Hội tụ điểm ngắt trong thuật toán của Fortune
Tôi cần một cách để xác định xem một cặp điểm ngắt được xác định bởi ba vòng cung trên đường bờ biển hội tụ hay phân kỳ, để phát hiện sự kiện vòng tròn sắp tới. Dường như để đưa ra quyết định, tôi sẽ cần kiến thức về hình dạng của các cạnh tế bào Voronoi mà các điểm ngắt xuất hiện khi thuật toán của tạp chí Fortune tiến triển. Ví dụ, nếu tôi có thể tìm thấy độ dốc của cạnh được bắt đầu bởi điểm ngắt, tôi có thể tính toán nơi hai đường được hình thành bởi các điểm ngắt và các sườn tương ứng giao nhau và quyết định liệu chúng có hội tụ dựa trên kết quả đó hay không. Tuy nhiên, tôi không có ý tưởng làm thế nào để có được thông tin về các sườn núi, chỉ có vị trí hiện tại của các điểm ngắt.
Thông tin duy nhất tôi phải làm việc là vị trí x, y của ba vị trí và toạ độ y hiện tại của đường quét (tôi đang sử dụng đường quét ngang).
Thực ra, tôi có một ý tưởng để xác định hội tụ. Với hai vị trí, điểm ngắt giữa hai phần của đường bờ biển mà chúng xác định chỉ được điều chỉnh bởi vị trí hiện tại của đường quét. Tôi nghĩ về việc ghi lại vị trí của hai điểm ngắt, tạm thời tiến lên đường quét một lượng nhỏ và ghi lại vị trí mới của họ. Bởi vì các cạnh trong biểu đồ Voronoi bình thường không cong, nếu khoảng cách giữa cặp điểm ngắt mới nhỏ hơn khoảng cách giữa cặp cũ, thì các điểm ngắt hội tụ; nếu không, chúng sẽ phân kỳ. Nhưng điều này có vẻ cả nguy hiểm (tôi không có ý tưởng nếu nó luôn luôn hoạt động) và xấu xí. Chắc chắn phải có một cách tốt hơn.
Bất kỳ ý tưởng nào sẽ được đánh giá cao và mã giả (trong cú pháp C# giống nếu có thể) đặc biệt là như vậy. Ngoài ra, tôi biết rằng có các thư viện hình học tính toán mà tôi có thể sử dụng để lấy sơ đồ Voronoi, nhưng đây là một bài tập học tập cá nhân, vì vậy tôi muốn tự mình triển khai tất cả các phần của thuật toán.
Cậu giải quyết triangulation delauny? – Bytemain
Không, đây là lần thử đầu tiên của tôi ở hình học tính toán. Tôi biết họ là hai người của nhau, nhưng tôi muốn thực hiện các thuật toán đơn giản của Fortune đầu tiên. – Drake