Kreise

Status
Nicht offen für weitere Antworten.

badblueboy

Mitglied
hi @ll

bin Java-n00b und habe Probleme mit folgender Aufgabenstellung:
Schreiben Sie private void zeichneKreis(?). Der Methode werden Radius und
Kreis-Mittelpunkt übergeben.
Testen Sie die Methode, indem Sie 10 Kreise von links nach rechts zeichnen. Der Mittelpunkt
des neuen Kreises befindet sich auf dem Kreisumfang im Osten des Vorgängers, sein Radius
ist um 20% grösser.

Habe folgenden Code geschrieben und verstehe nicht, was ich falsch gemacht habe...könnte sich das vielleicht mal jemand ansehen und mir helfen? Bin ziemlich ratlos... :-/
Code:
public class P6Methoden extends Applet {
	
	public void init() {
	}
	

	
	public void paint(Graphics g) {
	
	int i=0;
	int xKr=50, yKr=100, rad=20, d=40;
		
	
		for(i=0;i<10;i++) {
	
			zeichneKreis(g, xKr, yKr, rad);
			
			d=2*rad;
			rad=rad/100*120;
			xKr=xKr+d-rad;
			yKr=yKr-d/2+rad;
			
		}
	
	}

	private void zeichneKreis(Graphics g, int xKr, int yKr, int rad){
	
		
		g.drawOval(xKr,yKr,rad,rad);
		
	}

}
Es wird nur der erste Kreis gezeichnet... :-/


mfg BBB
 

anfänger15

Bekanntes Mitglied
Also so wie ich das sehe hast du schon mal die methode zeichneKreis falsch gemacht, da laut deiner aufgabe der KreisMittelpunnkt übergeben werden sollte du übergibts aber die koordinaten, die der linken oberen ecke des kreises entsprechen. Du musst also die koordinaten der Mitte des Kreises übergeben und diese dann so umrechnen, dass sie der linken oberen ecke des kreises entsprechen.

da müsstest du dann glaub : xKord + radius, und yKord + radius rechnen
 

Der Müde Joe

Top Contributor
Code:
    public void paint(Graphics g) {
        int radius = 30;
        int centerX = 50;
        int centerY = 50;
        
        for (int i = 0; i < 10; i++) {
            int upperCornerX = centerX - radius;
            int upperCornerY = centerY - radius;
            //draw
            zeichneKreis(g, upperCornerX, upperCornerY, radius);
            //translate
            centerX = centerX + radius;
        }
    }
 

badblueboy

Mitglied
@Joe

Dein Code generiert mir 10 Kreise die aneinander angrenzen - laut Aufgabenstwellung müssen sie sich aber übeschneiden (Mittelpunkt des neuen Kreises ist AUF dem alten Kreis. Ausserdem wird der Kreis ja nirgends um 20% gestreckt - wenn ich
Code:
radius=radius/100*120;
mache, dann zeichnet er mir wiederum nur einen Kreis.. :-/

EDIT
Code:
		g.drawOval(upperCornerX,upperCornerY,2*radius,2*radius);
hab gemerkt dass ich bei Höhe/Breite den Radius stat den Durchmesser genommen habe. Jetz überschneiden sie sich, allerdings fehlt noch die Streckung des Radius um 20%....


mfg BBB
 
S

SlaterB

Gast
weil 30/100=0 ist, Java-Int-Rechnung kennt keine Kommawerte

rechne radius*120/100
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen

Neue Themen


Oben