本帖最后由 失落的乐章 于 2018-4-5 22:30 编辑 直角三角形的第三点为 C(x1, y2) AC = |y1 - y2| BC = |x1 - x2| ∠BAC = arctan(BC / AC) B 在 A 的右下方时,所求的角 = 180° - ∠BAC; B 在 A 的右上方时,所求的角 = ∠BAC; B 在 A 的左上方时,所求的角 = 360° - ∠BAC; B 在 A 的左下方时,所求的角 = 180° + ∠BAC. (数学水平不行,应该有更简便的方法。借回答这个问题的机会回忆了一下多年前学的数学知识,只能想起这么多了……) |
这也太牛了吧、、、 |
你的坐标系和RM的坐标系是不一样的,和平面直角坐标系就更不一样。 Math.atan2(y,x)返回的结果是基于平面直角坐标系的。而且值域是(-pi, pi] 如果你的(x1, y1), (x2,y2)是以RM的坐标系(左上角)为(0,0)的话 Math.atan2(y2-y1, x2-x1)得到的值是1/2pi-你那个角度的结果,因此 rad_angle = Math::PI / 2 - Math.atan2(y2 - y1, x2 - x1) grd_angle = rad_angle / Math::PI * 180 grd_angle += 360 if grd_angle < 0 以上 |
站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作
GMT+8, 2024-11-23 10:16
Powered by Discuz! X3.1
© 2001-2013 Comsenz Inc.