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:
-
Ihr Programm darf nur genau jene Ausgabedaten liefern, die in der Spezifikation
verlangt werden. Die Ausgaben Ihres Programmes werden automatisch mit
Referenzdaten verglichen; etwaige Abweichungen führen zu Punkteabzügen!
-
Testen Sie Ihr Programm vor der Abgabe mit der mitgelieferten Eingabedatei.
Geben Sie Ihre Lösung erst ab, wenn die Ausgaben Ihres Programmes mit der
ebenfalls mitgelieferten Ausgabedatei übereinstimmen! Testen Sie Ihr
Programm auch mit anderen Eingabedaten.
-
Verwenden Sie nur das von uns mitgelieferten Package eprog
für Ihre Ein/Ausgaben. Programme, die Packages oder Klassen ausserhalb der verwendeten Übungsumgebung (Java2, Standard Edition, Version 1.3.1_1) verwenden, können von uns
nicht getestet werden und werden mit 0 Punkten bewertet!
-
Schreiben Sie Ihr Programm möglichst allgemein und kommentieren Sie es gut.
Erstellen Sie weiters eine übersichtliche und verständliche Dokumentation.
Damit erhöhen Sie Ihre Chancen, daß andere Studenten in den nächsten Runden
Ihr Programm wählen und Ihnen damit zu Zusatzpunkten verhelfen!
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.