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哦,对了><我是个白痴