作者jellyice (寒若冬)
看板GameDesign
標題[請益] 2D遊戲數學,求旋轉角度
時間Sat Mar 1 15:42:55 2014
高中數學學太差,最近在做個小遊戲時心有餘而力不足
所以來請教一下大家,希望有人能幫忙解惑一下,感激不盡
大致來說,問題是這樣的:
我有個矩形,中心點在原點(0,0),是被釘死的,會繞著中心點旋轉,但不會移動
使其旋轉的方式,是點擊矩形上某一點,然後拖曳旋轉
當拖曳時拖到超過矩形範圍時
我期望這個矩形可以旋轉到目標點與旋轉過後的初始點擊點的連線平行於矩形的較長邊
想請問這個旋轉角度該怎麼求?
這樣講可能有點模糊,我舉個實例:
假設矩形是100x30的大小,中心點在(0,0),一開始的角度是水平的
採用的座標系是往右往上增加x、y值
也就是說,一開始矩形四個角的座標是:
左下(-50, -15)
右下(50, -15)
右上(50, 15)
左上(-15, 15)
現在我點擊在(45, 10)的地方,然後拖曳到(70, 40)的地方
那麼我會期待它旋轉角度θ,使得初始點擊點從(45, 10)旋轉到點(a, b)
使得目標點(70, 40)與點(a, b)的連線,可以平行於矩形邊長為100的那條邊
當然,就矩形的本地座標系來說,點(a, b)跟點(45, 10)是同一個點
只是我連點(a, b)的世界座標都算不出來,只好用(a, b)代替…
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.41.96.114
推 cjcat2266:這樣設計怪怪的耶,通常不是讓點擊點與滑鼠連線通過旋轉 03/01 16:03
→ cjcat2266:軸嗎? 03/01 16:03
→ cjcat2266:就是讓使用者感覺有條隱形的繩子把點擊點往外拉 03/01 16:04
→ cjcat2266:這樣就是θ = atan2(mouseX, mouseY) 03/01 16:06
→ cjcat2266: -atan2(clickX, clickY); 03/01 16:07
→ cjcat2266:打錯,X和Y對調 03/01 16:07
→ cjcat2266:如果θ是多個frame漸變,那要注意往小於180度的方向轉 03/01 16:08
→ jellyice:嗯…因為實際上轉完角度後,還會平移過去,所以跟隱形繩 03/01 23:49
→ jellyice:子不太一樣 03/01 23:49