首頁 > 後端開發 > C++ > 如何在二維空間中圍繞另一個點旋轉一個點?

如何在二維空間中圍繞另一個點旋轉一個點?

Susan Sarandon
發布: 2024-12-09 18:21:10
原創
533 人瀏覽過

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

二維空間中一個點圍繞另一個點旋轉

為了創建紙牌呈扇形展開的紙牌遊戲,個人遇到確定哪張卡位於遊標下方的困境。這種困境需要一種方法來旋轉卡片的四個頂點以形成多邊形以進行碰撞檢測。

為了促進這種旋轉,Allegro API 提供了一個方便的函數:

al_draw_rotated_bitmap(OBJECT_TO_ROTATE, CENTER_X , CENTER_Y, X, Y, DEGREES_TO_ROTATE_IN_RADIANS)

但是,要手動計算旋轉點,就需要設計一個函數:

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

其中(cx,cy)表示樞軸點,angle表示逆時針旋轉角度, 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 平面上的任何樞軸點旋轉點。

以上是如何在二維空間中圍繞另一個點旋轉一個點?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板