Hi!
Ich möchte einen Graphikeditor schreiben, der eine Menge von Figuren(Rechtecke, Kreise etc. verwaltet). Jede Figur hat eine Methode contains, mit der man prüfen kann, ob ein Punkt (geg. durch x und y-Koord. innerhalb der Figur liegt!
Wenn ich jetzt ein Rechteck implementiere, dann funktionierts.....beim Kreis hingegen stimmts nicht, weil ja die Ecken abgeschnitten sind...aber das funktioniert da nicht!Beim Punkt 51,51 müsste es false ausgeben!
Wo liegt da der Fehler?
Kennt jemand die Lösung?
und die Klasse Test :
Vielen Dank im Voraus!
ciao,Tommy
Ich möchte einen Graphikeditor schreiben, der eine Menge von Figuren(Rechtecke, Kreise etc. verwaltet). Jede Figur hat eine Methode contains, mit der man prüfen kann, ob ein Punkt (geg. durch x und y-Koord. innerhalb der Figur liegt!
Wenn ich jetzt ein Rechteck implementiere, dann funktionierts.....beim Kreis hingegen stimmts nicht, weil ja die Ecken abgeschnitten sind...aber das funktioniert da nicht!Beim Punkt 51,51 müsste es false ausgeben!
Wo liegt da der Fehler?
Kennt jemand die Lösung?
Code:
abstract class Figure{
public abstract boolean contains(int x, int y);
}
class Rectangle extends Figure{
int xpoint;
int ypoint;
int length;
int width;
boolean ergebnis=true;
public Rectangle(int xpoint, int ypoint, int length, int width){
this.xpoint=xpoint;
this.ypoint=ypoint;
this.length=length;
this.width=width;
}
public boolean contains(int x,int y){
if(xpoint <=x && x<=xpoint+width && ypoint <=y && y<=ypoint+length){
return ergebnis;
}
else{
return false;
}
}
}
class Circle extends Figure{
int xpoint;
int ypoint;
int radius;
boolean ergebnis=true;
public Circle(int xpoint, int ypoint, int radius){
this.xpoint=xpoint;
this.ypoint=ypoint;
this.radius=radius;
}
//hier liegt der Hund begraben!!!!!
public boolean contains(int x, int y){
if(x>=xpoint-radius && x<=xpoint+radius && y<=ypoint+radius && y>=ypoint-radius){
return ergebnis;
}
else{
return false;
}
}
}
und die Klasse Test :
Code:
public class Test{
public static void main(String [] args){
Rectangle r1=new Rectangle(100,100,50,60);
boolean ergebnis= r1.contains(100,130);
System.out.println("Punkt in Rechteck:"+ergebnis);
Circle c1=new Circle (100,100,50);
ergebnis=c1.contains(51,51);
System.out.println("Punkt in Kreis:"+ergebnis);
}
}
Vielen Dank im Voraus!
ciao,Tommy