1174 gerpunkt Lage eines Punktes zu einer Geraden
Kategorie:Grafik
Klasse:mittel
Eingabe:Real
Ausgabe:String
Abzugebende Files: gerpunkt.txt, gerpunkt.java

Kurzbeschreibung:

Zwei Punkte, die eine Gerade definieren, sowie ein dritter Punkt werden eingelesen; die Lage des Punktes bezüglich der Geraden wird ermittelt und ausgegeben.

Allgemeine Hinweise:

Aufgabenstellung:

Zuerst werden die Koordinaten x1, y1, x2, y2 zweier Punkte eingelesen. Durch diese Punkte soll eine Gerade verlaufen. Weiters werden die Koordinaten x3, y3 eines dritten Punktes eingelesen. Ihr Programm soll nun feststellen, wie dieser Punkt bezüglich der Gerade liegt: links daneben, rechts daneben oder darauf.

Links und rechts daneben beziehen sich nicht auf absolute Koordinaten, sondern auf die Richtung der Geraden. Dazu ist definiert, daß die Gerade in jene Richtung verläuft, sodaß Sie zuerst Punkt 1 und dann Punkt 2 erreicht.

Betrachten wir diese theoretischen Überlegungen an einem Beispiel: Sei unser Eingabedatensatz "0 2 3 -1 5 3".

Auf dem Papier sieht das dann folgendermaßen aus:

Die Gerade läuft von P1 nach P2, hier also von links oben nach rechts unten. Aus dieser Blickrichtung liegt der Punkt P3 links neben der Geraden.

Um die Lage des Punktes zu ermitteln, stellen Sie zuerst die Geradengleichung auf:

X*(y2-y1)+Y*(x1-x2)=D mit D=x1*y2-x2*y1

Dann setzen Sie x3 und y3 in den linken Teil der Gleichung ein und ermitteln so D' =x3*(y2-y1)+y3*(x1-x2).

Der Vergleich von D' mit D liefert die Antwort:

D'<D: Punkt 3 liegt links neben der Geraden
D'=D: Punkt 3 liegt auf der Geraden
D'>D: Punkt 3 liegt rechts neben der Geraden

Eingabedaten:

Lesen Sie die Koordinaten x1, y1, x2, y2, x3, y3 der drei Punkte in dieser Reihenfolge als Zahlen vom Typ Float ein. Alle Koordinaten müssen im Bereich [-100,100] (inklusive) liegen; die drei Punkte müssen paarweise voneinander verschieden sein.

Ausgabedaten:

Bei korrekten Eingabedaten soll Ihr Programm "LINKS" ausgeben, wenn der Punkt links neben der Geraden liegt, "RECHTS", wenn der Punkt rechts neben der Geraden liegt und "DARAUF", wenn der Punkt auf der Geraden liegt.

Geben Sie am Ende einen Zeilenvorschub aus.

Fehlerbehandlung:

Sämtliche Eingabedatensätze sind immer vollständig einzulesen. Generell wird bei fehlerhaften Eingabedatensätzen nur eine einzige Fehlermeldung erzeugt, weitere Berechnungen werden nicht mehr durchgeführt.

Enthält der Eingabedatensatz einen ungültigen Datentyp, so soll einmal das Zeichen "?", gefolgt von einem Zeilenvorschub, ausgegeben werden.

Sind die Datentypen bei allen Eingaben richtig, die eingegebenen Daten aber inhaltlich nicht korrekt oder erfüllen nicht die Bedingungen, so soll Ihr Programm "FALSCHE EINGABE", gefolgt von einem Zeilenvorschub, ausgeben.

Beispiele:

Eingabedaten
0 0 3 3 2 2

0 2 3 -1 5 3

Ausgabedaten
DARAUF

LINKS

Bemerkung: Diese Beispiele dienen nur zur Verdeutlichung der Spezifikation und müssen nicht korrekt formatiert sein. Die korrekte Formatierung entnehmen Sie bitte dem mitgelieferten Outputfile. Zum Testen Ihrer Lösung können Sie aus den mitgelieferten Eingabedaten wie folgt eine Ausgabedatei erzeugen:

java gerpunkt < gerpunkt.i1 > gerpunkt.out1

Das erzeugte File gerpunkt.out1 können Sie dann mit dem mitgelieferten Outputfile gerpunkt.o1 vergleichen.