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
-
Field Summary
Fields Modifier and Type Field Description private doublemaxDistanceDistance maximale du centre de la simulation.private doublethetaCorrespond à 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 booleanuseBarnesHutSimulationCorrespond 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). -
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 voidaddBodies(java.util.Collection<Body> bodiesToAdd)Permet d'ajouter un objet à la liste des objets appartenant au simulateur.voidaddBodies(Body... bodiesToAdd)Permet d'ajouter un objet à la liste des objets appartenant au simulateur.voidaddBody(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.voidaddBody(Body bodyToAdd)Permet d'ajouter un objet à la liste des objets appartenant au simulateur.voidaddRandomBody(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.doublegetMaxDistance()Permet de récupérer la valeur de la distance maximale.doublegetTheta()Permet de récupérer le paramètre Théta utilisé dans l'algorithme de Barnes-Hut.booleangetUseBarnesHutSimulation()Permet de savoir quel type de simulation est en cours d'utilisation.static voidmain(java.lang.String[] args)Méthode principale.javafx.scene.shape.SphereremoveBody(Body instance)Permet de supprimer un corps de la simulation.Bodysearch(java.lang.String name)Permet de retrouver un objet dans la simulation.voidsetMaxDistance(double newMaxDistance)Permet de remplacer la valeur de la distance maximale.voidsetTheta(double newTheta)Permet de changer la valeur du paramètre Théta.voidsetUseBarnesHutSimulation(boolean newValue)Permet de changer manuellement le type de simulation en cours d'utilisation.voidsimulateAllBodies()Permet de simuler toutes les intéractions des objets.voidtoggleUseBarnesHutSimulation()Permet de changer automatiquement le type de simulation en cours d'utilisation.Methods inherited from class math_physics.physics.Simulator
addBody, addBody, addBody, addRandomBody, generateDouble, generateVector3D, getBodies, getDeltaTime, getNumberBody, getTotalMass, removeBody, run, search, setDeltaTimeMethods 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
-
Field Details
-
useBarnesHutSimulation
private boolean useBarnesHutSimulationCorrespond 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 maxDistanceDistance maximale du centre de la simulation. -
theta
private double thetaCorrespond à 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éermassMax- Masse maximum pour créer les objetsradius- Rayon de la sphère pour l'affichagemaxDistance- Distance initiale maximale pour placer les objetsmaxVelocity- Vitesse initiale maximale pour déplacer les objetscolor- 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 objetsradius- Rayon de la sphère pour l'affichagemaxDistance- Distance initiale maximale pour placer les objetsmaxVelocity- Vitesse initiale maximale pour déplacer les objetscolor- 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'objetmass- Masse totale de l'objetradius- Rayon de l'objetposition- Coordonnées de la position de l'objetvelocity- Vitesse initiale de déplacement de l'objetcolor- Couleur à afficher sur la surface de sphère
-
addBody
Permet d'ajouter un objet à la liste des objets appartenant au simulateur.- Parameters:
bodyToAdd- Corps à ajouter à la liste
-
addBodies
Permet d'ajouter un objet à la liste des objets appartenant au simulateur.- Parameters:
bodiesToAdd- Collection de corps à ajouter à la liste
-
addBodies
Permet d'ajouter un objet à la liste des objets appartenant au simulateur.- Parameters:
bodiesToAdd- Suite de corps à ajouter à la liste
-
search
Permet de retrouver un objet dans la simulation.- Parameters:
name- Identifiant unique de l'objet recherché- Returns:
- Objet recherché
-
removeBody
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:
simulateAllBodiesin classSimulator
-
main
public static void main(java.lang.String[] args)Méthode principale.- Parameters:
args- Arguments passés dans le terminal
-