ホームページ > バックエンド開発 > C++ > 2D 空間で別の点を中心に点を回転するにはどうすればよいですか?

2D 空間で別の点を中心に点を回転するにはどうすればよいですか?

Susan Sarandon
リリース: 2024-12-09 18:21:10
オリジナル
610 人が閲覧しました

How to Rotate a Point Around Another Point in 2D Space?

2D 空間内の別の点を中心とした点の回転

カードが扇状に広がるカード ゲームを作成するために、個人が出会います。どのカードがカーソルの下にあるかを判断する際の苦境。この困難には、カードの 4 つの頂点を回転して衝突検出用の多角形を形成する手段が必要です。

この回転を容易にするために、Allegro API には便利な関数が用意されています。

al_draw_rotated_bitmap(OBJECT_TO_ROTATE, CENTER_X) 、センター_Y、X、Y、 DEGREES_TO_ROTATE_IN_RADIANS)

ただし、回転した点を手動で計算するには、関数を工夫する必要があります。

POINTrotate_point(float cx, float cy, float angle, POINT p)

ここで、(cx, cy) はピボット ポイントを表し、角度は反時計回りの回転を示します角度、p は回転する元の点です。

解決策の本質は、次の手順を実行することにあります。

  1. 点を原点に戻すと、次のようになります。 p.x -= cx および p.y -= cy.
  2. を利用して回転を実行します。方程式:

    • xnew = p.x * cos(角度) - p.y * sin(角度)
    • ynew = p.x * sin(角度) p.y * cos(角度)
  3. p.x = xnew cx を介して点を元の座標に戻します。 p.y = ynew cy.

このアプローチを適用すると、関数は 2D 平面上の任意のピボット ポイントを中心に点を効果的に回転できます。

以上が2D 空間で別の点を中心に点を回転するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート