3

我知道我想从哪里开始排队,我知道我想排队多久。我希望这条线从面板的坐标 100,100 开始,我希望它的长度为 50 像素。我怎样才能随机倾斜每次运行的线?我在想类似的事情:

Random rand = new Random(System.currentTimeMillis());
int angle = rand.nextInt % 360;

但是我现在如何使用它来画线呢?

4

2 回答 2

7

通过极坐标传递,您可以轻松地做您想做的事:

// a random value in [0, 2PI] for the angle in radians
float angle = rand.nextFloat()*2*Math.PI; 
// length of the line
float magnitude = 50.0f;

// start point
Point2D.Float start = new Point2D.Float(100,100);
// end point
Point2D.Float end = new Point2D.Float(start.getX() + Math.cos(angle)*magnitude, start.getY() + Math.sin(angle)*magnitude);
于 2012-10-28T22:43:02.473 回答
2

一旦你有了随机角度(以弧度为单位),你可以简单地使用 Math.sin(angle)*length 作为线的高度,使用 Math.cos(angle)*length 作为宽度。最后,您可以使用Graphics drawLine(100,100,width,height) 来绘制线条。

于 2012-10-28T22:43:47.763 回答