我已经做了一些调查,从特定点开始以某个角度旋转一个点,然后问题:C++: Rotating a vector around a certain point我到目前为止已经提出了以下但是它没有给我正确的结果,有人可以确定问题
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+) --
如果并且我想找到该点(320,480)的90度角,如果线向左和向右倾斜
事实上更为精确的是平原是倒置的(基本上我使用的是QGraphicsScene,所以左上角是0,0,右下角是宽度(),高度()
(x+) --->
(0,0) --------------------------
|
|
| . (320, 320)
| |
| |
| | 90°
| . (320, 480)----------
|
|
(y+) |
|
|
答案 0 :(得分:1)
来自链接的第16行代码不正确。它应该是:
double newY = centerY +(p2x * s + p2y * c);