[请益] 2D游戏数学,求旋转角度

楼主: jellyice (寒若冬)   2014-03-01 15:42:55
高中数学学太差,最近在做个小游戏时心有余而力不足
所以来请教一下大家,希望有人能帮忙解惑一下,感激不尽
大致来说,问题是这样的:
我有个矩形,中心点在原点(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)代替…
作者: cjcat2266 (CJ Cat)   2014-03-01 16:03:00
这样设计怪怪的耶,通常不是让点击点与鼠标连线通过旋转轴吗?就是让使用者感觉有条隐形的绳子把点击点往外拉这样就是θ = atan2(mouseX, mouseY)-atan2(clickX, clickY);打错,X和Y对调如果θ是多个frame渐变,那要注意往小于180度的方向转
楼主: jellyice (寒若冬)   2014-03-01 23:49:00
嗯…因为实际上转完角度后,还会平移过去,所以跟隐形绳子不太一样

Links booklink

Contact Us: admin [ a t ] ucptt.com