2014-01-16 67 views
0

基本上,我有一個使用SDL 2.0呈現的精靈,我可以使用SDL_RenderCopyEx()順時針旋轉紋理的中心點或點的可變數量。我想通過使用我的物理斜坡線與基於我的基線的兩條直線之間的角度x來基於鼠標位置旋轉它。我所說的基線可以用數學表示爲x = orgin_x,其中orgin_x是旋轉orgin。另一條線是沿着基線的線段,它將水平線端點垂直連接到orgin_x點。與鼠標光標的角度是我想要找到旋轉角色的角度。如何根據鼠標位置旋轉精靈?

請不要複雜的數學符號。我寧願將公式以C風格格式發佈,並且請解釋數學背後的邏輯,以便我可以瞭解發生的情況並在需要時解決類似的未來問題。

+0

so you w螞蟻指着一個精靈在鼠標?或者我誤解了這個問題 – BWG

+0

是的,我想讓精靈面向鼠標。 – Name

回答

2

一些基本的三角學。你可以使用atan2(delta_y,delta_x)。有了這個,你將在RAD中獲得你的角度。爲了獲得你的角度,因爲RenderCopyEx使用Degree作爲角度,你需要轉換你的角度。你有360度和2 * PI Rad一整圈。所以

angle_deg =(ATAN2(delta_y,delta_x)* 180.0000)/3.1416

現在,你有你的角度做一個RenderCopyEx

BTW:

delta_y = origin_y - mouse_y

AND

delta_x = origin_x - mouse_x

+0

任何原因你有180四個零? – BWG

+0

爲了獲得更好的精度和180.0,編譯器知道該數字是一個雙精度數,而不是一個整數。 – jordsti