Webdesign in Siegen

Dreidimensionale Darstellung von Beziehungen

Du brauchst Tipps oder Anregungen zu deiner Homepage und willst, dass diese noch besser wird? Dann zeig sie uns!

Dreidimensionale Darstellung von Beziehungen

Beitragvon cgu am 21.12.2006, 01:12

Vorweg: Ich konnte das passende Forum nicht herausfinden, da es sich um ein außergewöhnliches Thema handelt. Vielleicht kann das einer der erfahrenen Mods in die Hand nehmen, um den Thread verschieben.
__________________________________________________

Guten Abend liebe Community,

folgendes Problem plagt mich in den letzten Tagen, daher suche ich bei euch Rat. Es ist ein Projekt, mit dem ich in der nächsten Zeit betraut sein werde. Leider kann ich euch keine genaueren Daten nennen, aber ich versuche mein Vorhaben so gut es eben geht zu umschreiben.



Basis:

Es gibt eine Datenbank mit benötigten Daten. Die Datenätze stehen untereinander in Beziehung. Diese Beziehungen sollen dargestellt werden. Beziehungen werden mit simplen Linien dargestellt. Datensätze werden mit Ihrem Namen als Schriftzug dargestellt.



Erläuterung:

Jeder Datensatz steht mit seinem „Namen“ in einem dreidimensionalem Raum. Die Anordnung bzw. Positionierung der Datensätze soll anhand eines Algorythmus sinnvoll geschehen. Sinnvoll bedeutet in diesem Fall, dass diejenigen Datensätze, die in Beziehung zueinander stehen, beieinander positioniert werden. Dies könnte man mit einem Datensatz und dessen „Freunden“ vergleichen, die selbst Datensätze darstellen. Die „Freunde“ werden um den Datensatz herum im dreidimensionalen Raum positioniert.



Logische Problematik:

Der Algorythmus muss jewweils auch die „Freunde“ der „Freunde“ mit einbeziehen. Dies hat zur Folge, dass zum Einen viele und vor allem komplexe Beziehungen untereinander entstehen können, sich zum Anderen die Positionierung schwierig gestaltet, da jeder Datensatz nur einmal vorhanden ist und somit eventuell auch Beziehungen über große Distanzen im Raum enstehen. Die Anzahl der Beziehungen ist auf 10 Begrenzt.


Technische Problematik:

Die Technologie, die zum Einsatz kommt, muss sich für die Webdarstellung eigen und einen dreidimensionalen Raum darstellen können, in dem sich der Benutzer bewegen kann. Der Benutzer bewegt sich über das anklicken eines Datensatzes, der dann automatisch im Bild zentriert wird. Dies bedeutet, dass der Benutzer automatisch positioniert wird (keine aktive Bewerbung auf x,y, und z-Achse). Rotation gibt es nicht. Die Struktur wird nach jedem Bildaufbau neu erzeugt.
Der Raum beinhaltet lediglich die „schwebenden“ Datensätze, ist geografisch nicht begrenzt und muss nicht komplett dargestellt werden. Günstigster Weise sollten die Beziehungen untereinander jeweils in echtzeit dynamisch generiert werden und nur der aktulle Ausschnitt –ähnlich dem betreten verschiedener „Level“ in einem Computerspiel- sichtbar sein. Dies könnte z.B. bedeuten, dass nur der aktuell aktivierte Datensatz (in der Abbildung „Datensatz 2“) angezeigt wird, sowie die Datensätze, die sich 3 Verbindungen entfernt finden.


Die untenstehende Abbildung soll das Problem schematisch darstellen. Die Visualisierung soll anders gelöst werden.


Bild
Ja .. öh .. DAS ... das... läuft!
Benutzeravatar
cgu
Mitglied
 
Beiträge: 422
Registriert: 02.09.2006
Wohnort: Siegen

Beitragvon MJK am 21.12.2006, 02:12

Und was ist dein Frage?
Wie du's realisierst? Da würd ich flash empfehlen.
Für den Algorithmus is rekursion sicherlich das einfachste, wenn auch fehleranfällig.
Let's do it!
Benutzeravatar
MJK
Mitglied
 
Beiträge: 378
Registriert: 28.07.2006

Beitragvon cgu am 21.12.2006, 07:36

Ja das ist meine Frage. (Anscheinend wurde meine Fragestellung beim reinkopieren des Textes verschluckt).

Warum denkst du, dass Rekursion fehleranfällig ist? Mal davon abgesehen, dass das der Algorythmus Gefahr läuft sich totzurechnen.

Denkt ihr genauso? Andere Vorschläge? Lasst hören ...

:D
Ja .. öh .. DAS ... das... läuft!
Benutzeravatar
cgu
Mitglied
 
Beiträge: 422
Registriert: 02.09.2006
Wohnort: Siegen

Beitragvon deabua am 21.12.2006, 13:12

Wenn du das wirklich realisieren willst, ist die Darstellung und das Auslesen der Daten dein geringstes Problem.

Rekursives Asulesen, wenig aktuelle Verbindungen cachen (Rekursion kann lange dauern), auch die Darstellung ist da dein geringstes Problem.

Wobei obige angesprochene Thematiken nicht vergessen werden sollen, sprich Rekursion kann ein verdammt langwieriges Problem sein.

