Viele Persönlichkeiten. Zwei Standorte. Eine BO.

Aufgaben

Aufgabe 1:

Berechnen Sie jeweils das Skalarprodukt absowie die Kreuzprodukte a × b und b × a für:

  • a = (1, 0) und b = (0, 1),
  • a = (3, 0) und b = (0, 4),
  • a = (3⋅√(½), 3⋅√(½)) und b = (0, 4)
  • a = (3⋅√(½), 3⋅√(½)) und b = (4⋅√(½), -4⋅√(½)).

Kontrollieren Sie die Ergebnisse mit den Berechnungsformeln (2.7) und (2.10)! Die Winkel, die die Vektoren aufspannen, können Sie durch eine einfache Skizze ermitteln.

Aufgabe 2:

Schreiben Sie eine Java-Klassendeklaration für Vektoren im R n  (Bezeichner Vector), die u.a. folgende Anforderungen erfüllen soll:

  • Die Speicherung der Komponenten soll in einem statischen Feld erfolgen. Die Festlegung der Koordinaten-Dimension erfolgt erst im Konstruktor.
  • Die Klasse soll über Methoden zur Wertzuweisung und zur Bereitstellung einzelner Komponenten sowie zur Ausgabe als Zeichenkette verfügen.
  • Für die elementaren Vektoroperationen (Addition, Subtraktion, Skalierung und Skalarprodukt) sind passende Methoden zu schreiben. Beachten Sie dabei, dass die Vektoren stets die gleiche Dimension besitzen müssen.
  • Für Vektoren im und im sind getrennte Methoden zur Bildung des Kreuzproduktus bzw. zur Bestimmung der Senkrechten auf einen Vektor im bereitzustellen.

Ergänzen Sie dazu eine Testklasse (z.B. VectorTest), mit der Sie kontrollieren können, ob Ihre Methoden die richtigen Ergebnisse liefern! Zur Kontrolle können Sie u.a. die Ergebnisse von Aufgabe 1 verwenden.

Aufgabe 3:

Leiten Sie aus der Klasse Vektor eine Klasse Coordinate ab, die zur Speicherung und Bearbeitung von Koordinaten (Ortsvektoren) im und dient! Ergänzend zu den geerbten Methoden soll die Klasse die Möglichkeit bieten,

  • den Abstand zwischen zwei Koordinaten (Punkten) zu bestimmen, und
  • festzustellen, ob zwei Koordinaten lagegleich sind.

Schreiben Sie anschließend (wie in Aufgabe 2) eine passende Testklasse!

Anmerkung:

Für die Prüfung der Lagegleichheit ist ein einheitlicher, variabler Toleranzwert ε (Bezeichner eps) erforderlich, anhand dessen die Entscheidung gefällt wird:

  • Ist der Punktabstand  größer als der Toleranzwert, unterscheiden sich die Koordinaten.
  • Ist der Punktabstand geringer als der Toleranzwert, sind die Koordinaten gleich.

Als Toleranzwert eignet sich entweder der kleinste Stellenwert der gespeicherten Koordinaten oder ein mittlerer Genauigkeitswert, soweit dieser bekannt ist. Der Toleranzwert lässt sich in Java durch einen speziellen Modifier (static) kennzeichnen.

Aufgabe 4:

Schreiben Sie ein Programmmodul, das aus einem geschlossenen Streckenzug im R², der durch ein Feld von Koordinaten gegeben ist, die Fläche berechnet!

  • Verwenden Sie zur Lösung das Kreuzprodukt!
  • Wie können Sie die Flächenberechnung einsetzen, um festzustellen ob die Stützpunkte rechtsdrehend oder linksdrehend besucht werden?
  • Testen Sie Ihre Lösung am Beispiel eines Streckenzugs mit folgenden Stützpunkten aus:
    • p0 = (100,100)
    • p1 = (100,200)
    • p2 = (150,250)
    • p3 = (200,200)
    • p4 = (200,100)
    • p5 = p0

Aufgabe 5:

Nutzen Sie die Klasse Coordinate, um weitere Klassen für Geraden (Line), Ebenen (Plane), Strecken (LinSeg) und Dreiecke (Triangle) konzeptionell zu entwerfen!

  • Zeichnen Sie für den Entwurf ein UML-Klassendiagramm und überlegen Sie, welche Vererbungs­fälle und Assoziationen zwischen den verschiedenen Klassen auftreten!
  • Ergänzen Sie die Klassen durch sinnvolle Methoden! Berücksichtigen Sie dabei insbesondere die verschiedenen Schnitt- und Projektions-Operationen!

Aufgabe 6:

Implementieren Sie die Klasse für Geraden im dreidimensionalen Raum R ³!
Überlegen Sie, welche Methoden für Geraden bereitstehen müssen!

Anmerkung:

Für die Schnittoperation von zwei Geraden g1 und g2 ist die Frage zu klären, ob das Kreuzprodukt der Richtungsvektoren von g1 und g2 verschindet. Dieser Fall tritt dann ein, wenn die beiden Geraden parallel zueinander verlaufen.
Überlegen Sie, ob es ein geometrisches Kriterium für Geraden gibt, das man für die Prüfung der Parallelität heranziehen kann!

Aufgabe 7:

Leiten Sie aus der Klasse Line die Klasse für Strecken (LinSeg) ab! Überlegen Sie, über welche zusätzlichen Methoden die Klasse verfügen muss!

Anmerkung:

Für die Schnittoperation von zwei Strecken s1 und s2 ist ebenfalls die Frage zu klären, ob die beiden Strecken parallel zueinander verlaufen.
Überlegen Sie, welches geometrische Kriterium dazu verwendet werden kann! Berücksichtigen Sie darin die Koordinaten-Toleranz ε aus Aufgabe 3!

Aufgabe 8:

In zweieinhalbdimensionalen GIS tritt die Situation ein, dass Koordinaten zwar über drei Dimensionen verfügen, ihre geometrischen Auswertungen jedoch auf die zwei Komponenten in der Grundrissebene beschränkt sind.
Auf welche Weise kann man erzwingen, dass dreidimensionale Koordinaten nur in der Grundrissebene ausgewertet werden?

Aufgabe 9:

Bestimmen Sie die Krümmungsverläufe der Funktionen im :

  • x (t ) = (t, )
  • x (t ) = p ⋅(1-t ) + qt
  • x (t ) = p ⋅(1-t )² + q ⋅ 2t ( 1-t ) + r