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?
编辑:其实我想要加速,但我猜它都是一样的.
这听起来像是一份工作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.
| 归档时间: |
|
| 查看次数: |
2159 次 |
| 最近记录: |