Gerando piscinas ou lagos aleatórios

9

Eu implementei funções que podem desenhar qualquer forma poligonal, mas não consegui gerar uma forma suave que imite as bordas arredondadas de um lago. Tentei gerar dois círculos e unir as bordas, mas não há variação ou suavidade suficiente. Alguém tem alguma dica ou idéia que possa gerar uma forma como essa?

Manderin87
fonte
Eu estive procurando curvas mais bezier, parece que eu posso gerar um lago a partir disso. Alguém tem alguma experiência com eles em uma matriz 2D?
precisa saber é o seguinte

Respostas:

8

sempre mencionou o ruído Perlin. Aqui está como eu gerei as formas da ilha para o gerador de mapa de polígonos:

  1. Gere ruído perlin.
  2. Para cada local (x, y)no bitmap ruído, calcular a distância do centro, normalizada para que o bitmap é 2x2: (dx, dy) = (2 * x / width - 1, 2 * y / height - 1); d = sqrt(dx*dx + dy*dy).
  3. Localização (x, y)faz parte da ilha se noise[x, y] > 0.3 + 0.4*d*d. Esta etapa tenta fazer a forma redonda cortando áreas que estão longe do centro.

As ilhas são um pouco mais irregulares do que os lagos, então não tenho certeza se essas formas serão do seu agrado. Eu montei uma demonstração do algoritmo acima , com botões na parte inferior para controlar os dois números mágicos. Pode haver valores diferentes dos números mágicos 0.3 e 0.4 que produzem as formas que você gosta.

amitp
fonte
2
Seu trabalho é uma grande inspiração, Amit. + 10k, se eu pudesse, pelos cinco anos ou mais de admiração e prazer que tive ao ler seu blog.
Engenheiro de
4

Você pode usar um algoritmo Perlin Noise para gerar os lagos para você, se estiver usando uma vista de cima para baixo (forma de polígono, parece que você é), esse cara de Stanford fez exatamente isso.

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

sempre
fonte
11
"Esse cara de Stanford" também é usuário deste site, FYI.
Engenheiro de
quem não é? =) Posso começar com algum ruído (perlin, fractal), mas desfoque os resultados para obter resultados menos "irregulares". Ótimo artigo, btw - adoro como ele faz os rios.
Jari Komppa
0

Uma maneira seria começar com um polígono básico, talvez seus dois círculos se aproximem.

Primeiro, desloque todos os pontos aleatoriamente, para que não pareça muito com um círculo; depois, para cada aresta, divida-o em 2 e desloque o ponto do meio por uma pequena quantidade aleatória. Continue fazendo isso até ter os detalhes necessários.
Isso é semelhante ao que é feito ao gerar garfos de raios.

George Duckett
fonte