// bilde alle Punktepaare
// Umsetzung: beginne an Stelle 1 und hole Voränger, so lange wie du < punkte.length bist
for ( int i = 1; i < punkte.length; i++ )
{
Point tempPunktEins = new Point( punkte[i].x , punkte[i].y ); // Punkt Eins der Basis, int noetig, damit der Konstruktor klappt
Point tempPunktZwei = new Point( punkte[i-1].x, punkte[i-1].y ); // Punkt Zwei der Vorgaenger von Punkt Eins im Array
dbs += "Aktuelles Punktepaar: " + tempPunktEins.toString() + "; " + tempPunktZwei.toString() + "\n";
// lasse die Kennzahlen fuers aktuelle Paar ermitteln
Point tempMittelpunkt = berechneMittelpunktAusPunktepaar(tempPunktEins, tempPunktZwei);
double tempRadius = berechneRadiusAusPunktepaar(tempPunktEins, tempPunktZwei);
dbs += " +++ Kennzahlen fürs aktuelle Punktepaar: Mittelpunkt " + tempMittelpunkt.toString() + "; tempRadius: " + tempRadius + "\n";
// teste alle Punkte ob diese im Kreis liegen
for ( int l = 0; l < punkte.length; l++ )
{
// teste ob der aktuell getestete Punkt im Kreis liegt
// dabei wird die Pruefung wenn der zu testende Punkt einer der Eckpunkte ist
// gleich von der Funktion übernommen
Point tempTestpunkt = new Point( punkte[l].x, punkte[l].y );
boolean erg = testeObPunktAusserhalbVonKreisIst(tempMittelpunkt, tempRadius, tempTestpunkt, tempPunktEins, tempPunktZwei );
dbs += " +++ Testpunkt " + tempTestpunkt.toString() + " liegt ausserhalb des Kreises zum Punktepaar? " + erg + "\n";
if ( erg == true ) // Punkt ist ausserhalb
{
// hole neues Punktepaar
break; // Ausbruch aus der umgebenden for-Schleife
}
else
{
if ( l < punkte.length - 1 )
{
// wenn es einen weiteren Punkt gibt nimm diesen zum Lagentest
// einfach nächsten Schleifendurchlauf starten, dann wird Testpunkt neu zugewiesen
continue;
}
else
{
// wenn es keinen nächsten Punkt zum Testen gibt, dann merk dir den Kreiskandidaten
meldeKreisKandidat(tempMittelpunkt, tempRadius);
}
}
}
}
// bilde alle Punktetripel
for ( int j = 2; j < punkte.length; j++ )
{
Point tempPunktEins = new Point( punkte[j].x , punkte[j].y ); // Punkt Eins der Basis
Point tempPunktZwei = new Point( punkte[j-1].x, punkte[j-1].y ); // Punkt Zwei der Vorgaenger von Punkt Eins im Array
Point tempPunktDrei = new Point( punkte[j-2].x, punkte[j-2].y ); // Punkt Drei der Vorvorgaenger von Punkt Eins im Array
dbs += "Aktuelles Punktetripel: " + tempPunktEins.toString() + "; " + tempPunktZwei.toString() + "; " + tempPunktDrei.toString() + ";\n";
// lasse die Kennzahlen fuers aktuelle Tripel ermitteln
Point tempMittelpunkt = berechneMittelpunktAusPunktetripel(tempPunktEins, tempPunktZwei, tempPunktDrei);
double tempRadius = berechneRadiusAusPunktetripel(tempPunktEins, tempPunktZwei, tempPunktDrei, tempMittelpunkt);
dbs += " +++ Kennzahlen fürs aktuelle Punktetripel: Mittelpunkt " + tempMittelpunkt.toString() + "; tempRadius: " + tempRadius + "\n";
// teste alle Punkte ob diese im Kreis liegen
for ( int l = 0; l < punkte.length; l++ )
{
// teste ob der aktuell getestete Punkt im Kreis liegt
Point tempTestpunkt = new Point( punkte[l].x, punkte[l].y );
boolean erg = testeObPunktAusserhalbVonKreisIst(tempMittelpunkt, tempRadius, tempTestpunkt, tempPunktEins, tempPunktZwei, tempPunktDrei );
dbs += " +++ Testpunkt " + tempTestpunkt.toString() + " liegt ausserhalb des Kreises zum Punktetripel? " + erg + "\n";
if ( erg == true ) // Punkt ist ausserhalb
{
// hole neues Tripel
break; // Schleifenausbruch
}
else
{
if ( l < punkte.length - 1 )
{
// wenn es einen weiteren Punkt gibt nimm diesen zum Lagentest
// einfach nächsten Schleifendurchlauf starten, dann wird Testpunkt neu zugewiesen
continue;
}
else
{
// wenn es keinen nächsten Punkt zum Testen gibt, dann merk dir den Kreiskandidaten
meldeKreisKandidat(tempMittelpunkt, tempRadius);
}
}
}
}
}