2011-10-16 7 views
8

Je cherche un algorithme qui peut générer quelque chose comme ce qui est dans cette image:Comment créer un chemin aléatoire?

enter image description here

J'ai lu sur les algorithmes de marche ivres, mais ils ne semblent pas correspondre tout à fait ce que je dois. Je ne suis pas sûr si je peux réaliser ce que je cherche avec un algorithme fortement modifié de marche d'ivresse ou si je devrais chercher un autre algorithme pour jouer avec.

+0

Le chemin de cette image ne semble pas se croiser. Est-ce important pour votre application? –

+0

@TedHopp Oui, il est important que le chemin ne se croise pas. – Talon876

+3

Ce que vous voulez s'appelle une Randow Walk auto-évitante, généralement abrégée en SAW. Google pour cela et vous trouverez plusieurs méthodes de génération, car c'est un sujet bien étudié et très important en physique, chimie et biologie. L'ADN, les polymères et autres phénomènes sont liés à ce genre de choses. Ne vous attendez pas à trouver des algorithmes simples et efficaces ... –

Répondre

1

Puisque vous voulez éviter l'auto-intersection, une marche aléatoire va être difficile à faire correctement. Vous pourriez facilement vous peindre dans un coin. Je suggère de commencer par un seul segment de ligne qui traverse la zone, puis de diviser ce segment de ligne quelque part au milieu et de déplacer le point milieu d'une quantité aléatoire proportionnelle à la longueur du segment de ligne. Répétez ce processus récursivement pour les deux nouveaux segments de ligne. Si vous vous retrouvez avec un point médian qui amène l'un des deux nouveaux segments de ligne à traverser un segment de ligne existant, essayez un milieu différent. Arrêtez la récursivité lorsque vos segments de ligne sont courts (mais vous voulez définir cela).

Questions connexes