我正在尝试计算 C++ 中精灵的移动角度。
虽然目前我只是使用控制台来输出我的结果。
我的问题是,当我的结果显示在控制台中时,我无法让 x 轴变为负数。
不幸的是,我刚刚学习了基本的三角函数,所以我不知道我是否只是做错了数学。
例如:如果我选择我的角度为 270,我的速度为 1,当我认为它应该是 (-1,0) 时,控制台将新坐标显示为 (1,-1)
同样,如果我尝试将角度设为 -90,速度设为 1,我会得到 (0,-1)
只是x不能变成负数吗?
还是我犯了一个根本性的错误?
我的代码在下面-因此,如果有人能指出我做错了什么,将不胜感激。
#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;
}