# Kreisbewegung



## Maalbu (7. Jan 2012)

Hi 
Ich versuche gerade etwas Java zu lernen und möchte als Übung ein Haus mit einer Sonne programmieren. Erstmal kein Problem aber ich möchte gerne die Sonne im Bogen über das Haus bewegen und mir fällt dazu nichts ein.
Ich hoffe ihr könnt mir helfen. 
Als Editor benutzte ich außerdem BlueJ.

Maalbu


----------



## Gast2 (7. Jan 2012)

Such dir ne Gleichung die dir zu nem Winkel und nem Abstand r den entsprechenden Punkt ausrechnet. In einer Schleife kannst du dann alle Winkel von 0 bis 180 durchgehen und am entsprechenden Punkt deine Sonne zeichnen.


----------



## Maalbu (7. Jan 2012)

also r*cos(winkel)/r*sin(winkel) berechtnet den Punkt aber wie setzt ich das jetzt in Java? und wie zeichne ich dan an dem Punkt?

Ich hab hier leider echt keine Ahnung würde für später aber gerne wissen wie ich jetzt die Gleichung einbeziehen und auf den Punkten dan zeichnen kann.

Maalbu


----------



## Gast2 (7. Jan 2012)

Quick and dirty vielleicht ungefähr so:

```
public class DemoPanel extends JComponent {
	private final int radius;
	private double degree;

	public DemoPanel(int radius) {
		this.radius = radius;
	}

	@Override
	protected void paintComponent(Graphics g) {
		super.paintComponent(g);

		Point p = calculatePoint(degree);
		g.fillOval(p.x + radius, p.y + radius, 10, 10);
	}

	public void increaseAngle() {
		degree = (degree + 1) % 360;

		repaint();
	}

	private Point calculatePoint(double degree) {
		int x = (int)(radius * Math.cos(Math.toRadians(degree)));
		int y = (int)(radius * Math.sin(Math.toRadians(degree)));

		return new Point(x, y);
	}

	public static void main(String[] args) {
		JFrame frame = new JFrame("Demo");
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

		final DemoPanel dp = new DemoPanel(100);
		dp.setPreferredSize(new Dimension(210,210));

		frame.add(dp);
		frame.pack();
		frame.setVisible(true);

		Timer t = new Timer(10, new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent e) {
				dp.increaseAngle();
			}
		});
		t.start();
	}
}
```
Die Funktion wie der Punkt fliegen soll würde man dann z.b. wohl noch auslagern.


----------

