我正在编写一个单击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?
答案 0 :(得分:2)
你熟悉三角学吗?您绘制了一个直角三角形,其中h
为斜边,a
为相关角度,角度为(opp
)的假想腿,且相邻的腿({{1} }})到角度。这是一个更新的图表:
adj
三角函数定义函数
正弦( x2,y2
/|
/ |
/ |
/ |
/ | opp
h / |
/ |
/ a |
---------
x1,y1 adj
)为sin
和类似的功能
余弦(opp / h
)为cos
。
在您的情况下,您想要计算adj / h
自x2 = 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