Dein eigentliches Problem (und ich schätze mal daran wird es scheitern, so gut wie jede Flowchartsoftware scheitert an dem Problem) dürfte sein eine sinnvolle DArrstellung zu erreichen. Behmen wir an du hast alleine in der 2D Darstellung 3 Knoten, dann ist die Verbindung sehr einfach darzustellen. Bei 4 Knoten die alle miteinander verbunden sind wirds schon schwierig. du hast insgesamt 6 Verbindungen möglich (n+2), nehmen wir an nicht alle sind miteinander verbunden dann bleiben nur noch 5. Der logische Ansatzpunkt ist ein 4eck definiert durch links oben (lo) rechts oben ro usw.

die Verbindung sieht dann in der für den Menschen logischen Sicht so aus

lo-----ro
| / |
lu-----ru

Nur woher soll die Software wissen was rechts oben sein soll, vertausche jetzt mal bei gleichen Verbindungen

ro------lo
| \/
lu-------ru

Schon hast du die erste Überschneidung drin. Wenn du dir jetzt 5 Knoten corstellst hast du schon 8 Verbindungsmöglichkeiten. Diese in eine nichtgeschnittene Form zu bringen ist für den Menschen noch einfach, als Algorithmus schon schwierig. Im 3D Bereich wirds dann richtig komplex.

Ein Ansatzpunkt findet sich hier indem du Abstossungspunkte einbaust. Sprich wenn ein Graph sich schneidet stösst er den anderen ab, sprich Neuausrichtung. So ein Konzept dürfte aber recht bald vor allem real time daran scheitern...http://de.wikipedia.org/wik ... lgorithmus

Das Problem ist also ein Darstellungsproblem.

Einige Links um das zu realisieren

http://de.wikipedia.org/wiki/Polynomieller_Algorithmus
http://de.wikipedia.org/wiki/Graphentheorie
http://de.wikipedia.org/wiki/Repr%C3%A4 ... m_Computer

Da du ja bedingt durch die Datenmange evtl auch endlos viel Verknüpfungen haben kannst oder z.B. nur wichtige Teilbereiche abbilden willst musst du natürlich auch ein bisschen "Tiefenunschärfe" betreiben, sprich momentan wichtiges rausfiltern. Aber auch hier stellt sich die Frage wie der Rechner das wichten soll.

Ich glaube also mal vorsichtig das man einfache Graphen recht einfach darstellen kann, aber umfangreiche Graphen gleube ich eher nicht das man die mit Flash sauber hinbringt.

Zur Machbarkeit eines sinnvollen Algorithmus dazu noch drei Artikel
http://de.wikipedia.org/wiki/Rucksackproblem (das ist ähnlich wie die Graphen anordnung)
und ist z.Z. mit dem Problem http://de.wikipedia.org/wiki/P/NP-Problem
verbunden, löst du das Problem hast du einen Platz in der Ahnengalierie sicher :-)
http://de.wikipedia.org/wiki/Millennium-Probleme

Um es an deinem noch recht kleinen Beispiel zu verdeutlichen verbinde mal Datensatz 9 zusätzlich mit 4 und 1. woher soll die Software wissen wo die 9 am besten steht, durch ausprobieren alleine da du ja n-n Knoten vergleichen musst ist das extrem langwierig.... vor allem wo fängst du an, stell dir vor du definierst ein Knoten objekt als XYZ jeweils mit 0

der nächste Knoten defineirt sich irgendwo muss man ja anfangen als
x+n, y+n, z+n (n stellt den Bezeichner dar verinafcht die Koordinaten Knoten 3 wäre also in einen xWeret von x=0 + n=3 sprich 3) damit bekommst du eine Steigung von 45 Grad sprich ein Strich schräg nach hinten. Jetzt verbinde alle Knoten untereinander, so wie in deinem Beispiel. Dann hast du eine absolut gerade linie. um überhaupt einzelne Linien zu sehen könntest du jetzt ganz banal immer y+n^2 eingeben, damit bekommst du schonmal eine schräg nach inten gebogene Kurve (die Knoten). Die Verbindungen sind aber immer noch maximal schlecht. sie gehen jetzt nur wirr zwischen im Bereich von n0 bis nEnde hin und her.

Das verdeutlicht aber jetzt auch das Problem. Du könntest jetzt natürlich versuchen alle Überschneidungen von n0 asugehende wegzunehmen, sprich solange alle n versuchsweise verschieben bis zu n0 keine Überschneidungen mehr da sind. Wenn du jetzt aber alle Verbindungen zu n1 Überschneidungsfgrei machen willst musst due das gleiche wieder machen, was aber wieder die Verbindungen zu n0 beeinträchtigt. Ich denke daran sieht man das Problem am besten
Render: ALT-Druck
3D-modeller: Fimomännchen
GI: Grosser Lichtschalter
FG: farbige Kugeln in der Gegend rumschmeissen und schauen wo sie aufprallen
bump: auf T-shirt sixpack malen
displacement: obiges T-shirt mit Messer nachbearbeiten
Benutzeravatar
deabua
Mitglied
 
Beiträge: 302
Registriert: 01.09.2006

Beitragvon Gentle am 21.12.2006, 21:14

Du könntest das eventuell mit Java realisieren ... im SDK gibts unter Demo->Applet->Graph Layout sowas, was du suchst (denke ich :) )
Das ist so, wie wenn man einen Kuchen bäckt und aus reiner Loyalität ein Stück Scheisse hineinwirft.
selbst

::U, S, and Toby! - der Blog von Tobias Deml ... ueber meinen Zivildienst in Los Angeles und Kanada ::
Benutzeravatar
Gentle
Mitglied
 
Beiträge: 232
Registriert: 16.11.2006
Wohnort: Wien


Zurück zu Homepage

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast