Je construis un petit moteur de physique qui lance un projectile avec une vélocité donnée, une vitesse de gravité et un intervalle de temps, et suit et affiche les vecteurs de vitesse/position à chaque intervalle de temps.3D Projectile - erreur de calcul sur X & Z?
Actuellement, lorsque j'exécute mon programme, mes coordonnées y
se mettent à jour correctement. Cependant mes coordonnées x
et z
agissent de la même manière, et je suis à peu près sûr que mes calculs de coordonnées z
sont incorrects. (Mais je peux me tromper)
Ce problème est le même pour les vecteurs de position et de vitesse sur les axes x
et z
.
Voici mon code:
include <iostream>
using namespace std;
struct velocityVector {
float vx = 10.0;
float vy = 14.14;
float vz = 10.0;
};
struct gravityVector {
float gx = 0.0;
float gy = -9.81;
float gz = 0.0;
};
struct positionVector {
float px = 0;
float py = 0;
float pz = 0;
};
int main() {
float deltaT = 0.01;
positionVector posAccess; // object for positionVectors
gravityVector gravAccess; // object for gravityVectors
velocityVector velAccess; // object for velocityVectors
while (deltaT < 1) {
deltaT += 0.01; // increment deltaT
cout << "Velocity vector = ";
// Display Velocity x,y,z
cout << velAccess.vx << " ";
cout << velAccess.vy << " ";
cout << velAccess.vz << " ";
cout << '\n';
cout << "Position vector = ";
// Display Position x,y,z
cout << posAccess.px << " ";
cout << posAccess.py << " ";
cout << posAccess.pz << " ";
cout << '\n' << endl;
// Update Velocity
velAccess.vx += deltaT * gravAccess.gx;
velAccess.vy += deltaT * gravAccess.gy;
velAccess.vz += deltaT * gravAccess.gz;
// Update Position
posAccess.px += deltaT * velAccess.vx;
posAccess.py += deltaT * velAccess.vy;
posAccess.pz += deltaT * velAccess.vz;
getchar(); // so I can go through each interval manually
}
}
Si ça aide. Voici ma tâche:
Une trajectoire en 3D pour un projectile qui a un vecteur de vitesse de lancement de (10.0,14.14, - 10.0). Pas de temps = 0,01 seconde. Le vecteur de gravité est (0,0, -9,81, 0,0).
Afficher les vecteurs de position et vecteurs de vitesse sur une console à des fins de démonstration.
Pourquoi le résultat est-il suspect? – user2864740
Votre tâche indique que la vélocité Z doit être de -10,0 mais que votre code a la valeur 10,0 (donc, bien sûr, elle agit de la même manière que la vélocité de 10,0 X). – TheUndeadFish