J'essaie de calculer l'angle de mouvement d'un sprite en C++.Calcul des coordonnées d'un sprite en C++
Bien que pour le moment j'utilise simplement la console pour sortir mes résultats.
Mon problème est que lorsque Mes résultats sont affichés dans la console, je ne peux pas obtenir l'axe x pour entrer dans les nombres négatifs.
Malheureusement, je viens juste d'apprendre à propos du trig de base, donc je ne sais pas si je ne fais pas mes maths.
Par exemple: Si je choisis mon angle que 270 et ma vitesse 1, la console affiche les nouvelles coordonnées que (1, -1) quand je pensais qu'il devrait être (-1,0)
De même si j'essaye mon angle comme -90 et ma vitesse comme 1 je reçois (0, -1)
Est-ce juste que x ne peut pas entrer dans des nombres négatifs?
Ou est-ce que je fais une erreur fondamentale?
Mon code est ci-dessous - Donc, si quelqu'un pouvait signaler ce que je fais mal, il serait grandement apprécié.
#include <iostream>
#include <cmath>
using namespace std;
const float PI = 3.14159265;
class sprite {
public:
int x;
int y;
int angle;
int speed;
sprite();
};
sprite::sprite() {
x = 0;
y = 0;
angle = 0;
speed = 0;
}
int main() {
int userInput = 0;
sprite mySprite;
cout << "Starting co-ordinates: (" << mySprite.x << "," << mySprite.y << ")\n\n";
while(userInput != 999) {
cout << "Angle to move: ";
cin >> userInput;
mySprite.angle = userInput;
cout << "Speed to move at: ";
cin >> userInput;
mySprite.speed = userInput;
mySprite.x += ceil(cos(mySprite.angle*PI/180)*mySprite.speed);
mySprite.y += ceil(sin(mySprite.angle*PI/180)*mySprite.speed);
cout << "\n\n";
cout << "New co-ordinates: (" << mySprite.x << "," << mySprite.y << ")\n\n";
}
return 0;
}
Merci beaucoup de votre extrait de code et le lien vers le guide Arithmétique à virgule flottante. Étant nouveau à ce que c'était une lecture très utile et intéressante en effet. –