java以随机角度获取坐标

时间:2011-11-16 06:06:19

标签: java

我正在编写一个单击JPanel的程序,然后一个圆圈会产生它的x& y将每帧添加10个像素。以下两行是暂时确定圆形后的下一步。

    destinationX = -10 + (int)(Math.random() * ((10 - (-10)) + 1));
    destinationY = -10 + (int)(Math.random() * ((10 - (-10)) + 1));

以上代码不是最好的确定cirlce第二步的位置。我想应用一种方法,使可能性更加均匀。以下是我要做的事情......

           x2,y2     
             /
            /
           /
          /
         /
      h /
       /
      / a
      ----------------------------
   x1,y1

x1,y2是已知的,a是随机的360度,h是10,如何校准x2,y2?

1 个答案:

答案 0 :(得分:2)

你熟悉三角学吗?您绘制了一个直角三角形,其中h为斜边,a为相关角度,角度为(opp)的假想腿,且相邻的腿({{1} }})到角度。这是一个更新的图表:

adj

三角函数定义函数
正弦 x2,y2 /| / | / | / | / | opp h / | / | / a | --------- x1,y1 adj )为sin和类似的功能
余弦opp / h)为cos

在您的情况下,您想要计算adj / hx2 = x1 + adj
cos(a) = adj / h;所以通过替换,我们到达了 adj = h * cos(a)

我们可以对x2 = x1 + h * cos(a)进行类似的推导,然后获取y2

如果您想以随机方向按固定金额移动某个点,则需要y2 = y1 + h * sin(a)Math.sin

Math.cos