Accueil

TODO section


U.W.R project

Download Section

ScreenShots

Contact Section

Member Section


Untitled Document
Dynamique du véhicule
   
 

I Première approche

II Deuxième approche

 
Première approche

Les lois de la physique n’existe pas dans notre monde virtuel, c’est à nous de les créer. La méthode que nous allons déployer est la suivante :

  • Déterminer les forces qui s'appliquent sur le chacune des parties du système : {chassis + 4 roues + moteur}.
  • Appliquer le principe fondamentale de la dynamique.
  • Intégrer l'ensemble et déterminer la nouvelle situation du véhicule.
 

Les référenciels: c'est une des choses les plus importantes. Première le référenciel du monde virtuel est :

Comme vous pouvez le constater, le repère du monde virtuel est orienté main gauche, il faudra donc garder en mémoire que les produits scalaires et vectoriels ne donneront pas les même résultats. Il serait trop coûteut de faire une conversion à chaque itération, donc on reste en repère main gauche. Donc soit alpha l'angle de rotation autour de Ywc (wc = world coordinate) on aura :

Xcc = Xwc * cos( alpha+Pi/2) + Ywc * sin(alpha - Pi/2)

Ycc = Ywc * cos( alpha+Pi/2) - Xwc * sin(alpha - Pi/2)

Voilà pour ce qui est du monde, passons au repére lié au véhicule :



Dans ce repère Zcc (cc = car coordinate) pointe vers nous, donc on est en repère main droite, comme c'est un repère tampon on peut ce le permettre. C'est à dire, à la différence du repère précédent ici on ne fera que des calculs liés à la physique du véhicule, alors que dans le l'autre repère est utilisé par tous les modules du jeu ( affichage graphique, gestion des caméras...) si on souhaite modifier le répère lié au monde, autant choisir une autre librairie que directx (ou opengl d'ailleur). On utilise les notations suivantes :

l = demi largeur du véhicule, distance entre le centre de gravité et les partie latérales du chassis.
L1 = distance entre le centre de gravité et l' avant du chassis.
L2 = distance entre le centre de gravité et l' arrière du chassis.
L2+L1 = longueur totale du véhicule.
2 * l = largeur totale du véhicule.

Première approximation : on considère que l'essieu des roues avant est situé au niveau de l'avant du véhicule et idem pour l'arrière. Même si ce n'est pas le cas au niveau graphique.

Maintenant passons au repère lié aux roues :

 

On notera beta l'angle de braquage des roues, ici la matrice de changement est plus simple :

Xwr[i] = Xw[i] * cos(beta) + Yw[i] * sin(beta)

Ywr[i] = Yw[i] * cos(beta) - Xw[i] * sin(beta)

avec i = {1,2,3,4} , Xw[i] = Xcc et Yw[i] = Ycc en terme de vecteur.

Bon maintenant, on a tout ce qu'il nous faut pour passer à la suite.

 

La problèmatique:

Maintenant il faut déterminer les forces appliquées à notre véhicule, mais comment faire:

  1. Tout d'abord on va isoler le moteur, comme ca on déterminera ca vitesse de rotation et le couple qu'il génère.
  2. Ensuite on isole les roues, on pourra ainsi déterminer les forces qui s'appliqueront sur le chassis
  3. Finalement on isole le chassis et on applique les forces issuent des roues plus les forces de frottement de l'air et autres résistances.

Tout à l'air assez simple vu comme ca, mais pour déterminer la vitesse de rotation du moteur, il nous faut celle des roues et pour avoir celle des roues il nous faut le couple moteur ... on tourne un peu en rond, donc on aura des équations différenciels qu'il faudra résoudre avec des méthodes numériques.

 
 
 
Bilan des forces: en cours d'élaboration.
Equations de la dynamique: en cours d'élaboration.
Intégration: en cours d'élaboration.
 
Deuxième approche

Space partitioning :

Collision Detection :

Collision Reaction :

http://www.d6.com/users/checker/dynamics.htm