Skip to content
Snippets Groups Projects
Commit e168621a authored by nollet's avatar nollet
Browse files

fin PJI

parent e25f294f
Branches
No related tags found
No related merge requests found
Showing
with 1138 additions and 0 deletions
# **| public class Agent : MonoBehaviour,** [**Visible**](./Vision/Visible.md) **|** [**↩️ Accueil**](../doc.md) **|** [**⬅️ SMA**](SMA.md) **|** [**➡️ Visible**](./Vision/Visible.md) **|**
## **Descriptif**
Classe correspondant à un Agent Boïd de la simulation. Il hérite de MonoBehaviour car il évoluera et intéragira avec l'environnement et les autres agents. Il implémente l'interface Visible car un agent est un objet visible.
## **Attributs**
---
* private [SMA](SMA.md) system : système auquel l'agent appartient
* private [Comportement](Comportement/Base/Comportement.md) comportement : comportement de l'agent
* private [Perception](Perception/Perception.md) perception : perception de l'agent
* public Vector3 deplacement : deplacement courant de l'agent
* private static int count : nombre d'Agents créés (pour identification des agents)
* private int id : identifiant de l'agent
---
## **Méthodes**
---
> public [SMA](SMA.md) getSystem()
* return : le système auquel l'agent appartient
---
> public bool isAlive()
* return : s'il est un Visible mobile
---
> public void setPerception([Perception](Perception/Perception.md) p)
* param p : perception à donner à l'agent
* effect : utilise la perception p en tant que nouvelle perception de l'agent
---
> public void setComportement([Comportement](Comportement/Base/Comportement.md) c)
* param c : comportement à donner à l'agent
* effect : utilise le comportement c en tant que nouveau comportement de l'agent
---
> void Start()
* effect : dû à l'héritage de MonoBehaviour, est appelé avant la première image affichée de l'agent. Initialise l'agent.
---
> void Update()
* effect : dû à l'héritage de MonoBehaviour, est appelée à chaque affichage. Met à jour l'agent
---
> private List<[Observation](Vision/Observation.md)> voir()
* return : la liste des observations actuelles de l'agent
---
> private void reagir(List<[Observation](Vision/Observation.md)> observation)
* param observation : liste des observations effectuées
* effect : l'agent se déplace, réagis en conséquence
---
> private void move()
* effect : déplacement de l'agent
---
> public override bool Equals(object obj)
* param obj : objet à comparer s'il est égal à l'agent
* return : si l'objet est égal à l'agent
---
> public override int GetHashCode()
* return le hashCode de l'agent
---
# **| public class Aleatoire :** [**Comportement**](Comportement.md) **|** [**↩️ Accueil**](../../../doc.md) **|** [**⬅️ Constant**](Constant.md) **|** [**➡️ Bord**](../Bord/Bord.md) **|**
## **Descriptif**
Classe correspondant à un comportement aléatoire. Hérite de [Comportement](Comportement.md)
## **Méthodes**
---
> public Aleatoire([Agent](../../Agent.md) proprietaire)
* param a : agent proprietaire du comportement
* return : instance de comportement
---
> public override Vector3 reagir(List<[Observation](../../Vision/Observation.md)> observation);
* param observation : liste d'observations effectuées par le propriétaire
* return : un vecteur déplacement
---
# **| public abstract class Comportement |** [**↩️ Accueil**](../doc.md) **|** [**⬅️ CustomObstacle**](../../Environnement/Obstacle/CustomObstacle.md) **|** [**➡️ Constant**](./Constant.md) **|**
## **Descriptif**
Classe abstraite correspondant au comportement d'un agent
## **Attributs**
---
* protected [Agent](../../Agent.md) proprietaire : le proprietaire du comportement
---
## **Méthodes**
---
> public Comportement([Agent](../../Agent.md) a)
* param a : agent proprietaire du comportement
* return : instance de comportement
---
> public abstract Vector3 reagir(List<[Observation](../../Vision/Observation.md)> observation);
* param observation : liste d'observations effectuées par le propriétaire
* return : un vecteur déplacement
---
# **| public class Constant :** [**Comportement**](Comportement.md) **|** [**↩️ Accueil**](../../../doc.md) **|** [**⬅️ Comportement**](Comportement.md) **|** [**➡️ Aleatoire**](./Aleatoire.md) **|**
## **Descriptif**
Classe correspondant à un comportement constant. Hérite de [Comportement](Comportement.md)
## **Méthodes**
---
> public Constant([Agent](../../Agent.md) proprietaire)
* param a : agent proprietaire du comportement
* return : instance de comportement
---
> public override Vector3 reagir(List<[Observation](../../Vision/Observation.md)> observation);
* param observation : liste d'observations effectuées par le propriétaire
* return : un vecteur déplacement
---
# **| public class Bord :** [**Comportement**](../Base/Comportement.md) **|** [**↩️ Accueil**](../../../doc.md) **|** [**⬅️ Aleatoire**](../Base/Aleatoire.md) **|** [**➡️ TangenteBord1**](./TangenteBord1.md) **|**
## **Descriptif**
Classe correspondant à un comportement de gestion de Bord. Hérite de [Comportement](../Base/Comportement.md)
## **Attributs**
---
* static public float kR : constante de force de répulsion
---
## **Méthodes**
---
> public Bord([Agent](../../Agent.md) proprietaire)
* param a : agent proprietaire du comportement
* return : instance de comportement
---
> public override Vector3 reagir(List<[Observation](../../Vision/Observation.md)> observation);
* param observation : liste d'observations effectuées par le propriétaire
* return : un vecteur déplacement
---
> protected virtual Vector3 answer([Observation](../../Vision/Observation.md) o)
* param o : observation effectuée
* return : le vecteur réponse à l'observation
---
> protected virtual float delta(Vector3 d)
* param d : distance de l'observation
* return : force de la réponse
---
\ No newline at end of file
# **| public class TangenteBord1 :** [**Bord**](./Bord.md) **|** [**↩️ Accueil**](../../../doc.md) **|** [**⬅️ Bord**](./Bord.md) **|** [**➡️ TangenteBord2**](./TangenteBord2.md) **|**
## **Descriptif**
Classe pour comportement de gestion de Bord en Tangente. Hérite de [Bord](Bord.md)
## **Méthodes**
---
> public TangenteBord1([Agent](../../Agent.md) proprietaire)
* param a : agent proprietaire du comportement
* return : instance de comportement
---
> public override Vector3 reagir(List<[Observation](../../Vision/Observation.md)> observation);
* param observation : liste d'observations effectuées par le propriétaire
* return : un vecteur déplacement
---
> protected virtual float deltaTan(Vector3 d)
* param d : distance de l'observation
* return : force de la réponse en tangente
---
> protected virtual Vector3 answerTan(Observation o)
* param o : observation effectuée
* return : le vecteur réponse en tangente à l'observation
---
\ No newline at end of file
# **| public class TangenteBord2 :** [**Bord**](./Bord.md) **|** [**↩️ Accueil**](../../../doc.md) **|** [**⬅️ TangenteBord1**](./TangenteBord1.md) **|** [**➡️ CompositeSum**](../Composite/CompositeSum.md) **|**
## **Descriptif**
Classe pour comportement de gestion de Bord en Tangente 2eme version. Hérite de [TangenteBord1](TangenteBord1.md)
## **Attributs**
---
* public static float kT : constante de force tangente
---
## **Méthodes**
---
> public TangenteBord2([Agent](../../Agent.md) proprietaire)
* param a : agent proprietaire du comportement
* return : instance de comportement
---
> public override Vector3 reagir(List<[Observation](../../Vision/Observation.md)> observation);
* param observation : liste d'observations effectuées par le propriétaire
* return : un vecteur déplacement
---
\ No newline at end of file
# **| public class CompositeMean :** [**CompositeSum**](./CompositeSum.md) **|** [**↩️ Accueil**](../../../doc.md) **|** [**⬅️ CompositeSum**](./CompositeSum.md) **|** [**➡️ Constrain2D**](../Contrainte/Constrain2D.md) **|**
## **Descriptif**
Classe pour comportement composé et qui moyenne ses composants. Hérite de [CompositeSum](./CompositeSum.md)
## **Méthodes**
---
> public CompositeMean([Agent](../../Agent.md) proprietaire,List<[Comportement](../Base/Comportement.md)> c,List< int > i)
* param a : agent proprietaire du comportement
* param c : liste de comportement pour composer
* param i : liste des poids d'importances des comportements de la liste c
* return : instance de comportement
---
> public CompositeMean([Agent](../../Agent.md) proprietaire)
* param a : agent proprietaire du comportement
* return : instance de comportement
---
> public override Vector3 reagir(List<[Observation](../../Vision/Observation.md)> observation);
* param observation : liste d'observations effectuées par le propriétaire
* return : un vecteur déplacement
---
# **| public class CompositeSum :** [**Comportement**](../Base/Comportement.md) **|** [**↩️ Accueil**](../../../doc.md) **|** [**⬅️ TangenteBord2**](../Bord/TangenteBord2.md) **|** [**➡️ CompositeMean**](./CompositeMean.md) **|**
## **Descriptif**
Classe pour comportement composé et qui somme ses composants. Hérite de [Comportement](../Base/Comportement.md)
## **Attributs**
---
* protected List<[Comportement](../Base/Comportement.md)> comportements : liste des comportements qui compose notre comportement
* protected List< int > importances : liste des poids d'importances des comportements
---
## **Méthodes**
---
> public CompositeSum([Agent](../../Agent.md) proprietaire,List<[Comportement](../Base/Comportement.md)> c,List< int > i)
* param a : agent proprietaire du comportement
* param c : liste de comportement pour composer
* param i : liste des poids d'importances des comportements de la liste c
* return : instance de comportement
---
> public CompositeSum([Agent](../../Agent.md) proprietaire)
* param a : agent proprietaire du comportement
* return : instance de comportement
---
> public void removeComportement(int i)
* param i : indice du comportement à enlever
* effect : enlève le ième comportement du comportement composé
---
> public void AddComportement([Comportement](../Base/Comportement.md) c, int i)
* param c : comportement à ajouter
* param i : son poids d'importance
* effect : rajoute le comportement avec son poids dans le comportement composé
---
> public override Vector3 reagir(List<[Observation](../../Vision/Observation.md)> observation);
* param observation : liste d'observations effectuées par le propriétaire
* return : un vecteur déplacement
---
# **| public class Constrain2D :** [**Comportement**](../Base/Comportement.md) **|** [**↩️ Accueil**](../../../doc.md) **|** [**⬅️ CompositeMean**](../Composite/CompositeMean.md) **|** [**➡️ Reynolds**](../Papers/Reynolds.md) **|**
## **Descriptif**
Classe pour comportement contraignant un comportement à un mouvement 2D. Hérite de [Comportement](../Base/Comportement.md)
## **Attributs**
---
* protected Comportement comportement : le comportement qui est contraint
---
## **Méthodes**
---
> public Constrain2D(Agent proprietaire,Comportement c)
* param a : agent proprietaire du comportement
* param c : comportement à contraindre
* return : instance de comportement
---
> public override Vector3 reagir(List<[Observation](../../Vision/Observation.md)> observation);
* param observation : liste d'observations effectuées par le propriétaire
* return : un vecteur déplacement
---
\ No newline at end of file
# **| public class Paper :** [**Comportement**](../Base/Comportement.md) **|** [**↩️ Accueil**](../../../doc.md) **|** [**⬅️ Reynolds**](./Reynolds.md) **|**
## **Descriptif**
Classe pour comportement amorçant les règles énoncés dans cet [article](../../../../../media/paper.pdf). Hérite de [Comportement](../Base/Comportement.md)
## **Attributs**
---
* private static List< Vector3 > moves : liste des vecteurs déplacements possibles
* private static float activeSeuil : Critical real distance at which the FSRs are activated
* private static float changeRate : Change rate (0 < P_C < 1) for increasing and decreasing ideal distances, and stagnation and exile tolerance times
* private static float stagnationTolerance : Initial value of the stagnation tolerance time
* private static float exileTolerance : Initial value of the exile tolerance time
* private List<[Memory](#a)> memories : liste des mémoires courantes
---
## **Méthodes**
---
> public Paper([Agent](../../Agent.md) proprietaire)
* param a : agent proprietaire du comportement
* return : instance de comportement
---
> public override Vector3 reagir(List<[Observation](../../Vision/Observation.md)> observation);
* param observation : liste d'observations effectuées par le propriétaire
* return : un vecteur déplacement
---
> private List< Vector3 > getTheMoves(List<[Observation](../../Vision/Observation.md)> observation)
* param observation : observations effectuées par l'agent propriétaire
* return : liste de vecteur candidats pour réponse réaction
---
> private Vector3 getTheMove(List< Vector3 > candidatesVectors)
* param candidatesVectors : vecteurs qui pourraient être une réponse réaction (résultat de getTheMoves)
* return : le déplacement de mieux adapté
---
> private void assumeTheMove(Vector3 themove,List<[Observation](../../Vision/Observation.md)> observation)
* param themove : le déplacement choisi
* param observation : observations effectuées par l'agent propriétaire
* effect : change la mémoire du comportement en conséquence du choix effectué
---
> private bool isAgent([Observation](../../Vision/Observation.md) o)
* param o : observation effectué
* return : si l'objet observé est un agent ou non
---
> private float computeDisatisfaction(Vector3 move, List<[Observation](../../Vision/Observation.md)> observation)
* param move : déplacement testé
* param observation : observations effectuées par l'agent propriétaire
* return : la disatisfaction du déplacement
---
> private void addAgentInMemory([Agent](../../Agent.md) concerned,float dist,float max, float reachDist)
* param concerned : agent qu'on rajoute en mémoire
* param dist : la distance à laquelle il se situe
* param max : la distance maximale où ils pourraient se situer
* param reachDist : la distance prévu
* effect : ajoute l'agent en mémoire
---
> private float idealDistance([Agent](../../Agent.md) other)
* param other : l'agent avec qui on calcule la distance idéale
* return : la distance idéal entre le propriétaire et l'agent other
---
<h2 id="a"><strong>Classe Interne : Memory</strong></h2>
### Descriptifs
Classe interne correspondant à une mémoire dyadic entre le propriétaire et un autre agent
### Attributs
---
* public [Agent](../../Agent.md) agent : agent en mémoire
* public float idealDistance : la distance idéale courante
* public float predictDistance : la distance prévue
* public float predictAttempt : l'intention de déplacement
* public float stagnation : la stagnation courante
* public float exilation : l'exilation courante
---
### Méthodes
---
> public Memory([Agent](../../Agent.md) a, float ideal, float predict, float attempt)
* param a : agent en mémoire
* param ideal : distance idéale entre propriétaire et agent
* param predict : ditances prévu au prochain calcul de distances
* param attempt : attention de rapprochement (+-1)
* return : instance de memory
---
# **| public class Reynolds :** [**Comportement**](../Base/Comportement.md) **|** [**↩️ Accueil**](../../../doc.md) **|** [**⬅️ Constrain2D**](../Contrainte/Constrain2D.md) **|** [**➡️ Paper**](./Paper.md) **|**
## **Descriptif**
Classe pour comportement respectant les règles de nuées de [Reynolds](../../../../../media/reynolds.pdf). Hérite de [Comportement](../Base/Comportement.md)
## **Attributs**
---
* static public float Escape : constante de distance de séparation
* static public float EscapeWeight : poids de la séparation
* static public float Together : constante de distance de l'alignement
* static public float TogetherWeight : poids de l'alignement
* static public float Follow : constante de distance de cohésion
* static public float FollowWeight : poids de la cohésion
---
## **Méthodes**
---
> public Reynolds([Agent](../../Agent.md) proprietaire)
* param a : agent proprietaire du comportement
* return : instance de comportement
---
> public override Vector3 reagir(List<[Observation](../../Vision/Observation.md)> observation);
* param observation : liste d'observations effectuées par le propriétaire
* return : un vecteur déplacement
---
> private bool danger(Observation o)
* param o : observation effectué
* return : si il faut appliquer la règle d'éloignement
---
> private Vector3 fuir(Vector3 d)
* param d : distance qu'il faut fuir
* return : vecteur d'éloignement
---
> private bool normal(Observation o)
* param o : observation effectué
* return : si il faut appliquer la règle d'alignement
---
> private Vector3 suivre(Visible a)
* param a : visible observé et qu'il faut suivre
* return : vecteur d'alignement
---
> private bool isolement(Observation o)
* param o : observation effectué
* return : si il faut appliquer la règle de cohésion
---
> private Vector3 rapprocher(Vector3 d)
* param d : distance dont il faut se rapprocher
* return : vecteur de cohésion
---
# **| public class Environnement : MonoBehaviour |** [**↩️ Accueil**](../../doc.md) **|** [**⬅️ Perception360**](../Perception/Perception360.md) **|** [**➡️ Topologie**](./Topologie/Topologie.md) **|**
## **Descriptif**
Classe correpondant à l'environnement du système. Hérite de Monobehaviour car il peut changer selon le système
## **Attributs**
---
* public GameObject cube : Visuel environnement en cube
* public GameObject carre : Visuel environnement en carré
* public GameObject[] figures : Visuels possibles pour les obstacles
* private [SMA](../SMA.md) system : système utilisant l'environnement
* private bool _3D : actuel dimension de l'environnement (vrai si 3D)
* private [Topologie](Topologie/Topologie.md) topologie : topologie de l'environnement
* private List<[CustomObstacle](Obstacle/CustomObstacle.md)> obstacles : liste des obstacles dans l'environnement
---
## **Méthodes**
---
> public [Topologie](Topologie/Topologie.md) getTopologie()
* return : la topologie de l'environnement
---
> public Vector3 validPosition()
* return : une position valide dans l'environnement
---
> public float getMaxDistance()
return : la distance maximale mesurable dans l'environnement
---
> public void notify()
* effect : change l'environnement en 3D ou non selon le système
---
> private void setTheTopologie([Topologie](Topologie/Topologie.md) topo)
* param topo : topologie à utiliser pour l'environnement
* effect : Initialise l'environnement avec seulement son contour entré en paramètre
---
> public List<[Observation](../Vision/Observation.md)> getVoisinage([Agent](../Agent.md) current, float rayon, float angle)
* param current : agent dont on souhaite les observations
* param rayon : rayon de vision
* param angle : angle de vision
* return : liste des observations de l'agent dans l'environnement
---
> private List<[Observation](../Vision/Observation.md)> detectAgents([Agent](../Agent.md) current, float rayon, float angle)
* param current : agent dont on souhaite les observations
* param rayon : rayon de vision
* param angle : angle de vision
* return : liste des observations de l'agent d'autres dans l'environnement
---
> private List<[Observation](../Vision/Observation.md)> detectObstacles([Agent](../Agent.md) current, List<[Observation](../Vision/Observation.md)> res,float rayon)
* param current : agent dont on souhaite les observations
* param res : liste des observations déjà effectuées
* param rayon : rayon de vision
* return : liste des observations d'obstacles ajoutée à la liste des observations déjà effectuées de l'agent dans l'environnement
---
> private List<[Observation](../Vision/Observation.md)> detectBord([Agent](../Agent.md) current, List<[Observation](../Vision/Observation.md)> res, float rayon, float angle)
* param current : agent dont on souhaite les observations
* param res : liste des observations déjà effectuées
* param rayon : rayon de vision
* param angle : angle de vision
* return : liste des observations des bords ajoutée à la liste des observations déjà effectuées de l'agent dans l'environnement
---
> public void createObject(GameObject obj, Vector3 pos)
* param obj : objet à créer
* param pos : position où on souhaite le créer
* effect : crée l'objet à la position souhaitée
---
> void Start()
* effect : dû à l'héritage de MonoBehaviour, est appelé avant la première image affichée de l'environnement. Initialise l'environnement.
---
> public List<[CustomObstacle](Obstacle/CustomObstacle.md)> getPattern(int i)
* param i : indice du pattern à renvoyer
* return : un ième pattern d'obstacles
---
> public void changeObstacles(List<[CustomObstacle](Obstacle/CustomObstacle.md)> co)
* param co : liste d'obstacles à associer à l'environnement
* effect : change les obstacles de l'environnement
---
> private void createObstacles()
* effect : crée les visuels des obstacles
---
# **| public class CustomObstacle :** [**Obstacle**](./Obstacle.md) **|** [**↩️ Accueil**](../../../doc.md) **|** [**⬅️ PointObstacle**](./PointObstacle.md) **|** [**➡️ Comportement**](../../Comportement/Base/Comportement.md) **|**
## **Descriptif**
Classe pour un obstacle avec un visuel défini. Hérite de [Obstacle](./Obstacle.md)
## **Attributs**
---
* public GameObject figure : l'esthetique de l'obstacle
---
# **Méthodes**
---
> public CustomObstacle([Environnement](../Environnement.md) e, Vector3 p,GameObject g)
* param e : environnement auquel l'Obstacle appartient
* param p : position de l'obstacle
* param g : le visuel de l'obstacle
* return : instance d'obstacle avec un visuel particulier
---
> public override Vector3 getPointContact([Agent](../../Agent.md) a);
* param a : agent qui rentrerait en contact avec l'obstacle
* return : position du point auquel l'agent rentrerait en collision avec l'obstacle
---
> public override List< Vector3 > getTangentes([Agent](../../Agent.md) a);
* param a : agent qui rentrerait en contact avec l'obstacle
* return : les tangentes au point d'impact entre l'agent et l'obstacle
---
> public override void createObject();
* effect : crée le visuel de l'obstacle dans l'environnement
---
}
# **| public abstract class Obstacle :** [**Visible**](../../Vision/Visible.md) **|** [**↩️ Accueil**](../../../doc.md) **|** [**⬅️ Carre**](../Topologie/Carre.md) **|** [**➡️ PointObstacle**](./PointObstacle.md) **|**
## **Descriptif**
Classe abstraite correspondant à un Obstacle dans un environnement. Implémente [Visible](../../Vision/Visible.md)
# **Attributs**
---
* public Vector3 position : position de l'objet
* protected [Environnement](../Environnement.md) env : environnement de l'objet
---
## **Méthodes**
---
> public Obstacle([Environnement](../Environnement.md) e, Vector3 p)
* param e : environnement auquel l'Obstacle appartient
* param p : position de l'obstacle
* return : instance d'obstacle
---
> public bool isAlive()
* return : si l'objet visible est mobile ou non
---
> public abstract Vector3 getPointContact([Agent](../../Agent.md) a);
* param a : agent qui rentrerait en contact avec l'obstacle
* return : position du point auquel l'agent rentrerait en collision avec l'obstacle
---
> public abstract List< Vector3 > getTangentes([Agent](../../Agent.md) a);
* param a : agent qui rentrerait en contact avec l'obstacle
* return : les tangentes au point d'impact entre l'agent et l'obstacle
---
> public abstract void createObject();
* effect : crée le visuel de l'obstacle dans l'environnement
---
# **| public class PointObstacle :** [**Obstacle**](./Obstacle.md) **|** [**↩️ Accueil**](../../../doc.md) **|** [**⬅️ Obstacle**](./Obstacle.md) **|** [**➡️ CustomObstacle**](./CustomObstacle.md) **|**
## **Descriptif**
Classe pour un obstacle en un point. Hérite de [Obstacle](./Obstacle.md)
## **Attributs**
---
* public List< Vector3 > tangentes : les tangentes au point
---
# **Méthodes**
---
> public PointObstacle([Environnement](../Environnement.md) e, Vector3 p, List<Vector3> t)
* param e : environnement auquel l'Obstacle appartient
* param p : position de l'obstacle
* param t : tangentes au point
* return : instance de point d'obstacle
---
> public PointObstacle([Environnement](../Environnement.md) e, Vector3 p)
* param e : environnement auquel l'Obstacle appartient
* param p : position de l'obstacle
* return : instance de point d'obstacle
---
> public override Vector3 getPointContact([Agent](../../Agent.md) a);
* param a : agent qui rentrerait en contact avec l'obstacle
* return : position du point auquel l'agent rentrerait en collision avec l'obstacle
---
> public override List< Vector3 > getTangentes([Agent](../../Agent.md) a);
* param a : agent qui rentrerait en contact avec l'obstacle
* return : les tangentes au point d'impact entre l'agent et l'obstacle
---
> public override void createObject();
* effect : crée le visuel de l'obstacle dans l'environnement
---
# **| public class Carre :** [**Cube**](Cube.md) **|** [**↩️ Accueil**](../../../doc.md) **|** [**⬅️ Cube**](./Cube.md) **|** [**➡️ Obstacle**](../Obstacle/Obstacle.md) **|**
## **Descriptif**
Classe pour une topologie d'environnement en forme de carré. Hérite de [Cube](Cube.md)
## **Méthodes**
---
> public Carre(Environnement e,GameObject c)
* param e : environnement auquel appartien la topologie
* param c : visuel de la topologie
* return : instance de la topologie
---
> public override [Observation](../../Vision/Observation.md) detectEnv([Agent](../../Agent.md) current);
* param current : agent qui détecte le bord de la topologie
* return : l'observation effectué par l'agent du point de la topologie que l'agent current pourrait heurter
---
> protected List< Vector3 > getExtremPositions([Agent](../../Agent.md) current)
* param current : l'agent dont on souhaite les projections de sa position sur les côtés du carré
* return : les projections de la position de l'agent sur les côtés du carré
---
> protected Vector3 basicAnswer(List< Vector3 > p, float x, float y, float z)
* param p : la liste des réponses basiques
* param x : composante en x du déplacement
* param y : composante en y du déplacement
* param z : composante en z du déplacement
* return : la position du point d'impact selon la direction unidirectionnel décrite par les composantes x, y et z
---
> protected Vector3 goingToHit([Agent](../../Agent.md) current)
* param current : l'agent dont on veut le point d'impact avec l'environnement
* return : la position du point d'impact entre l'environnement et l'agent current
---
> protected List<(Vector3,Vector3)> choiceMove(List< Vector3 > p, float x, float y,float z)
* param p : la liste des positions des points des côtés (obtenus avec basicAnswer)
* param x : composante en x du déplacement
* param y : composante en y du déplacement
* param z : composante en z du déplacement
* return : les positions des points des côtés ainsi que les déplacements triviaux induit par le déplacement
---
# **| public class Cube :** [**Topologie**](Topologie.md) **|** [**↩️ Accueil**](../../../doc.md) **|** [**⬅️ Topologie**](./Topologie.md) **|** [**➡️ Carre**](./Carre.md) **|**
## **Descriptif**
Classe pour une topologie d'environnement en forme de cube. Hérite de [Topologie](Topologie.md)
## **Attributs**
* protected float minX : borne inférieur en x
* protected float maxX : borne maximum en x
* protected float minY : borne inférieur en y
* protected float maxY : borne maximum en y
* protected float minZ : borne inférieur en z
* protected float maxZ : borne maximum en z
* protected GameObject cube : visuel du cube
# **Méthodes**
---
> public Cube([Environnement](../Environnement.md) e, GameObject c)
* param e : environnement auquel appartien la topologie
* param c : visuel de la topologie
* return : instance de la topologie
---
> public List< float > getExtremums()
* return : la liste des limites du cube dans cet ordre [minX,maxX,minY,maxY,minZ,maxZ]
---
> public override GameObject getGameObject()
* return : le GameObject de la topologie
---
> public override [Observation](../../Vision/Observation.md) detectEnv([Agent](../../Agent.md) current);
* param current : agent qui détecte le bord de la topologie
* return : l'observation effectué par l'agent du point de la topologie que l'agent current pourrait heurter
---
> public override Vector3 validPosition();
* return : une position valide dans la topologie
---
> public override bool isValidPosition(Vector3 pos);
* param pos : une position
* return : si la position est valide dans la topologie
---
> public override float getMaxDistance();
* return : la distance maximale mesurable dans la topologie
---
> protected Vector3 convertToValidOne(Vector3 v)
* param v : vecteur à convertir en un valide selon la topologie
* return : la position v de tel sorte à ce qu'elle soit valide dans le cube
---
> protected bool onlyOneDirection(float x, float y, float z)
* param x : composante en x du déplacement
* param y : composante en y du déplacement
* param z : composante en z du déplacement
* return : si le déplacement en x, y et z est unidirectionnel
---
> protected Vector3 bestOne([Agent](../../Agent.md) current,Vector3 p1,Vector3 p2)
* param p1 : 1ere position d'impact
* param p2 : 2eme position d'impact
* return : la position d'impact d'environnement entre p1 et p2 qui est la plus adapté pour l'agent current
---
# **| public abstract class Topologie |** [**↩️ Accueil**](../../../doc.md) **|** [**⬅️ Environnement**](../Environnement.md) **|** [**➡️ Cube**](./Cube.md) **|**
## **Descriptif**
Classe abstraite pour la topologie d'un environnement
## **Attributs**
---
* protected [Environnement](../Environnement.md) environnement : Environnement auquel appartient la topologie
---
## **Méthodes**
---
> public Topologie([Environnement](../Environnement.md) env)
* param env : environnement auquel appartien la topologie
* return : l'instance de Topologie
---
> public abstract GameObject getGameObject();
* return : le GameObject de la topologie
---
> public abstract [Observation](../../Vision/Observation.md) detectEnv([Agent](../../Agent.md) current);
* param current : agent qui détecte le bord de la topologie
* return : l'observation effectué par l'agent du point de la topologie que l'agent current pourrait heurter
---
> public abstract Vector3 validPosition();
* return : une position valide dans la topologie
---
> public abstract bool isValidPosition(Vector3 pos);
* param pos : une position
* return : si la position est valide dans la topologie
---
> public abstract float getMaxDistance();
* return : la distance maximale mesurable dans la topologie
---
# **| public class Perception |** [**↩️ Accueil**](../../doc.md) **|** [**⬅️ Observation**](../Vision/Observation.md) **|** [**➡️ Perception90**](./Perception90.md) **|**
## **Descriptif**
Classe correspondant à la perception d'un agent de son environnement
## **Attributs**
---
* protected [Agent](../Agent.md) proprietaire : L'agent propriétaire de la perception
* protected float rayon : Le rayon de vision
* protected float angle : l'angle de vision
---
## Méthodes
---
> public Perception([Agent](../Agent.md) agent, float r, float a)
* param agent : agent à qui la perception appartient
* param r : rayon de vision de la perception
* param a : angle de vision de la perception
* return : instance de la perception
---
> public List<[Observation](../Vision/Observation.md)> voir()
* return : la liste des observations que la perception a permis
---
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment