作者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
1F:推 cjcat2266:这样设计怪怪的耶,通常不是让点击点与滑鼠连线通过旋转 03/01 16:03
2F:→ cjcat2266:轴吗? 03/01 16:03
3F:→ cjcat2266:就是让使用者感觉有条隐形的绳子把点击点往外拉 03/01 16:04
4F:→ cjcat2266:这样就是θ = atan2(mouseX, mouseY) 03/01 16:06
5F:→ cjcat2266: -atan2(clickX, clickY); 03/01 16:07
6F:→ cjcat2266:打错,X和Y对调 03/01 16:07
7F:→ cjcat2266:如果θ是多个frame渐变,那要注意往小於180度的方向转 03/01 16:08
8F:→ jellyice:嗯…因为实际上转完角度後,还会平移过去,所以跟隐形绳 03/01 23:49
9F:→ jellyice:子不太一样 03/01 23:49