C++ 围绕另一点旋转一点

C++ 围绕另一点旋转一点,c++,math,rotation,C++,Math,Rotation,我试图通过一个角度标准的问题,围绕一个中心点旋转一个点。我看过很多关于这方面的帖子,但我无法让我的实现正常工作: void Point::Rotate(const Point Pivot, const float Angle) { if (Angle == 0) return; float s = sin(Angle); float c = cos(Angle); x -= Pivot.x

我试图通过一个角度标准的问题,围绕一个中心点旋转一个点。我看过很多关于这方面的帖子,但我无法让我的实现正常工作:

    void Point::Rotate(const Point Pivot, const float Angle)
    {
        if (Angle == 0)
            return;

        float s = sin(Angle);
        float c = cos(Angle);

        x -= Pivot.x;
        y -= Pivot.y;

        x = (x * c) - (y * s) + Pivot.x;
        y = (x * s) + (y * c) + Pivot.y;
    }
这是我的代码,例如,我从许多来源收集的逻辑,以及

据我所知,它应该会起作用。然而,当我将其应用于旋转时,例如,点(0,100)围绕(0,0)旋转90度(Pi/2被赋予函数),旋转的点显然在(-100,-100);100像素,低于它应该在的位置

当试图画一个圆(36点)时,它会产生一个模糊的心形。它看起来像是我看到的一个图形,我想它是在极坐标系下的——我需要把我的点转换成笛卡尔坐标系还是什么

有人能发现我的代码有什么错误吗


编辑:很抱歉,此函数是点类的成员函数-
x
y
是成员变量:/

您就快到了,但是您在最后一行的下一行修改了
x
,这意味着输入
y
计算的坐标值不正确

相反,为新的
x
y
使用临时变量,然后在以下位置添加
Pivot
坐标:

double nx = (x * c) - (y * s);
double ny = (x * s) + (y * c);

x = nx + Pivot.x;
y = ny + Pivot.y;

就快到了,但在最后一行的下一行修改了
x
,这意味着输入
y
计算的坐标值不正确

相反,为新的
x
y
使用临时变量,然后在以下位置添加
Pivot
坐标:

double nx = (x * c) - (y * s);
double ny = (x * s) + (y * c);

x = nx + Pivot.x;
y = ny + Pivot.y;

就快到了,但在最后一行的下一行修改了
x
,这意味着输入
y
计算的坐标值不正确

相反,为新的
x
y
使用临时变量,然后在以下位置添加
Pivot
坐标:

double nx = (x * c) - (y * s);
double ny = (x * s) + (y * c);

x = nx + Pivot.x;
y = ny + Pivot.y;

就快到了,但在最后一行的下一行修改了
x
,这意味着输入
y
计算的坐标值不正确

相反,为新的
x
y
使用临时变量,然后在以下位置添加
Pivot
坐标:

double nx = (x * c) - (y * s);
double ny = (x * s) + (y * c);

x = nx + Pivot.x;
y = ny + Pivot.y;


最后一行中使用的
x
值是多少?@OliverCharleswoth谢谢你指出这一点,editedI我想你没有领会我的意思!最后一行使用的值为
x
;该值在哪里计算?@OliverCharlesworth这是当前的x位置-成员变量。不知道该怎么解释?@OliverCharlesworth噢,对了><我是个白痴,
x
的值在最后一行中被使用了吗?@OliverCharlesworth谢谢你指出这一点,editedI我想你没有领会我的意思!最后一行使用的值为
x
;该值在哪里计算?@OliverCharlesworth这是当前的x位置-成员变量。不知道该怎么解释?@OliverCharlesworth噢,对了><我是个白痴,
x
的值在最后一行中被使用了吗?@OliverCharlesworth谢谢你指出这一点,editedI我想你没有领会我的意思!最后一行使用的值为
x
;该值在哪里计算?@OliverCharlesworth这是当前的x位置-成员变量。不知道该怎么解释?@OliverCharlesworth噢,对了><我是个白痴,
x
的值在最后一行中被使用了吗?@OliverCharlesworth谢谢你指出这一点,editedI我想你没有领会我的意思!最后一行使用的值为
x
;该值在哪里计算?@OliverCharlesworth这是当前的x位置-成员变量。“不知道还能怎么解释呢?”@OliverCharlesworth哦,对了><我是个白痴