C++ 围绕某一点的点角

C++ 围绕某一点的点角,c++,rotation,geometry,angle,C++,Rotation,Geometry,Angle,我已经做了一些关于从某个点和问题以某个角度旋转一个点的调查:到目前为止,我已经得出了以下结论,但它并没有给我正确的结果,有人能找出问题吗 const float angle = -90.0; const float degreePerRadian = 57.2957795; const float s = sin(angle / degreePerRadian); const float c = cos(angle / degreePerRadian); int p1x = 320; int p

我已经做了一些关于从某个点和问题以某个角度旋转一个点的调查:到目前为止,我已经得出了以下结论,但它并没有给我正确的结果,有人能找出问题吗

const float angle = -90.0;
const float degreePerRadian = 57.2957795;
const float s = sin(angle / degreePerRadian);
const float c = cos(angle / degreePerRadian);
int p1x = 320;
int p1y = 480;
int p2x = 320;
int p2y = 320;

float centerX = (p2x - p1x) / 2 + p1x;
float centerY = (p2y - p1y) / 2 + p1y;
p2x -= centerX;
p2y -= centerY;
double newX = centerX + (p2x * c - p2y * s);
double newY = centerY + (p2x * s + p2y * c);
我得到:newX=240和newY=400

编辑: 不过我有一架奇怪的飞机

                                |
                                |    ^
                                |    |
                                |
       -------> ^ (320, 480)    |   (y+)
            90° |               |    |
                |               |    |
                |               |
                . (320, 320)    |
                                |
                                |
      --------------------------(0,0)
                <-- (x+) --

链接中的第16行代码不正确。应该是:


双新Y=centerY+(p2x*s++p2y*c)

是否使用弧度值?据我记忆所及,大多数正/反函数期望它们以弧度为单位。@Losiowaty好的,如果我将它从弧度改为度数,我得到(-160,2.87183e-07)不,弧度是好的:)这只是我想到的第一个问题。这应该会有帮助:不,没有帮助,这是代码
                (x+) --->
     (0,0) --------------------------
     |
     |
     |      . (320, 320)
     |      |
     |      |
     |      | 90°
     |      . (320, 480)----------
     |
     |
(y+) |
     |
     |