Bonjour,
Dans le cadre d'un projet scolaire, je dois modéliser des organismes (entités) qui évoluent dans un aquarium. Le tout en 3D.
Mon problème se situe au niveau du rebond sur les bords de l'aquarium.
Une fois que j'ai détecté que l'entité est au bord de l'aquarium, je cherche à calculer le quaternion qui représente sa nouvelle orientation après avoir rebondi.
Et c'est là que je bloque, impossible de trouver la formule pour obtenir q après le rebond.
Sachant que mes entités possèdent :
- Une position (Vecteur3D(x, y, z))
- Une orientation (Quaternion)
- Une Vitesse (Réel)
Voici ma fonction de mouvement :
Code C++ : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 void Move() { double dt = GetTime() - lastUpdate; // ... // Récupération du vecteur normal au plan de collision // Si collision il y a -> isColliding = true // ... if (isColliding) { // Calcul de la nouvelle orientation ??? // ---- partie manquante ---- } position += orientation * Vector3::UNIT_Z * speed * dt; }
Voilà, j'espère avoir bien expliqué la situation... Merci de m'aider à résoudre ce problème
Partager