# Klasse Kreis und Methode lage



## ecm (23. Apr 2009)

Hallo miteinander,

Ich habe gerade durch Zufall dieses Forum entdeckt und hoffe ihr könnt mir bei einem Problem helfen.

Es geht um folgendes:

Ein Kreis ist gegeben durch den Radius und seinen Mittelpunkt (M=(0,0)). Über Eingabedialog ist der Wert für den Radius und die Koordinaten für einen Punkt(X,Y) einzugeben. In einer Methode lage soll überprüft werden ob der Punkt auf, innerhalb oder außerhalb des Kreises liegt.

Klingt für die meisten von euch wahrscheinlich ziemlich banal aber ich komm im Moment einfach nicht weiter. 

Das habe ich bis jetzt zusammengebastelt:

```
//Beispiel 1; Übungszettel 102 SS09

import javax.swing.*;

public class Kreis{

	public static void main(String[]args){

		
		String radius, px, py;
		double r, p1, p2;

		radius=JOptionPane.showInputDialog(null,"Radiuseingabe:");
		px=JOptionPane.showInputDialog(null,"X-Koordinate:");
		py=JOptionPane.showInputDialog(null,"Y-Koordinate:");

		r=Double.parseDouble(radius);
		p1=Double.parseDouble(px);
		p2=Double.parseDouble(py);

		lage(r,p1,p2);
	}


	public static void lage(double radius, double x, double y){

		if(x==radius && y==radius){
	  	  System.out.print("Der Punkt liegt am Kreis");
    	}
		else{
	  	  if(x<radius && y<radius){
	        System.out.print("Der Punkt liegt innerhalb des Kreises");
	      }
	      else{
	        if(x>radius && y>radius){
		      System.out.print("Der Punkt liegt außerhalb des Kreises");
		    }
	      }
	    }

	}
}
```
Also ich weiß das die Methode so wie sie hier steht nicht das macht, was von ihr verlangt wird. Mein größtes Problem ist eigentlich wie ich den Kreis erzeugen kann, sodass der Computer die ganzen Koordinaten des Kreises kennt. Oder muss er das gar nicht wissen und ich bin auf der falschen Fährte? 

Ich hoffe ihr könnt mir ein paar gute Tipps geben!

Danke im Vorraus,

lg ecm


----------



## E.G.O. (23. Apr 2009)

hab zwar nur oberflächlich drüber geschaut, aber sieht doch gut aus.
nur momentan sind dein if-Abfragen noch nich ganz richtig, du testest zur Zeit auf ein Quadrat mit dem Koordinatenursprung als Mittelpunkt.
Du musst durch geeignete Formeln rausfinden wie weit ein Punkt vom Mittelpunkt(hier: 0,0) entfernt ist und dann statt x und y mit r zu vergleichen natürlich den Abstand nehmen. Formel dafür wirst du doch alleine finden, oder?


----------



## ecm (23. Apr 2009)

Hey!

danke für die schnelle Antwort! 

ich werds mit der Formel (abstand=Wurzel((x1-x2)²+(y1-y2)²)) versuchen.

denke das es dann laufen wird, danke für die Richtungsweisung!

lg ecm


----------



## ecm (23. Apr 2009)

Hallo,

Hab die Methode jetzt so verändert:


```
public static void lage(double radius, double x, double y){

		double l1, l2;

		l1=radius;
		l2=Math.sqrt(((0-x)*(0-x))+((0-y)*(0-y)));

		if(l2<l1){
		  System.out.println("Der Punkt liegt innerhalb des Kreises");
		}
		else{
			if(l2==l1){
			  System.out.println("Der Punkt liegt auf dem Kreis");
			}
			else{
				if(l2>l1){
				  System.out.println("Der Punkt liegt ausserhalb des Kreises");
				}
			}
		}
```

und es funktioniert wunderbar! Dankeschön!

lg ecm


----------

