2012-10-28 2 views
3

나는 어디에서 선을 시작하길 원하는지 알고 있으며 얼마나 오래 선을 긋고 싶은지 알고있다. 나는 패널의 좌표 100,100에서 시작하는 선을 원하고 50 px 길이로하고 싶습니다. 어떻게 각 선을 임의로 각도를 매길 수 있습니까? 나는 다음과 같은 것을 생각하고 있었다 :자바에서 임의의 각도로 선을 그리려면 어떻게해야합니까?

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

그러나 이것을 어떻게 지금 그리는 데 사용합니까? 당신은 쉽게 할 수 polar coordinates으로 전달하여

답변

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

포인트가 X, Y 위치로 지정되어 있기 때문에 여전히 Cartesian입니다. Polar는 R, Theta에 의해 지정됩니다. – Mikhail

+0

좋아요.이 코드를 완전히 얻지는 못했지만, 몇 분 동안 조정 한 후에 나는 모든 것을 작동 시켰습니다. 감사! – TyP

+0

@Misha : 극좌표를 직접 그리는 것을 지원하는 그래픽 API가 거의 없기 때문에 결과는 직교 좌표 여야합니다. 그러나 극좌표로 계산됩니다. – Jack

2

, 당신은 단순히으로, Math.sin (각도)를 사용할 수 있습니다 * 길이의 높이 선, Math.cos (각도) * 너비의 길이. 마지막으로 Grapics drawLine (100,100, 너비, 높이)을 사용하여 선을 그릴 수 있습니다.

관련 문제