Kein Folientitel

Werbung
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
Herunterladen