2017-02-06 14 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

次のポイントに達する前に、あなたのサークルを使い果たすようにする必要があります。だから、ネストされたループが必要になります。これは、この

enter image description here

のような素敵な画像を作成し

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; 
} 

それが効果的にチューブを作成するので、これは、すべての円を描画します。

関連する問題