0

特定のポイントと質問から特定の角度でポイントを回転させることについていくつかの調査を行いました: C++: 特定のポイントを中心にベクトルを回転させる これまでに思いついたことがありましたが、正しい結果が得られません。誰か特定してください問題

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、右下が width()、height() です)

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

1 に答える 1

1

リンクの 16 行目のコードが正しくありません。そのはず:

double newY = centerY + (p2x * s + p2y * c);

于 2013-02-27T11:49:16.840 に答える