Package nbody

Class NBodySimulator

java.lang.Object
java.lang.Thread
math_physics.physics.Simulator
nbody.NBodySimulator
All Implemented Interfaces:
java.lang.Runnable

public class NBodySimulator
extends Simulator
Classe simulant N corps intéragissant gravitationnellement (utilisation de la simulation de Barnes-Hut possible).
  • Nested Class Summary

    Nested classes/interfaces inherited from class java.lang.Thread

    java.lang.Thread.State, java.lang.Thread.UncaughtExceptionHandler
  • Field Summary

    Fields 
    Modifier and Type Field Description
    private double maxDistance
    Distance maximale du centre de la simulation.
    private double theta
    Correspond à une valeur permettant la vérification de la distance d'un objet au centre de gravité du noeud-arbre dans l'algorithme de Barnes-Hut.
    private boolean useBarnesHutSimulation
    Correspond au type de simulation à utiliser. false : utilisation de la simulation newtonienne basique (précise mais lente). true : utilisation de la simulation de Barnes-Hut (rapide mais moins précise).

    Fields inherited from class math_physics.physics.Simulator

    bodies, deltaTime, generator, numberBody, origin

    Fields inherited from class java.lang.Thread

    MAX_PRIORITY, MIN_PRIORITY, NORM_PRIORITY
  • Constructor Summary

    Constructors 
    Constructor Description
    NBodySimulator()
    Constructeur de la classe NBodySimulator.
    NBodySimulator​(int numberBodyInitial, double massMax, double radius, double maxDistance, double maxVelocity, javafx.scene.paint.Color color)
    Constructeur de la classe NBodySimulator.
  • Method Summary

    Modifier and Type Method Description
    void addBodies​(java.util.Collection<Body> bodiesToAdd)
    Permet d'ajouter un objet à la liste des objets appartenant au simulateur.
    void addBodies​(Body... bodiesToAdd)
    Permet d'ajouter un objet à la liste des objets appartenant au simulateur.
    void addBody​(java.lang.String name, double mass, double radius, Vector3D position, Vector3D velocity, javafx.scene.paint.Color color)
    Permet d'ajouter un objet à la liste des objets appartenant au simulateur.
    void addBody​(Body bodyToAdd)
    Permet d'ajouter un objet à la liste des objets appartenant au simulateur.
    void addRandomBody​(double massMax, double radius, double maxDistance, double maxVelocity, javafx.scene.paint.Color color)
    Permet d'ajouter un objet créé aléatoirement à la liste des objets appartenant au simulateur.
    double getMaxDistance()
    Permet de récupérer la valeur de la distance maximale.
    double getTheta()
    Permet de récupérer le paramètre Théta utilisé dans l'algorithme de Barnes-Hut.
    boolean getUseBarnesHutSimulation()
    Permet de savoir quel type de simulation est en cours d'utilisation.
    static void main​(java.lang.String[] args)
    Méthode principale.
    javafx.scene.shape.Sphere removeBody​(Body instance)
    Permet de supprimer un corps de la simulation.
    Body search​(java.lang.String name)
    Permet de retrouver un objet dans la simulation.
    void setMaxDistance​(double newMaxDistance)
    Permet de remplacer la valeur de la distance maximale.
    void setTheta​(double newTheta)
    Permet de changer la valeur du paramètre Théta.
    void setUseBarnesHutSimulation​(boolean newValue)
    Permet de changer manuellement le type de simulation en cours d'utilisation.
    void simulateAllBodies()
    Permet de simuler toutes les intéractions des objets.
    void toggleUseBarnesHutSimulation()
    Permet de changer automatiquement le type de simulation en cours d'utilisation.

    Methods inherited from class java.lang.Thread

    activeCount, checkAccess, clone, countStackFrames, currentThread, dumpStack, enumerate, getAllStackTraces, getContextClassLoader, getDefaultUncaughtExceptionHandler, getId, getName, getPriority, getStackTrace, getState, getThreadGroup, getUncaughtExceptionHandler, holdsLock, interrupt, interrupted, isAlive, isDaemon, isInterrupted, join, join, join, onSpinWait, resume, setContextClassLoader, setDaemon, setDefaultUncaughtExceptionHandler, setName, setPriority, setUncaughtExceptionHandler, sleep, sleep, start, stop, suspend, toString, yield

    Methods inherited from class java.lang.Object

    equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
  • Field Details

    • useBarnesHutSimulation

      private boolean useBarnesHutSimulation
      Correspond au type de simulation à utiliser. false : utilisation de la simulation newtonienne basique (précise mais lente). true : utilisation de la simulation de Barnes-Hut (rapide mais moins précise).
    • maxDistance

      private double maxDistance
      Distance maximale du centre de la simulation.
    • theta

      private double theta
      Correspond à une valeur permettant la vérification de la distance d'un objet au centre de gravité du noeud-arbre dans l'algorithme de Barnes-Hut.
  • Constructor Details

    • NBodySimulator

      public NBodySimulator()
      Constructeur de la classe NBodySimulator.
    • NBodySimulator

      public NBodySimulator​(int numberBodyInitial, double massMax, double radius, double maxDistance, double maxVelocity, javafx.scene.paint.Color color)
      Constructeur de la classe NBodySimulator.
      Parameters:
      numberBodyInitial - Entier représentant le nombre de corps initial à créer
      massMax - Masse maximum pour créer les objets
      radius - Rayon de la sphère pour l'affichage
      maxDistance - Distance initiale maximale pour placer les objets
      maxVelocity - Vitesse initiale maximale pour déplacer les objets
      color - Couleur à afficher sur la surface de sphère
  • Method Details

    • getMaxDistance

      public double getMaxDistance()
      Permet de récupérer la valeur de la distance maximale.
      Returns:
      Distance maximale
    • setMaxDistance

      public void setMaxDistance​(double newMaxDistance)
      Permet de remplacer la valeur de la distance maximale.
      Parameters:
      newMaxDistance - Nouvelle valeur
    • getUseBarnesHutSimulation

      public boolean getUseBarnesHutSimulation()
      Permet de savoir quel type de simulation est en cours d'utilisation.
      Returns:
      Booléen représentant si la simulation de Barnes-Hut est utilisée
    • setUseBarnesHutSimulation

      public void setUseBarnesHutSimulation​(boolean newValue)
      Permet de changer manuellement le type de simulation en cours d'utilisation.
      Parameters:
      newValue - true : simulation de Barnes-Hut, false : simulation basique
    • toggleUseBarnesHutSimulation

      public void toggleUseBarnesHutSimulation()
      Permet de changer automatiquement le type de simulation en cours d'utilisation.
    • getTheta

      public double getTheta()
      Permet de récupérer le paramètre Théta utilisé dans l'algorithme de Barnes-Hut.
      Returns:
      Théta
    • setTheta

      public void setTheta​(double newTheta)
      Permet de changer la valeur du paramètre Théta.
      Parameters:
      newTheta - Nouvelle valeur
    • addRandomBody

      public void addRandomBody​(double massMax, double radius, double maxDistance, double maxVelocity, javafx.scene.paint.Color color)
      Permet d'ajouter un objet créé aléatoirement à la liste des objets appartenant au simulateur.
      Parameters:
      massMax - Masse maximum pour créer les objets
      radius - Rayon de la sphère pour l'affichage
      maxDistance - Distance initiale maximale pour placer les objets
      maxVelocity - Vitesse initiale maximale pour déplacer les objets
      color - Couleur à afficher sur la surface de sphère
    • addBody

      public void addBody​(java.lang.String name, double mass, double radius, Vector3D position, Vector3D velocity, javafx.scene.paint.Color color)
      Permet d'ajouter un objet à la liste des objets appartenant au simulateur.
      Parameters:
      name - Nom de l'objet
      mass - Masse totale de l'objet
      radius - Rayon de l'objet
      position - Coordonnées de la position de l'objet
      velocity - Vitesse initiale de déplacement de l'objet
      color - Couleur à afficher sur la surface de sphère
    • addBody

      public void addBody​(Body bodyToAdd)
      Permet d'ajouter un objet à la liste des objets appartenant au simulateur.
      Parameters:
      bodyToAdd - Corps à ajouter à la liste
    • addBodies

      public void addBodies​(java.util.Collection<Body> bodiesToAdd)
      Permet d'ajouter un objet à la liste des objets appartenant au simulateur.
      Parameters:
      bodiesToAdd - Collection de corps à ajouter à la liste
    • addBodies

      public void addBodies​(Body... bodiesToAdd)
      Permet d'ajouter un objet à la liste des objets appartenant au simulateur.
      Parameters:
      bodiesToAdd - Suite de corps à ajouter à la liste
    • search

      public Body search​(java.lang.String name)
      Permet de retrouver un objet dans la simulation.
      Parameters:
      name - Identifiant unique de l'objet recherché
      Returns:
      Objet recherché
    • removeBody

      public javafx.scene.shape.Sphere removeBody​(Body instance)
      Permet de supprimer un corps de la simulation.
      Parameters:
      instance - Instance du corps que l'on veut retirer
      Returns:
      Sphère associée au corps (enlever manuellement de la simulation)
    • simulateAllBodies

      public void simulateAllBodies()
      Permet de simuler toutes les intéractions des objets.
      Overrides:
      simulateAllBodies in class Simulator
    • main

      public static void main​(java.lang.String[] args)
      Méthode principale.
      Parameters:
      args - Arguments passés dans le terminal