2D で別の点を中心に点を回転する
コンピュータ グラフィックスでは、特定の点を中心にオブジェクトを回転するのが一般的な操作です。この場合、Allegro API を使用してカードの 4 隅の点を回転することを目的としています。これを実現するには、次のアプローチを検討してください。
回転点関数数
rotate_point という関数を実装して、目的の方法で回転操作を実行できます。次のパラメータを取ります:
実装:
rotate_point 関数は、最初に指定された点 p からピボット ポイントを減算します。これにより、点が座標系の原点に移動します。次に、回転角度のサインとコサインを使用して回転を実行します。最後に、回転した点を取得するためにピボット ポイントを再度追加します。
コード:
POINT rotate_point(float cx, float cy, float angleInRads, POINT p) { float s = sin(angleInRads); float c = cos(angleInRads); // translate point back to origin: p.x -= cx; p.y -= cy; // rotate point float xnew = p.x * c - p.y * s; float ynew = p.x * s + p.y * c; // translate point back: p.x = xnew + cx; p.y = ynew + cy; return p; }
この回転をカードの 4 隅の点に適用することで、衝突検出に使用できる回転ポリゴンを作成できます。
以上がAllegro を使用して 2D で別の点を中心に点を回転するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。