J'ai mis en œuvre des fonctions qui peuvent dessiner n'importe quelle forme polygonale, mais je n'ai pas pu générer une forme lisse qui imite les bords arrondis d'un lac. J'ai essayé de générer deux cercles et de joindre les bords, mais il n'y a pas assez de variation ou de douceur. Quelqu'un a-t-il des pointeurs ou des idées qui pourraient générer une forme comme celle-ci?
algorithm
procedural-generation
terrain
Manderin87
la source
la source
Réponses:
toujours mentionné le bruit de Perlin. Voici comment j'ai généré les formes d'îles pour le générateur de carte de polygones:
(x, y)
dans le bitmap de bruit, calculer la distance du centre, normalisée de sorte que le bitmap est 2x2:(dx, dy) = (2 * x / width - 1, 2 * y / height - 1); d = sqrt(dx*dx + dy*dy)
.(x, y)
fait partie de l'île sinoise[x, y] > 0.3 + 0.4*d*d
. Cette étape tente de arrondir la forme en coupant les zones éloignées du centre.Les îles sont un peu plus en lambeaux que les lacs, donc je ne sais pas si ces formes vous plairont. J'ai mis en place une démo de l'algorithme ci-dessus , avec des boutons en bas pour contrôler les deux nombres magiques. Il peut y avoir différentes valeurs des nombres magiques 0,3 et 0,4 qui produisent les formes que vous aimez.
la source
Vous pouvez utiliser un algorithme Perlin Noise pour générer les lacs pour vous, si vous utilisez une vue de haut en bas (forme de polygone, sonne comme vous l'êtes), ce gars de Stanford l'a fait.
http://www-cs-students.stanford.edu/~amitp/game-programming/polygon-map-generation/
la source
Une façon serait de commencer avec un polygone de base, peut-être votre approche à 2 cercles.
Commencez par décaler tous les points au hasard, donc ne ressemble pas trop à un cercle, puis pour chaque bord, divisez-le en 2 et décalez le point central d'une petite quantité aléatoire. Continuez ainsi jusqu'à ce que vous ayez les détails requis.
Ceci est similaire à ce qui est fait lors de la génération de fourches de foudre.
la source