你如何计算对角线速度?

Rah*_*med 2 java geometry velocity

我正在写一个类似的游戏来练习一些编程,我遇到了这个问题.在我的游戏中,屏幕上有圆圈.当用户点击屏幕时,圆圈应远离点击.我有按下鼠标按钮的点的x和y位置,我有每个cicle对象的x和y位置.

我用以下代码找到了圆圈的中心

float cx = circle.getX()+circle.getRadius();
float cy = circle.getY()+circle.getRadius();
Run Code Online (Sandbox Code Playgroud)

为了找到从圆边到鼠标点击的距离,我做了这个

float distance = (float) Math.sqrt( ((cx-x)*(cx-x)) + ((cy-y)*(cy-y)) ) - circle.getRadius();
Run Code Online (Sandbox Code Playgroud)

现在,在我检查圆是否足够接近点击后,如何将1f的速度分割为圆的变量vx和vy?

编辑:其实我想要加速,但我猜它都是一样的.

Mik*_*uel 5

这听起来像是一份工作sin,并cosjava.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.