gpt4 book ai didi

java获取随机角度的坐标

转载 作者:行者123 更新时间:2023-12-02 08:06:02 27 4
gpt4 key购买 nike

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

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

上面的代码并不能最好地确定循环第二步的位置。我想应用一种使可能性更加均匀的方法。下面的方法是我要做的......

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

x1,y2已知,a是随机360度,h是10,如何计算x2,y2?

最佳答案

你熟悉三角学吗?您绘制了一个直角三角形,其中 h 为斜边,a 为相关角,该角的假想边 (opp) ,以及与角度相邻 (adj) 的腿。这是更新后的图表:

           x2,y2     
/|
/ |
/ |
/ |
/ | opp
h / |
/ |
/ a |
---------
x1,y1 adj

三角函数定义函数
sine (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.sinMath.cos:

double angle = Math.toRadians(Math.random() * 360);
double amount = 10;
int x2 = x1 + (int)(amount * Math.cos(angle));
int y2 = y1 + (int)(amount * Math.sin(angle));

关于java获取随机角度的坐标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8147441/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com