2017-02-06 11 views
1
public static void drawSpiral(Display panel) { 
    int centerX = panel.getWidth()/2; 
    int centerY = panel.getHeight()/2; 

    double degAng = 270; 
    double radius = 150; 
    double x, y, radAng; 
    while (true) { 

     radAng = (degAng * Math.PI)/180; 
     x = centerX + radius * Math.cos (radAng); 
     y = centerY + radius * Math.sin (radAng); 

     panel.drawNextPoint ((int) x, (int) y); 
     degAng += 0.45; 
    } 
} 

나는 그리는 간단한 GUI를 사용하는 메서드를 만들려고합니다. 위의 메서드는 반경이 150 인 간단한 원의 좌표를 맨 위에서부터 그립니다. 이 방법으로 주어진 점을 중심점으로 사용하는 원을 그리려고합니다.다른 원의 원주를 중심으로 회전하는 원의 원주 좌표는 어떻게 찾을 수 있습니까?

이것은 최근에 시도한 것이며 타원 만 제공합니다!

public static void drawCircle(Display panel) { 
    int centerX = panel.getWidth()/2; 
    int centerY = panel.getHeight()/2; 

    double degAng = 270; 
    double newDegAng = 0; 
    double newRadius = 25; 
    double radius = 150; 
    double x, y, radAng, newX, newY, newRadAng; 
    while (true) { 

     radAng = (degAng * Math.PI)/180; 
     x = centerX + radius * Math.cos (radAng); 
     y = centerY + radius * Math.sin (radAng); 

     newRadAng = (newDegAng * Math.PI)/180; 
     newX = x - newRadius * Math.cos (newRadAng); 
     newY = y - newRadius * Math.sin (newRadAng); 

     panel.drawNextPoint ((int) newX, (int) newY); 
     degAng += 0.45; 
     newDegAng -= 0.45; 
    } 
} 

답변

1

다음 지점에 도달하기 전에 서클이 고갈 상태로 실행되어야합니다. 효과적으로 튜브를 생성하므로이 모든 원을 그립니다

double degAng = 0; 
double newDegAng = 0; 
double newRadius = 25; 
double radius = 150; 
double x, y, radAng, newX, newY, newRadAng; 
while (degAng<360) { 
    radAng = (degAng * Math.PI)/180; 
    x = centerX + radius * Math.cos (radAng); 
    y = centerY + radius * Math.sin (radAng); 

    newDegAng = 0; 
    while (newDegAng>-360) { 
     newRadAng = (newDegAng * Math.PI)/180; 
     newX = x - newRadius * Math.cos (newRadAng); 
     newY = y - newRadius * Math.sin (newRadAng); 
     drawPoint ((int) newX, (int) newY); 
     newDegAng -= 0.45; 
    } 

    drawPoint((int) x, (int) y); 
    degAng += 0.45; 
} 

이이

enter image description here

처럼 멋진 사진을 만들어 : 그래서 당신은 중첩 루프가 필요합니다.