retour aux mémos     retour au modèle     back to SimMasto home page   retour à la page d'accueil

Affichage programmable du style d'un agent (animal)


Objectif: Attribuer une image à chaque agent qui pourra être affichée et modifiée en passant par la programmation.

Entrée : Des images (au format .jpg)

Classes concernées

C_StyleAgent (affichage des images) / I_data (liste d’états d’un agent) / C_InspecteurImage (gestionnaire des images) / A_VisibleAgent / I_sim_constants

Modifications apportées

Mode de gestion par la plateforme

·        Dialogue avec le context

Le dialogue avec le context se fait après l’ajout des agents au context (à partir de la méthode build()). Dans le document xml du display dans lequel on veut utiliser le style, il faut modifier la ligne dans styles/entry. On a alors une première ligne qui correspond au path de l'agent, et une seconde qui est le path de son style. Il suffit d'écrire le package.class correspondant pour l'appliquer à la simulation.

·        Relation avec l’affichage

Pour modifier l’icône d’un agent, on ne passe plus par le 2D Shape Editor. L’affichage est géré par C_StyleAgent et les images par C_InspecteurImage.

Définir une image pour chaque agent

·        C’est le système épiphyte qui gère les images, par le biais de la classe C_InspecteurImage.

·        L’inspecteur d’images est instancié à l’initialisation, dans le ContextCreator, afin d’être disponible le plus tôt possible. Il charge toutes les images qui pourront être utilisées au cours de la simulation. Ceci permet de gagner du temps de calcul durant cette dernière.

·        C_StyleAgent initialise l'icône des agents avec la méthode getVSpatial(). Un VSpatial peut être une image ou une forme géométrique. Repast appelle cette méthode à chaque pas de temps et pour chaque agent. De plus, ces derniers possèdent tous leur VSpatial, inclus dans une liste gérée par Repast. Pour créer un VSpatial il faut utiliser un ShapeFactory2D et sa méthode createImage(String id, BufferedImage img) ou createCircle(float radius, int slices). L'id des VSpatial doit être différent pour chaque appelle de createImage(…). De ce fait, on peut prendre l'id de l'agent à qui il appartient ainsi que son âge pour le définir. L'image en paramètre est choisie grâce à C_InspecteurImage.selectIcon().

Mise à jour des images

·        Si on utilise la représentation par les images, on utilise la méthode createImage(...) dans getVSpatial() ;

·        Si on utilise la représentation par les ellipses, le VSpatial retourné dans getVSpatial() est créé au début de la simulation mais ne sera plus modifié dans cette classe. C'est la fonction getColor() qui va mettre à jour la couleur de l'ellipse à l'aide de C_InspecteurImage.getColor();

Affichage dans le display

Schéma: Diagramme de classes de gestion des images

 


Mémo 23 - Auteur A. Realini, 30.03.11, publié par J.Le Fur, 19.03.2013

retour aux mémos     retour au modèle     back to SimMasto home page   retour à la page d'accueil