Search this site
Embedded Files
Mon BBC SDL pas à pas
  • Accueil
  • BBC BASIC
  • BBC OS
  • BBC MODULES
  • RUBRIQUES
  • LIENS
Mon BBC SDL pas à pas
  • Accueil
  • BBC BASIC
  • BBC OS
  • BBC MODULES
  • RUBRIQUES
  • LIENS
  • More
    • Accueil
    • BBC BASIC
    • BBC OS
    • BBC MODULES
    • RUBRIQUES
    • LIENS

⇨ MENU ⇨ BIBLIOTHEQUE ⇨ box2dlib.bbc

FN_b2DynamicBody()

DESCRIPTION.


La fonction FN_b2DynamicBody() créer un corps dynamique mais sans forme définie, pour le moteur physique Box2D.




SYNTAXE.


kboite = FN_b2DynamicBody( monde , abscisse , ordonnee , angle , horizontal , vertical , rotation , frein , ralenti )




REMARQUES.


monde doit être l'identifiant de la variable ayant reçu la valeur retournée par l'appel de la fonction FN_b2CreateWorld() et qui indique donc le monde physique dans lequel on crée le corps.


abscisse doit être une valeur numérique, indiquant l'abscisse initiale du centre du corps.


ordonnee doit être une valeur numérique, indiquant l'ordonnée initiale du centre du corps.


angle doit être une valeur numérique, indiquant la valeur de l'inclinaison initiale horizontale du corps, en radians.


horizontal doit être une valeur numérique, indiquant la vitesse linéaire initiale, ou vélocité, horizontale m/s : si horizontal est : 

- positif, le corps se déplace vers la droite, dès sa création ;

- négatif, le corps se déplace vers la gauche, dès sa création ;

- nul, le corps n'a pas de mouvement horizontal.


vertical doit être une valeur numérique, indiquant la vitesse linéaire initiale, ou vélocité, vertical  rad/s : si vertical est : 

- positif, le corps se déplace vers le haut, dès sa création ;

- négatif, le corps se déplace vers le bas, dès sa création ;

- nul, le corps n'a pas de mouvement vertical.


rotation doit être une valeur numérique, indiquant la vitesse de rotation initiale en rad/s.


frein doit être une valeur numérique, indiquant la diminution de la vitesse linéaire, horizontale et verticale.


ralenti doit être une valeur numérique, indiquant la diminution de la vitesse de rootation.


Note : frein et ralenti sont des coefficients de dissipation sans unité. Leurs valeurs représentent une proportion de vitesse retirée à chaque seconde, et ils sont appliqués exponentiellement et non linéairement. Plus ces valeurs sont élevées et plus la vitesse décroît rapidement. Par exemple, si horizontal = 10 et frein = 0.1, la valeur de horizontal diminue de 10% chaque seconde, après 1 seconde (10 * exp(-0.1) ≈ 9.04), horizontal vaut maintenant 9.04 et après 5 secondes (10 * exp(-0.5) ≈ 6.06), horizontal vaut maintenant 6.06.



L'appel de la fonction FN_b2DynamicBody() retourne un identifiant du corps qui devra être utilisé comme paramètre dans les procédures et fonctions du module box2dlib.bbc. Il est indispensable de mémoriser cette valeur dans une variable.


La fonction FN_b2DynamicBody() fournit un moyen simple de créer un corps dynamique, mais pas sa forme, dans le moteur physique Box2D.  Les corps dynamiques sont utilisés pour tout ce qui doit bouger physiquement dans un monde, comme un personnage, un projectile, un véhicule, un objet ramassable, ... Pour Box2d un corps physique est complètement soumis aux lois de la mécanique newtonienne :

- il a une masse (calculée à partir des densités des fixtures) ;

- il subit des forces ;

- il subit la gravité ;

- il peut bouger librement ;

- il peut tourner ;

- il peut entrer en collision avec les autres corps ;

- il peut pousser et être poussé ;

- il est pris en compte dans la simulation complète (inertie, impacts, friction…) 


Le corps créé avec la fonction FN_b2DynamicBody() n’a aucune collision, ne touche rien, ne bloque rien et ne rebondit sur rien et ne peut interagir que comme point de simulation sans forme. Il sera donc qu'il soit nécessaire de faire appel à la séquence: b2BodyDef + b2PolygonShape + fixture.




Rappel : la procédure PROC_b2Init devra toujours être appelée avant tout autre fonction ou procédure de box2dlib.bbc.



La fonction FN_b2DynamicBody() est importée depuis le module box2dlib.bbc. 




RUBRIQUES.


Les dessins et les graphismes pour plus de détails sur la création de dessins et de graphismes.

La gestion des couleurs pour plus de détails sur la gestion des couleurs logiques et physiques.




EXEMPLE.


REM --- Importation des modules ---

REM --- Module de la bibliothèque BBC BASIC ---

INSTALL @lib$ + "box2dlib.bbc"


REM --- INITIALISATION GENERALE ---


REM --- Initialisation et création du monde ---

PROC_b2Init

kmonde = FN_b2CreateWorld( 0 , -9.81 )



REM --- Creation d'un projectile ---

REM --- position initiale x = 10, y = 5, angle = 0 ---

REM --- avec une vitesse linéaire horizontal (vers la droite) de 15 m/s ---

REM --- avec une vitesse linéaire vertical (vers le bas) de 50 cm/s ---

REM --- et une décélération de 2% par seconde ---

kprojectile = FN_b2DynamicBody( kmonde , 10 , 5 , 0 , 15 , -.5 , 0 , .02 , 0 )


REM --- Fermeture de box2dlib ---

PROC_b2Exit


REM --- Fin du programme ---

END

Votre aide est précieuse pour améliorer ce site, alors n'hésitez pas à faire part de

vos remarques, vos commentaires et de vos suggestions.

Dans la RETROGICIEL vous trouvez des suggestions simples et classiques pour

TESTER - DÉCOUVRIR - PRATIQUER - APPROFONDIR - EXPLORER

avec un exemple de résolution à télécharger pour vous inspirer.

Google Sites
Report abuse
Page details
Page updated
Google Sites
Report abuse