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?
algorithm
procedural-generation
terrain
Manderin87
fonte
fonte
Respostas:
sempre mencionou o ruído Perlin. Aqui está como eu gerei as formas da ilha para o gerador de mapa de polígonos:
(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)
.(x, y)
faz parte da ilha senoise[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.
fonte
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/
fonte
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.
fonte