Ich habe mal wieder ein problem mit einem Programm, scheint an meinem Programmierstil zu liegen, da ich ständig solche ähnlichen Probleme habe, aber da ich keine Lust habe die beiden Klassen wieder einzustampfen und alles im Hauptprogramm zu rechnen schildere ich euch hier mein problem.
Ich habe eine Klasse Dot und eine Klasse Gerade,
in der Klasse Dot existiert folgende Funktion:
<PRE>
public boolean istInDreieck(Dot p1, Dot p2, Dot p3) {
[...]
Gerade g1 = new Gerade (p2,p3);
Gerade g2 = new Gerade (p1,this);
Dot sp = new Dot(g1.getSchnittX(g2),g1.getSchnittY(g2));
//Dot sp = new Dot();
//sp = g1.getSchnittpunkt(g2);(alternativ dies, aber funktioniert nicht, siehe weiter unten)
[...]
}
</PRE>
dies sind die Konstruktoren:
<PRE>
private int xi, yi;
private double xd, yd;
public Dot() {
xi = 0;
yi = 0;
}
public Dot(int x, int y) {
xi = x;
yi = y;
}
public Dot(double x, double y) {
double xd = x;
double yd = y;
}
</PRE>
Die Klasse Gerade beinhaltet die Funktion:
<PRE>
public Dot getSchnittpunkt(Gerade g){
double schnittX = (g.getN() - this.getN()) / (this.getM() - g.getM());
double schnittY = g.getM() * schnittX + g.getN();
Dot erg = new Dot(schnittX, schnittY);
return erg;
}
</PRE>
diese Funktion funktioniert nicht erg ist immer (0,0) obwohl schnittX und schnittY existieren :-(
daher gibt es noch diese beiden funktionen die klappen:
<PRE>
public double getSchnittX(Gerade g){}
public double getSchnittY(Gerade g){}
</PRE>
Wenn ich nun die Funktion istInDreieck in meinem Hauptprogramm verwende kommt immer Müll heraus, da "sp" immer (0,0) ist.
Wie kann ich das beheben?
Vielen Dank, Wizard of War
Ich habe eine Klasse Dot und eine Klasse Gerade,
in der Klasse Dot existiert folgende Funktion:
<PRE>
public boolean istInDreieck(Dot p1, Dot p2, Dot p3) {
[...]
Gerade g1 = new Gerade (p2,p3);
Gerade g2 = new Gerade (p1,this);
Dot sp = new Dot(g1.getSchnittX(g2),g1.getSchnittY(g2));
//Dot sp = new Dot();
//sp = g1.getSchnittpunkt(g2);(alternativ dies, aber funktioniert nicht, siehe weiter unten)
[...]
}
</PRE>
dies sind die Konstruktoren:
<PRE>
private int xi, yi;
private double xd, yd;
public Dot() {
xi = 0;
yi = 0;
}
public Dot(int x, int y) {
xi = x;
yi = y;
}
public Dot(double x, double y) {
double xd = x;
double yd = y;
}
</PRE>
Die Klasse Gerade beinhaltet die Funktion:
<PRE>
public Dot getSchnittpunkt(Gerade g){
double schnittX = (g.getN() - this.getN()) / (this.getM() - g.getM());
double schnittY = g.getM() * schnittX + g.getN();
Dot erg = new Dot(schnittX, schnittY);
return erg;
}
</PRE>
diese Funktion funktioniert nicht erg ist immer (0,0) obwohl schnittX und schnittY existieren :-(
daher gibt es noch diese beiden funktionen die klappen:
<PRE>
public double getSchnittX(Gerade g){}
public double getSchnittY(Gerade g){}
</PRE>
Wenn ich nun die Funktion istInDreieck in meinem Hauptprogramm verwende kommt immer Müll heraus, da "sp" immer (0,0) ist.
Wie kann ich das beheben?
Vielen Dank, Wizard of War
Comment