Package physique
Class MoteurPhysique
java.lang.Object
physique.MoteurPhysique
Cette classe regroupe les calculs physiques nécessaires au mouvement des
divers objets dans la scène. Utilise entre autres la méthode d'intégration
numérique d'Euler semi-implicite.
Les méthodes de collision sont déléguées à CollisionPhysique.
Les méthodes de force sont déléguées à ForcePhysique.
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionstatic Vecteur2DappliqueForceVersBas(double masse) Applique une force constante, vers le bas, sur un vaisseaustatic Vecteur2DappliqueForceVersDroite(double masse) Applique une force constante, vers la droite, sur un vaisseaustatic Vecteur2DappliqueForceVersGauche(double masse) Applique une force constante, vers la gauche, sur un vaisseaustatic Vecteur2DappliqueForceVersHaut(double masse) Applique une force constante, vers le haut, sur un vaisseaustatic Vecteur2DcalculAcceleration(Vecteur2D sommeDesForces, double masse) Calcule et retourne l'accélération en utilisant F = mastatic Vecteur2DcalculForceElectriqueGenereeParPlaque(Vaisseau vaisseau, PlaqueChargee plaque) Calcule le force électrique d'une plaque sur un vaisseaustatic Vecteur2DcalculForceFrottement(Vaisseau vaisseau, Vecteur2D sommeForcesSurVaisseau) Calcule et retourne un vecteur exprimant la force de frottementstatic Vecteur2DcalculForceGravEnX(Vecteur2D forceGrav, double angleDeg) Calcule la composante en X de la force gravitationnellestatic Vecteur2DcalculForceGravEnY(double masse) Calcule la force gravitationnellestatic Vecteur2DcalculForceNormale(Vaisseau vaisseau, Segment segment) Calcule la force normale s'appliquant sur le vaisseaustatic Vecteur2DcalculPosition(double deltaT, Vecteur2D position, Vecteur2D vitesse) Calcule et retourne la nouvelle position d'un objet selon la méthode d'Euler semi-implicitestatic Vecteur2DcalculVitesse(double deltaT, Vecteur2D sommeDesForces, double masse, Vecteur2D vitesse) Calcule et retourne la nouvelle vitesse d'un objet en utilisant F = ma et la méthode d'Euler semi-implicitestatic Vecteur2DcalculVitesse(double deltaT, Vecteur2D vitesse, Vecteur2D accel) Calcule et retourne la nouvelle vitesse d'un objet en appliquant la méthode d'Euler semi-implicite à partir de l'accélération déjà calculéestatic booleandetecteCollisionsAvecObjetsSpeciaux(Vaisseau vaisseau, Tuile objetSpecial) Vérifie si le vaisseau entre en collision avec un objet spécialstatic Vecteur2DdetectionCollisionAvecCoinEtCalculeVitesse(Vaisseau vaisseau, Point2D.Double coin) Détecte une collision entre le vaisseau et un coinstatic Vecteur2DdetectionCollisionsAvecPlaqueEtCalculeVitesse(Vaisseau vaisseau, PlaqueChargee plaque) Détecte une collision entre le vaisseau et une plaquestatic Vecteur2DdetectionCollisionsAvecSegmentEtCalculeVitesse(Vaisseau vaisseau, Segment segment) Détecte une collision entre le vaisseau et un segmentstatic Vecteur2DdetectionCollisionsBorduresEtCalculVitesse(Vaisseau vaisseau, double largeurComposant, double hauteurComposant) Détecte une collision avec les bordures de la zone d'animationstatic doubleRetourne l'accélération gravitationnellestatic doubleRetourne l'accélération gravitationnelle initialestatic doubleRetourne le coefficient de frottement cinétiquestatic doubleRetourne le coefficient de frottement cinétique initialstatic doubleRetourne le coefficient de frottement statiquestatic doubleRetourne le coefficient de frottement statique initialstatic voidRéinitialise les coefficients de frottement et l'accélération gravitationnellestatic voidsetAccelGrav(double accelGrav) Modifie l'accélération gravitationnellestatic voidsetCoeffFrotCine(double coeffFrotCine) Modifie le coefficient de frottement cinétiquestatic voidsetCoeffFrotStat(double coeffFrotStat) Modifie le coefficient de frottement statique
-
Constructor Details
-
MoteurPhysique
public MoteurPhysique()
-
-
Method Details
-
calculAcceleration
Calcule et retourne l'accélération en utilisant F = ma- Parameters:
sommeDesForces- Somme des forces appliquéesmasse- Masse de l'objet- Returns:
- L'accélération F/m
- Throws:
Exception- Erreur si la masse est pratiquement nulle
-
calculPosition
Calcule et retourne la nouvelle position d'un objet selon la méthode d'Euler semi-implicite- Parameters:
deltaT- Pas de la simulation (en secondes)position- La position de l'objetvitesse- La vitesse de l'objet (après l'application de Euler semi-implicite et après la détection de collision)- Returns:
- La nouvelle position
-
calculVitesse
public static Vecteur2D calculVitesse(double deltaT, Vecteur2D sommeDesForces, double masse, Vecteur2D vitesse) throws Exception Calcule et retourne la nouvelle vitesse d'un objet en utilisant F = ma et la méthode d'Euler semi-implicite- Parameters:
deltaT- Pas de la simulation (en secondes)sommeDesForces- Somme des forces appliquéesmasse- Masse de l'objetvitesse- La vitesse de l'objet- Returns:
- La nouvelle vitesse
- Throws:
Exception- Erreur si la masse est pratiquement nulle
-
calculVitesse
Calcule et retourne la nouvelle vitesse d'un objet en appliquant la méthode d'Euler semi-implicite à partir de l'accélération déjà calculée- Parameters:
deltaT- Pas de la simulation (en secondes)vitesse- La vitesse actuelle de l'objetaccel- L'accélération de l'objet- Returns:
- La nouvelle vitesse
-
appliqueForceVersBas
Applique une force constante, vers le bas, sur un vaisseau- Parameters:
masse- La masse du vaisseau- Returns:
- La force appliquée sur le vaisseau
-
appliqueForceVersDroite
Applique une force constante, vers la droite, sur un vaisseau- Parameters:
masse- La masse du vaisseau- Returns:
- La force appliquée sur le vaisseau
-
appliqueForceVersGauche
Applique une force constante, vers la gauche, sur un vaisseau- Parameters:
masse- La masse du vaisseau- Returns:
- La force appliquée sur le vaisseau
-
appliqueForceVersHaut
Applique une force constante, vers le haut, sur un vaisseau- Parameters:
masse- La masse du vaisseau- Returns:
- La force appliquée sur le vaisseau
-
calculForceElectriqueGenereeParPlaque
public static Vecteur2D calculForceElectriqueGenereeParPlaque(Vaisseau vaisseau, PlaqueChargee plaque) Calcule le force électrique d'une plaque sur un vaisseau- Parameters:
vaisseau- Objet représentant un vaisseauplaque- Objet représentant une plaque chargée- Returns:
- La force électrique générée par la plaque
-
calculForceFrottement
Calcule et retourne un vecteur exprimant la force de frottement- Parameters:
vaisseau- Objet représentant un vaisseausommeForcesSurVaisseau- Somme des forces parallèles- Returns:
- La force de frottement
-
calculForceGravEnX
Calcule la composante en X de la force gravitationnelle- Parameters:
forceGrav- Vecteur de la force gravitationnelleangleDeg- Angle de la surface avec l'horizontale- Returns:
- La force gravitationnelle selon l'axe x
-
calculForceGravEnY
Calcule la force gravitationnelle- Parameters:
masse- Masse de l'objet- Returns:
- La force gravitationnelle
-
calculForceNormale
Calcule la force normale s'appliquant sur le vaisseau- Parameters:
vaisseau- Objet représentant un vaisseausegment- Objet représentant un segment- Returns:
- La force normale
-
detectionCollisionAvecCoinEtCalculeVitesse
public static Vecteur2D detectionCollisionAvecCoinEtCalculeVitesse(Vaisseau vaisseau, Point2D.Double coin) Détecte une collision entre le vaisseau et un coin- Parameters:
vaisseau- Objet représentant le vaisseaucoin- Le coin d'un bloc- Returns:
- La nouvelle vitesse du vaisseau
-
detectionCollisionsAvecPlaqueEtCalculeVitesse
public static Vecteur2D detectionCollisionsAvecPlaqueEtCalculeVitesse(Vaisseau vaisseau, PlaqueChargee plaque) Détecte une collision entre le vaisseau et une plaque- Parameters:
vaisseau- Objet représentant le vaisseauplaque- Objet représentant une plaque chargée- Returns:
- La nouvelle vitesse du vaisseau
-
detectionCollisionsAvecSegmentEtCalculeVitesse
public static Vecteur2D detectionCollisionsAvecSegmentEtCalculeVitesse(Vaisseau vaisseau, Segment segment) Détecte une collision entre le vaisseau et un segment- Parameters:
vaisseau- Objet représentant le vaisseausegment- Objet représentant un segment- Returns:
- La nouvelle vitesse du vaisseau
-
detectionCollisionsBorduresEtCalculVitesse
public static Vecteur2D detectionCollisionsBorduresEtCalculVitesse(Vaisseau vaisseau, double largeurComposant, double hauteurComposant) Détecte une collision avec les bordures de la zone d'animation- Parameters:
vaisseau- L'objet représentant un vaisseaulargeurComposant- La largeur de la zone d'animationhauteurComposant- La hauteur de la zone d'animation- Returns:
- La nouvelle vitesse du vaisseau
-
detecteCollisionsAvecObjetsSpeciaux
Vérifie si le vaisseau entre en collision avec un objet spécial- Parameters:
vaisseau- Un objet représentant le vaisseauobjetSpecial- Une tuile représentant un objet spécial- Returns:
- vrai si le vaisseau est en collision
-
getAccelGrav
public static double getAccelGrav()Retourne l'accélération gravitationnelle- Returns:
- L'accélération gravitationnelle
-
getAccelGravInitiale
public static double getAccelGravInitiale()Retourne l'accélération gravitationnelle initiale- Returns:
- L'accélération gravitationnelle initiale
-
getCoeffFrotCine
public static double getCoeffFrotCine()Retourne le coefficient de frottement cinétique- Returns:
- Le coefficient de frottement cinétique
-
getCoeffFrotCineInitial
public static double getCoeffFrotCineInitial()Retourne le coefficient de frottement cinétique initial- Returns:
- Le coefficient de frottement cinétique initial
-
getCoeffFrotStat
public static double getCoeffFrotStat()Retourne le coefficient de frottement statique- Returns:
- Le coefficient de frottement statique
-
getCoeffFrotStatInitial
public static double getCoeffFrotStatInitial()Retourne le coefficient de frottement statique initial- Returns:
- Le coefficient de frottement statique initial
-
reinitialiser
public static void reinitialiser()Réinitialise les coefficients de frottement et l'accélération gravitationnelle -
setAccelGrav
public static void setAccelGrav(double accelGrav) Modifie l'accélération gravitationnelle- Parameters:
accelGrav- La nouvelle accélération gravitationnelle
-
setCoeffFrotCine
public static void setCoeffFrotCine(double coeffFrotCine) Modifie le coefficient de frottement cinétique- Parameters:
coeffFrotCine- Le nouveau coefficient de frottement cinétique
-
setCoeffFrotStat
public static void setCoeffFrotStat(double coeffFrotStat) Modifie le coefficient de frottement statique- Parameters:
coeffFrotStat- Le nouveau coefficient de frottement statique
-