Bauinformatik Grundlagen Algorithmen und Datenstrukturen in Java 2. Semester 4. Vorlesung Interaktionen Prof. Dr.-Ing. R.J. Scherer TU Dresden - Institut für Bauinformatik Interaktion Interaktionen zwischen 2 oder mehreren Objekten sind im Objekt-Model als Relationen abzubilden. So ist z.B. die Kontrolle des Abstandes zwischen 2 LKW als Abstands-Relation auszuführen. Hierbei unterscheiden wir zuerst noch nicht, ob es sich um eine einfache oder komplexe Relation handelt. Wichtig ist, dass es sich um eine Relation handelt, die am obersten sinnvollen Objekt in der Objekt-Baumstruktur angelegt wird, so dass sie an alle Unterobjekte vererbt werden kann und dort evtl. erst ausgeprägt wird. TU Dresden - Institut für Bauinformatik Abstandsrelation am Beispiel LKW Klasse (Schema) (ABS) PhysicalObject Abstand Abstand LKW TU Dresden - Institut für Bauinformatik 16.05.2016 3 Abstands-Topologie Klasse (Schema) (ABS) PhysicalObject Abstand Abstand LKW (instantiierte) Objekte Abstand LKW1 LKW2 Es entsteht ein Objektnetz, Abstand Eine Abstands-Topologie Abstand LKW3 TU Dresden - Institut für Bauinformatik 16.05.2016 4 Relationen Aggregation: Formbildend: (Topologie) Prozess: funktional Gruppierend: (Systeme) ist Komponente von ist Teil von ist eingebettet in ist Nachbar von ist verbunden mit ist Vorgänger/Nachfolger von ist Unterstützung/Auflager von gehört zu ist Tragelement von Objekte mit Relationen verbunden bilden Topologien Relationen sind programmtechnische Verweise (Zeiger). In einem Attribut des verweisenden Objekt wird das Verweisziel, nicht das Objekt selber gespeichert. Relationen sind gerichtet. Der Verweis geht vom speichernden Objekt aus, da nur dieses Objekt die Information besitzt, dass eine Relation existiert. TU Dresden - Institut für Bauinformatik 16.05.2016 5 Einfache Relationen Einfache Relationen wie: Ist Teil von Ist Nachbar von Ist Vorgänger von Unterstützt z.B.: Ladefläche ist Teil von LKW z.B.: Wand1 ist Nachbar von Wand2 := (1,2) usw. mit (2,3) (3,4) (4,1) bilden Raum z.B.: EG-Stütze1 ist Vorgänger von EG-Decke z.B.: EG-Stütze1 unterstützt EG-Decke Können als einfaches Attribut abgebildet werden Datenstruktur: Objekt Einfache Relation ID Integer Programmstruktur public class EinfachesObjekt { private int relationID; public void setRelationID(int relationID) { this. relationID = relationID; } public int getRelationID() { return relationID; } ………… } TU Dresden - Institut für Bauinformatik 16.05.2016 6 Komplexe Relationen Komplexe Relationen wie: Abstand von Gruppe von ....... Können nicht mehr als Attribut abgebildet werden, da sie z.B. Methoden aufweisen. Die komplexe Relation muss als Objekt abgebildet werden. Mit je einer einfachen Zuordnungsrelation zu den beiden verbundenen Objekten. Datenstruktur: Komplexe Relation Obj1 Einfache Relation Abstand Programmstruktur: Einfache Relation Obj2 public class Abstand { private int relationID1; private int relationID2; public double berechneAbstand(Object obj1, Object obj2); …… } TU Dresden - Institut für Bauinformatik 16.05.2016 7 Algorithmus Abstand Im Fall von wenigen Objekten kann der Abstand zwischen 2 Objekten direkt nach der bekannten Gleichung für den euklidischen Raum berechnet werden: d d2 n d i 1 2 i mit di = xi,1-xi,2 xi = x, y, z d1 Bei sehr vielen Objekten n >> 10 würde dies zu einem enormen Aufwand führen und es ist angebracht über eine Strategie nachzudenken und einen Algorithmus zu entwickeln. Strategie 1: Schränke die Untersuchung auf die Objekte ein, die sich überhaupt bewegt haben. Strategie 2: Untersuche zuerst, ob sich die Objekte überhaupt in der Nähe befinden, so dass es zu einem Zusammenstoß kommen kann. Strategie 3: Berechne den Abstand nur für die verbleibenden Objekte TU Dresden - Institut für Bauinformatik 16.05.2016 8 Algorithmus Abstand Lösung zu Strategie1: Pattern Beobachter Installiere für jedes Objekt einen Beobachter bzw. nutze einen schon installierten Beobachter, der meldet ob sich ein Objekt bewegt hat. Lösung zu Strategie 2: Intervalle Unterteile das zu untersuchende Gebiet in eine endlich Anzahl von Intervallen Hier: rechteckige Baustelle Unterteilung in endlich viele kleine Gebiete, die bezogen auf die x und die y- Koordinate hierzu parallele Grenzen aufweisen einfache min/max-Abfrage und für möglichst viele Gebiete gleiche Grenzwerte aufweisen möglichst viele Abfragen zusammenfassbar TU Dresden - Institut für Bauinformatik 16.05.2016 9 Relationsart Die Relation kann entweder beim Subjekt oder beim Beobachter angesiedelt sein: Subjekt Beobachter LKW Gebiet X LKWi Y LKWj Winkel oder Siloi ……… ……… Aktuelles Gebiet …… zusätzliches Relationsattribut beim Subjekt TU Dresden - Institut für Bauinformatik separate Liste beim Beobachter 16.05.2016 10 Lösungsumsetzung Obj1 Beobachter Sortiere bewegte Objekte Liste pro Gebiet Abstand aller Objekte pro Gebiet Konsequenz Programmablauf: Wiederhole bis zum Simulationsende Objekte melden sich im aktuellen Gebiet an Ermittle alle Objekte in einem Gebiet, die sich bewegt haben Berechne die Abstände aller bewegten Objekte zu allen anderen Objekten in einem Gebiet Ist der Abstand kleiner Mindestabstand Ja Nein Konsequenz: anhalten, umfahren % TU Dresden - Institut für Bauinformatik 16.05.2016 11 Objekt hat Ausdehnung Bisher sind wir davon ausgegangen, dass das Objekt ein Punkt ist. Hat das Objekt eine Ausdehnung, beschrieben durch seine Geometrie (hier ebene Fläche) so ist die Strategie zu erweitern. Problem 1: kürzester Abstand zwischen zwei beliebig geformten Körpern Problem 2: es gibt Objekte, die in mehr als einem Gebiet liegen Problem 3: Gebiete für Strategie 2 sollen größer als das größte zu untersuchende Objekte sein Vereinfachung: Jedes Objekt kann durch ein umschreibendes Rechteck repräsentiert werden TU Dresden - Institut für Bauinformatik 16.05.2016 12 Algorithmus Abstand Problem: Strategie 4: Suche die Seiten der beide Objekte, die sich gegenüber liegen. Verbinde die Schwerpunkte der beiden Objekte. Bestimme die Schnittpunkte der Schwerpunktlinie mit der Objektbegrenzungslinie für jedes Objekt. Bestimme den Abstand der beiden Eckpunkte der Objektbegrenzungslinie zum anderen Objekt für jedes der zwei Objekte Sortiere die Abstände aus, die außerhalb des Objektes auf der Verlängerung der Begrenzungslinie liegen. Bestimme von den verbleibenden Abständen den kürzesten Abstand. TU Dresden - Institut für Bauinformatik 16.05.2016 13 Objekt in mehreren Gebieten Strategie 5: Bestimme für den Mittelpunkt des Objekts das Gebiet und prüfe, ob der umschreibende Kreis im gleichen Gebiet liegt (ist so aufwendig wie 4 Eckpunkte bestimmen), wenn nicht, dann: Bestimme für jeden Eckpunkt das Gebiet einzeln. Das Objekt kann mehreren Gebieten zugeordnet sein. TU Dresden - Institut für Bauinformatik 16.05.2016 14 Bestimmung der Lage eines Punktes Die Bestimmung in welchem Gebiet ein Punkt liegt (einzuordnen ist), ist ein Sortieralgorithmus, falls die Grenzen der Gebiete zu den Achsen parallele Linien sind. Denn es gilt: xGi ≤ xp < xGi+1 yGi ≤ yp < yGi+1 Vorgegeben ist die sortierte Liste der Grenzlinien jeweils für x und y. Vom einzuordnenden Punkt wird die x bzw. y Koordinate an das Ende der Liste eingefügt und ein Sortieralgorithmus gestartet. Sonderfall: Falls es sich um äquidistante Abstände handelt, kann das Gebeit auch durch Berechnung bestimmt werden: xGi = i = aufgerundet (xp/∆x) falls bei 1 beginnend abgerundet -“0 beginnend TU Dresden - Institut für Bauinformatik 16.05.2016 15 Mindestabstand d ≠ 0 Problem: Strategie 1: Strategie 2: Konsequenz muss schon eintreten, wenn der Abstand noch > 0 ist Objekte sind um einen Sicherheitsabstand (Lichtraumprofil) zu vergrößern, der dem halben mind. Abstand entspricht. bei einer verkanteten Berührung ist eine genaue Berechnung für die identifizierte Ecke notwendig, da die Ecken des Lichtraumprofils tatsächlich ausgerundet sein müssten. Anm.: Abstandsberechnung für verkantete Rechtecke deckt diesen Fall hier schon mit ab TU Dresden - Institut für Bauinformatik 16.05.2016 16