Tôi đang cố gắng tạo một bản đồ sao hai chiều khá lớn hiển thị các phe / bang khác nhau, mỗi phe sở hữu một hoặc nhiều hệ thống sao. Tôi muốn tự động tạo đường viền / khu vực cho các phe phái.
Ý tưởng là về cơ bản đi từ một cái gì đó như thế này (các chấm đại diện cho các hệ sao trên mặt phẳng 2d, màu sắc là các liên kết phe)
đến đây
Tạo các bản đồ như thế này có vẻ như là một yêu cầu khá phổ biến, vì vậy câu hỏi thực tế của tôi là: Có thuật toán tiêu chuẩn để tạo các khu vực trạng thái như được hiển thị không? Nếu vậy, bạn có thể chỉ cho họ? Nếu không, bạn có thể nghĩ ra một thuật toán tốt (ý tưởng cơ bản hoặc mã giả đều ổn)?
Hiệu suất của thuật toán không phải là mối quan tâm chính đối với tôi, vì vậy tôi muốn có một bản đồ "đẹp hơn" so với bản đồ tạo nhanh hơn. Câu hỏi tương tự này đưa ra một cách tiếp cận có thể áp dụng cho vấn đề của tôi, mặc dù với một số "sự hoàn thiện" cần thiết: Cách tạo bản đồ từ biểu đồ
Hãy để tôi giải thích ý của tôi khi tôi nói xinh hơn: Ở cuối câu hỏi được liên kết, người hỏi trình bày kết quả cuối cùng của cô ấy sau khi thực hiện câu trả lời được chấp nhận. Vấn đề đầu tiên của tôi ở đây: Các khu vực cho các nút # 6, # 9 và # 12 rất nhỏ và có hình dạng kỳ lạ. Ngoài ra, thay vì các cạnh sắc nét, tôi sẽ thích một cái nhìn mượt mà hơn, cong hơn.
Ý tưởng của riêng tôi cho đến nay, bao gồm cả những hạn chế / câu hỏi tương ứng mà tôi thấy với chúng:
- Tạo một đa giác "lồi thân" cho mỗi phe, sau đó mở rộng ra bên ngoài một chút. Vấn đề: Không có tính năng lõm. Ngoài ra, làm thế nào để bạn đối phó với chồng chéo?
- Tạo biểu đồ voronoi cho các dấu chấm, sau đó sử dụng các cạnh đa giác voronoi giữa các hệ thống lân cận của các phe phái khác nhau làm đường viền. Vấn đề: Đa giác lớn ở các cạnh bản đồ - làm cách nào để xác định và sửa chúng?
- Tạo một đa giác có kích thước cố định cho mỗi dấu chấm, liên kết tất cả các đa giác cho một phe duy nhất (dẫn đến một "đa giác phe" lớn, có khả năng phức tạp). Sau đó làm một cái gì đó để hòa giải các khu vực chồng chéo giữa hai phe. Vấn đề: Làm thế nào tôi có thể làm điều này chính xác? Không chính xác là một quá trình tầm thường. Điều gì xảy ra nếu có sự chồng chéo giữa hơn hai phe?
Sự giúp đỡ của bạn được đánh giá cao.
Phụ lục: Sau khi suy nghĩ về hai câu trả lời đầu tiên và cách tiếp cận tương ứng của chúng để giải quyết vấn đề, tôi nhận ra rằng các yêu cầu của tôi ở trên là không đầy đủ.
Tôi phải nói thêm rằng bản đồ có thể có các khu vực dân cư thưa thớt, nghĩa là có thể có một ngôi sao hoặc cụm sao bị cô lập. Tôi muốn hiển thị từng cụm trong đó với vùng màu tiếp giáp của riêng chúng. Một cái gì đó như thế này:
Tôi nhận ra rằng điều này có thể cần một bước đầu tiên xác định các cụm và sau đó chạy thuật toán thực tế cho từng cụm.