2012-10-28 17 views
3

我知道我想要开始的路线,我知道我想排队多久。我希望该线开始协调100,100的面板,我希望它是50像素长。我怎样才能随机对角线每次运行?我在想像这样的:我如何随机在java中调整一条线?

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

但我现在怎么用这个画线?

回答

7

通过由polar coordinates传递您可以轻松地做你想做的:

// 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); 
+2

这仍然是笛卡儿,因为你的点由X,Y位置指定。极地由R,Theta指定。 – Mikhail

+0

好吧我不完全得到所有这些代码,但经过调整它几分钟后,我有一切工作。谢谢! – TyP

+0

@Misha:结果必须是笛卡尔的,因为几乎没有图形API支持直接绘制极点,但它是用极坐标计算的。 – Jack

2

一旦你的任意角度(弧度),你可以简单地使用Math.sin(角)*长度的高度线和Math.cos(角度)*宽度的长度。最后,您可以使用Grapics drawLine(100,100,宽度,高度)来绘制线条。