我正在尝试计算C++精灵的运动角度。在C++中计算精灵的坐标
虽然目前我只是使用控制台输出我的结果。
我的问题是,当我的结果显示在控制台中时,我无法使x轴进入负数。
不幸的是,我只是刚刚了解基本的三角,所以我不知道我是否只是在做我的数学错误。
例如:如果选择我的角度为270和我的速度为1,控制台显示新的坐标为(1,-1)时,我认为它应该是(-1,0)
同样,如果我尝试我的角度为-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;
}
非常感谢您的代码片段和指向浮点运算指南的链接。对于这个新手来说,这确实是一个非常有用和有趣的阅读。 – 2010-10-16 20:19:43