给定一个以度为单位的角度,我如何使用 x 和 y 找到行进线的逻辑? (数学困境)
Posted
技术标签:
【中文标题】给定一个以度为单位的角度,我如何使用 x 和 y 找到行进线的逻辑? (数学困境)【英文标题】:Given an angle in degrees, how can I find the logic for line of travel using x and y? (Math dilemma) 【发布时间】:2011-06-27 18:20:28 【问题描述】:我正在用 html5 画布制作一个简单的游戏,它涉及驾驶一辆小汽车。
向上箭头移动汽车,左右箭头控制汽车。
我已经对旋转进行了排序,但是现在它需要在按住向上键时根据它所处的角度移动它的 x 和 y 位置。
例子:
角度为0,向上箭头只会影响y坐标。
角度为 45,向上箭头会以相同的速度影响 x 和 y 坐标。
如果角度是 32,我可以使用什么逻辑?
【问题讨论】:
90度角不会只影响x坐标吗? 汽车应该有动力吗?如果是这样,则需要同时利用质量和力。 对不起,我的意思是 45。一旦基本控制工作正常,我将实施动力 :) 【参考方案1】:你可以试试这样的
velY = Math.cos(angle * Math.PI / 180) * thrust;
velX = Math.sin(angle * Math.PI / 180) * thrust;
x += velX;
y -= velY;
简单的例子,角度只是在每个循环中递增。
http://jsfiddle.net/j5U5h/5/
角度 0 向上,就像您在最初的问题中所说的那样。
这是修改后的 jsfiddle,因此角度为 0 会使您向右移动。
http://jsfiddle.net/j5U5h/7/
velX = Math.cos(angle * Math.PI / 180) * thrust;
velY = Math.sin(angle * Math.PI / 180) * thrust;
x += velX;
y += velY;
要让 0 开始向右移动,只需更改为这个,
velX = -Math.cos(angle * Math.PI / 180) * thrust;
【讨论】:
thrust
应该在括号之外——除此之外你打败了我:)
请注意,在 OP 中,角度 0 沿 y 轴,而您采用通常的数学惯例,即 0 度指向 x 方向。
干得好,但只需更改 x 和 y 函数,如果可以的话,我会为你投票(每日限制)
您好,感谢您的宝贵时间。只有左右键会影响角度。
我有一些经验,不过我会发布另一个问题,很多人的经验比我自己多,所以我知道你会得到一些很好的答案。【参考方案2】:
您的意思是 90 真的是平等地移动两个轴吗?在我看来,它应该是 45 移动两个轴。
如果 45 等量移动两个轴:
xfactor = angle * (1/90)
yfactor = (90 - angle) * (1/90)
xpos = xpos + (xincrement * xfactor)
ypos = ypos + (yincrement * yfactor)
如果 90 相等地移动两个轴:
xfactor = (2 * angle) * (1/180)
yfactor = (180 - (2 * angle)) * (1/180)
xpos = xpos + (xincrement * xfactor)
ypos = ypos + (yincrement * yfactor)
【讨论】:
嗨,我的意思是 45 度。我试图让这个工作,但没有运气。 :(以上是关于给定一个以度为单位的角度,我如何使用 x 和 y 找到行进线的逻辑? (数学困境)的主要内容,如果未能解决你的问题,请参考以下文章
Leaflet - 使用latLon +距离(米)+角度(度)创建标记