Tạo hồ hoặc hồ ngẫu nhiên


9

Tôi đã thực hiện các chức năng có thể vẽ bất kỳ hình dạng đa giác nào, tuy nhiên tôi đã không thể tạo ra một hình dạng mịn bắt chước các cạnh tròn của hồ. Tôi đã thử tạo hai vòng tròn và nối các cạnh nhưng không có đủ biến thể hoặc độ mịn cho nó. Có ai có bất kỳ con trỏ hoặc ý tưởng có thể tạo ra một hình dạng như thế này?


Tôi đã nhìn vào những đường cong tuyệt đẹp hơn, dường như tôi có thể tạo ra một cái hồ từ đó. Bất cứ ai có bất kỳ kinh nghiệm với họ trên một mảng 2d?
Manderin87

Câu trả lời:


8

alwynd đã đề cập đến tiếng ồn Perlin. Đây là cách tôi tạo các hình dạng đảo cho trình tạo bản đồ đa giác:

  1. Tạo tiếng ồn perlin.
  2. Đối với mỗi vị trí (x, y)trong bitmap nhiễu, hãy tính khoảng cách từ tâm, được chuẩn hóa để bitmap là 2x2 : (dx, dy) = (2 * x / width - 1, 2 * y / height - 1); d = sqrt(dx*dx + dy*dy).
  3. Vị trí (x, y)là một phần của đảo nếu noise[x, y] > 0.3 + 0.4*d*d. Bước này cố gắng làm cho hình dạng tròn bằng cách cắt bỏ các khu vực xa trung tâm.

Quần đảo là một chút rách rưới hơn hồ, vì vậy tôi không chắc những hình dạng này sẽ theo ý thích của bạn. Tôi đã đưa ra một bản demo của thuật toán trên , với các nút ở phía dưới để điều khiển hai số ma thuật. Có thể có các giá trị khác nhau của các số ma thuật 0,3 và 0,4 tạo ra các hình dạng bạn thích.


2
Công việc của bạn là một nguồn cảm hứng lớn, Amit. + 10k nếu tôi có thể, trong 5 năm hoặc lâu hơn là tự hỏi và thích thú tôi đã thoát khỏi việc đọc blog của bạn.
Kỹ sư

4

Bạn có thể sử dụng thuật toán tiếng ồn Perlin để tạo các hồ cho bạn, nếu bạn đang sử dụng chế độ xem từ trên xuống (hình đa giác, âm thanh giống như bạn), anh chàng đến từ Stanford này đã làm điều đó.

http://www-cs-students.stanford.edu/~amitp/game-programming/polygon-map-generation/


1
"Anh chàng đến từ Stanford" cũng là một người dùng trên trang này, FYI.
Kỹ sư

ai không =) Tôi có thể bắt đầu từ một số tiếng ồn (perlin, fractal), nhưng làm mờ kết quả để có kết quả ít "lởm chởm" hơn. Bài viết tuyệt vời, btw - thích cách anh ấy làm những dòng sông.
Jari Komppa

0

Một cách sẽ là bắt đầu với một đa giác cơ bản, có thể là cách tiếp cận 2 vòng tròn của bạn.

Đầu tiên, bù tất cả các điểm một cách ngẫu nhiên, do đó, trông không giống như một vòng tròn, sau đó cho mỗi cạnh, chia nó thành 2 và bù điểm giữa bằng một số lượng ngẫu nhiên nhỏ. Tiếp tục làm điều này cho đến khi bạn có các chi tiết cần thiết.
Điều này tương tự với những gì được thực hiện khi tạo ra các tia sét.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.