# Kreis zeichnen mittels Schleife & drawLine



## harris (15. Dez 2006)

Hallo @ all!

Mit Graphics kann man ja Kreise, Linien, ect. zeichnen.
Nun möchte/muss ich einen Kreis mittels der drawLine zeichnen. D.h.  x1 und x1   sowie   y1 und y2   können gleich sein, sodass ein Punkt entsteht.

Auf diese Weise soll nun per Schleife ein Kreis gezeichnet werden.
Mein Code sieht wie folgt aus:


```
public void paint(Graphics g){
	Punkt mitte = new Punkt(this.getWidth()/2, this.getHeight()/2);
	int r = 100;
	for(int i = mitte.xKoordinate - r; i < mitte.xKoordinate + r; i++){
		int x = i;
		int y = (int) (mitte.yKoordinate + Math.sqrt(Math.pow(r, 2) - Math.pow((x - mitte.xKoordinate), 2)));
		g.drawLine(x, y, x, y);
		y = (int) (mitte.yKoordinate - Math.sqrt(Math.pow(r, 2) - Math.pow((x - mitte.xKoordinate), 2)));
		g.drawLine(x, y, x, y);
	}
}
```

Dieser zeichnet aber nur zwei Halbkreise...
Hat jemand einen Vorschlag???

Schöne Grüße
harris


----------



## SlaterB (15. Dez 2006)

Math.pow(r, 2) = r * r = 10.000,
der Wert ändert sich doch nicht, speichere den doch in einer Variablen statt ihn x mal auszurechen

und was heißt 2 Halbkreise? ein Kreis besteht doch aus 2 Hälften,
klingt doch nicht schlecht,

oder wird genau eine Hälfte 2x gezeichnet?,
dann ist es vielleicht nur ein Vorzeichenfehler,

falls du nicht genau weißt, was dein Programm tut,
dann gebe dir einzeln x/y-Paare + Zwischenschritte mit System.out.println aus,

ich kann's im Moment nicht testen


----------



## harris (15. Dez 2006)

Durch diesen Code zeichnet er tatsächlich 2 gleiche Hälften, bloß das die Zweite dann gespiegelt wird.
Nur soll das ja nicht so realisiert werden, sondern ohne Spiegelung...


----------



## André Uhres (15. Dez 2006)

```
int xm = getWidth()/2;
        int ym = getHeight()/2;
        Point mitte = new Point(xm, ym);
        int r = 100;
        for(int x = xm - r; x < xm + r; x++){
            for(int y = ym - r; y < ym + r; y++){
                Point p = new Point(x,y);
                if(p.distance(mitte) >= r-1 && p.distance(mitte) <= r){
                    g.drawLine(x, y, x, y);
                }
            }
        }
```


----------



## harris (18. Dez 2006)

Ja, das ist es @André Uhres!!!
VIELEN DANK 

Schöne Grüße
harris


----------

