⇨ MENU ⇨ BIBLIOTHEQUE ⇨ box2dlib.bbc
FN_b2KinematicBody()
⇨ MENU ⇨ BIBLIOTHEQUE ⇨ box2dlib.bbc
FN_b2KinematicBody()
DESCRIPTION.
La fonction FN_b2KinematicBody() créer un corps cinétique mais sans forme définie, pour le moteur physique Box2D.
SYNTAXE.
kboite = FN_b2KinematicBody( 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_b2KinematicBody() 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_b2KinematicBody() fournit un moyen simple de créer un corps cinétique, mais pas sa forme, dans le moteur physique Box2D. Les corps cinétique sont utilisés pour tout ce qui doit bouger automatiquement dans un monde, comme un tapis roulant, une plateforme mobile, un ascenseur, un bras rotatif, une porte coulissante, ... Pour Box2d un corps physique est complètement soumis aux lois de la mécanique newtonienne :
- ne subit aucune gravité ;
- ne calcule aucune dynamique ;
- sa vitesse est controlée directement ;
- les corps dynamiques rebondissent dessus mais ;
- les corps cinétiques ne réagisse pas aux collisions avec les corps dynamiques.
Le corps créé avec la fonction FN_b2KinematicBody() 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'une passerelle mobile ---
REM --- position initiale x = 10, y = 5, angle = 0 ---
REM --- avec une vitesse linéaire horizontal (vers la droite) de 15 m/s ---
ktapis = FN_b2KinematicBody( kmonde , 10 , 5 , 0 , 15 , 0 , 0 , 0 , 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
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.