c++ 为什么我的程序不能正确旋转2D矢量?[已关闭]

umuewwlo  于 2022-12-20  发布在  其他
关注(0)|答案(1)|浏览(133)

**已关闭。**此问题为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:

ftf50wuq

ftf50wuq1#

我不知道2.81456e-06是2.81456 *(10的-6次方),所以程序是正确的。

相关问题