Skip to content

Moving your turtles

Déplacer une tortue sur les patchs

theory-sma
Angle de mouvement des tortues

Les tortues se déplacent en fonction d'un angle.

Cet angle est stocké dans l'attribut par défaut heading, il prend une valeur entre 0 et 360 degré.

theory-sma
Déplacement selon l'axe X ou Y

La fonction pour que les tortues se déplace est forward ou dans sa forme raccourci fd

Cette fonction s'utilise en lui passant un paramètre de distance à parcourir, ici 1.

Cette distance n'a pas d'unité, comme le temps, ce sont des éléments qu'il faudra définir en fonction de votre problème.

En se déplaçant de 1 unité d'espace selon l'axe X ou l'axe Y la tortue se retrouve par défaut sur le centroide du prochain patch dans la direction de déplacement. Comme on peut le voir dans la prochaine image, ce n'est pas le cas lorsqu'une tortue se déplace en diagonale.

Warning

C'est un élément important à prendre en compte dans vos modèles, si vous souhaitez que vos tortues se déplacent uniquement de centroide à centroide, alors il faudra prendre en charge ce cas particulier.

theory-sma
Déplacement en diagonale

Une façon de contourner ce problème est d'utiliser les fonctions patch-left-and-ahead <angle> <distance> et patch-right-and-ahead <angle> <distance> en association avec la fonction move-to <patch/agent> qui téléporte les agents vers un agent ou un patch donné en paramètre.

theory-sma
Regarder à gauche et à droite
theory-sma
Regarder et se déplacer à un patch à droite

Orienter les tortues vers une cible

theory-sma
Orienter les tortues vers des patchs

Deux commandes sont disponibles pour orienter les tortues vers une cible précise.

La commande face <agent/patch> permet de diriger la tortue vers un autre agent/patch.

Il est aussi possible de changer l'attribut d'une tortue (heading) en lui passant la direction pointant vers une autre tortue/patch via la commande towards <agent/patch>

theory-sma
Orienter les tortues vers d'autres tortues

Il est aussi possible de calculer des distances entre entités, pour cela il existe la fonction distance <agent/patch> Comme une distance se calcule entre deux entités, cette fonction se doit d'être appelé dans le contexte) d'un agent/patch.

theory-sma
Calculer des distances