java如何计算对角线速度?
我写了一个游戏来练习编程,我遇到了这个问题。在我的游戏中,屏幕上有圆圈。当用户点击屏幕时,圆圈应该远离点击。我得到了鼠标按钮被按下点的x和y位置,还有每个圆环对象的x和y位置
我用下面的代码找到了圆的中心
float cx = circle.getX()+circle.getRadius();
float cy = circle.getY()+circle.getRadius();
为了找到从圆圈边缘到鼠标点击的距离,我这样做了
float distance = (float) Math.sqrt( ((cx-x)*(cx-x)) + ((cy-y)*(cy-y)) ) - circle.getRadius();
现在,在我检查圆是否离点击足够近后,我如何将1f的速度拆分为圆的变量vx和vy
编辑:其实我想要加速,但我想都一样
# 1 楼答案
找到从鼠标到圆心的线,这应该是“力”向量。这个向量会给你方向,现在你只需要知道距离是如何影响大小的
# 2 楼答案
这听起来像是
sin
和cos
在java.lang.Math
:http://download.oracle.com/javase/6/docs/api/java/lang/Math.html中的一个作业一旦知道了总速度(
1f
和角度(弧度),速度的水平分量是v * cos(angle)
,垂直分量是v * sin(angle)
如果你想移动它,你可能需要抵消这个角度
要计算水平和垂直距离的角度,请使用
atan2
顺便说一句,如果您不想采用不必要的平方根,并且希望避免像三元函数那样计算级数的成本,请看一下http://www.youtube.com/user/njwildberger#p/u/368/9wd0i44vK04
# 3 楼答案
你们可以先按照Mike的建议找到角度,然后使用cos和sin函数
或使用: