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 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). -
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 math_physics.physics.Simulator
addBody, addBody, addBody, addRandomBody, generateDouble, generateVector3D, getBodies, getDeltaTime, getNumberBody, getTotalMass, removeBody, run, search, setDeltaTime
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
-
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:
simulateAllBodies
in classSimulator
-
main
public static void main(java.lang.String[] args)Méthode principale.- Parameters:
args
- Arguments passés dans le terminal
-