**已关闭。**此问题为not reproducible or was caused by typos。当前不接受答案。
这个问题是由打字错误或无法再重现的问题引起的。虽然类似的问题在这里可能是on-topic,但这个问题的解决方式不太可能帮助未来的读者。
昨天关门了。
Improve this question
所以我有这样的代码:
double calculateX(double x, double y, double unghi) { // calculate new x after rotation
return (x * cos(unghi) - y * sin(unghi));
}
double calculateY(double x, double y, double unghi) { // calculate new y after rotation
return (x * sin(unghi) + y * cos(unghi));
}
double degreeToRadian(double degree) {
return degree * 3.14159 / 180;
}
double dist(double a, double b, double _a, double _b) { // distance between 2 points
double x = a - _a;
double y = b - _b;
return sqrt(x * x + y * y);
}
int main() {
double degree, x, y;
cin >> x >> y >> degree;
double rad = degreeToRadian(degree); // calculate radians of said degree
double _x = calculateX(x, y, rad); // new x after rotation
double _y = calculateY(x, y, rad); // new y after rotation
cout << _x << ' ' << _y << '\n';
cout << dist(x, y, 0, 0) << ' ' << dist(_x, _y, 0, 0);
return 0;
}
我只是试着把一个矢量旋转一些Angular ,但并不总是有效。
例如,如果我输入x=3,y=0,度=45,它会给出:
这是对的,因为:
但是如果我输入x=3,y=3,度=45,它给予:
这是不对的,因为新的x应该是0:
1条答案
按热度按时间ftf50wuq1#
我不知道2.81456e-06是2.81456 *(10的-6次方),所以程序是正确的。