Visualierung von zusammenhängen

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Visualierung von zusammenhängen

    Hallo,

    das Thema passt nicht zu 100% hier rein, aber auch nicht zu 100% in eine andere Kategorie. Aber ich denke, hier finde ich noch die meisten "Ansprechpartner".

    Ich schreibe derzeit meine Abschlussarbeit im Bereich der Datenvisualisierung. Und diese möchte ich mit dem iPad machen. Dabei geht es darum, dass ich erstmal ganz simple Objekte (Kreise, Quadrate, etc) zeichne und diese dann mit Linien verbinde. So habe ich dann die Möglichkeit, Kontexte und deren Zusämmenhänge darzustellen. Die Funktionalität soll auch noch das Speichern und Laden von solchen Visualierungen beinhalten. Ich muss mir also eine Logik überlegen, wie ich die Zusammenhänge mit Zahlen abspeichere. Ebenso soll es möglich sein, die gesamte "Zeichenfläche" zu leeren, einzelne Objekte bzw. nur deren Verbindungen (Zusammenhang) zu löschen.

    Für dieses Projekt vergleiche ich nun HTML5/JavaScript (Paper.js) mit Objective-C. Hierbei fällt erstmal auf, dass sich JavaScript nur bedingt eignet:
    1. JavaScript ist nicht wirklich objektorientiert, was den Code sehr umfangreich werden lassen kann :S
    2. Die Gesten-Unterstützung ist leider nicht so gut wie bei Objective-C
    3. Animationen gehen in Paper.js nur mittels Veränderung des Alpha-Werts über die Zeit (Händisch im onEnter-Frame-Event)

    Vielleicht kennt ihr ja noch andere JavaScript-Libraries oder Frameworks die sich dafür anbieten würde. Also auf Basis von JavaScript oder so.

    Da ich mich jetzt aber, aufgrund der obengenannten Punkte, eher für Objective-C entschieden haben, suche ich nach Literatur zum Thema "Gesten"-Steuerung. Ich möchte diese Elemente (Kreise, Quadrate, Rechtecke) mittels Touch anlegen und mittels Touch verschieben. Bei längerem Touch soll ein Menü um das Elemente erscheinen (dort kann ich dann z.b. Löschen, Verbindungen entfernen, etc). Mittels Wischen auf der Zeichenfläche soll ein allgemeines Menü erscheinen (Zum Leeren der Fläche, speichern und laden).

    Vielleicht könnt ihr mir ja den einen oderen anderen Tipp geben. Einerseits zu JavaScript-Libraries/Frameworks. Andererseits zu Objective-C (literatur).

    Danke vielmals.
  • Vivid schrieb:

    JavaScript ist nicht wirklich objektorientiert, was den Code sehr umfangreich werden lassen kann
    Die Gesten-Unterstützung ist leider nicht so gut wie bei Objective-C
    Animationen gehen in Paper.js nur mittels Veränderung des Alpha-Werts über die Zeit (Händisch im onEnter-Frame-Event)

    Alle drei Behauptungen sind so leider nicht ganz richtig:
    1. Welche OO-Fähigkeiten unterstützt JavaScript denn nicht?
    2. Kennst Du die Touch-Handler für die HTML-Elemente? Die funktionieren im Prinzip wie die UIResponder-Methoden.
    3. Über CSS-Transsitionen bekommst Du flüssige Animationen hin. Die funktionieren ähnlich wie die View-Animationen: developer.apple.com/library/sa…iCSSRef/Introduction.html
    „Meine Komplikation hatte eine Komplikation.“
  • Ja, du hast schon Recht. Aber der Code ansich ist nicht wirklich sauber (aufgeräumt). Ein Beispiel sind Klassen. Wenn ich in Objective-C eine Klasse anlege, kann ich davon Objekte erzeugen. Bei JavaScript kapsel ich dann alles in eine function(). Z.B. wird aus meiner Klasse "Entity" (in Objective-C) in JavaScript dann ein function Entity() { ... }

    Ich bemängel viel mehr die Unübersichtlichkeit. Gerade Paperjs wirkt auf mich so, als würde alles ein großer Klumpen Code werden. Alles in eine Datei, etc. pp.

    Sollte ich also lieber nicht zu Objective-C greifen? Ich dachte, dass Objective-C die bessere Wahl wäre. hmmm...
  • Ja, bisher bin ich so weit, dass ich für jedes Objekt ein eigenen UIView habe. So gibt es z.b. ein Quadrat-View, ein Linien-View, ein Kreis-View, ein MenueFlaechen-View, etc... Und in der DrawRect()-Methode des Views zeichne ich dann z.B. den Kreis, das Quadrat oder die Menüfläche. Das macht doch so schon mal Sinn oder?

    Nachteil an der ganzen Sache ist bisher, dass ich die Linie immer von Mittelpunkt zu Mittelpunkt zeichen. Mache ich jetzt den Kreis halbtransparent, sieht man die Linie. Aber hier kann man sicherlich noch mit Maskierung arbeiten.

    Cappuccino klingt an sich auch ganz nett. Müsste ich mir halt mal en detail anschauen. :)

    Bei der nativen Lösung merke ich nur jetzt schon, dass ich mit den ganzen Gesten durcheinander komme. Die Recognizer sind ja wirklich nett. Nutzt man aber Recognizer und touchesEnded, etc.. dann wird es schnell frickelt. :)
  • Also ich habe jetzt nochmal nach JavaScript geschaut. Mich stört wohl einfach dieser Fakt, dass Funktionen und Klassen gemischt werden. :( Und bei Paper.JS halt noch der Fakt, dass alles in einer Datei steht.

    Gibt es sonst noch gute Frameworks die sich ideal zum Zeichnen eignen? jQuery Mobile ist da ja wohl eher nicht das richtige, hmm?

    Ich sollte mir wohl auch mal PhoneGap anschauen..

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Vivid ()

  • Vivid schrieb:

    Mich stört wohl einfach dieser Fakt, dass Funktionen und Klassen gemischt werden.
    »Objekte sind in JavaScript klassenfrei.« (Douglas Crockford, JS-Guru) – Ich glaube daher nicht, dass Du das was mischen kannst ;) BTW ist in JavaScript mit Ausnahme einiger primitiver Datentypen alles ein Objekt, einschließlich Funktionen.

    Lesetipps:
    • OOP in JavaScript: iX 4/2001, S. 194–197
    • Fortgeschrittene OO-Programmierung in Javascript (iX 01/2007, S. 135–139)


    Vivid schrieb:

    Gibt es sonst noch gute Frameworks die sich ideal zum Zeichnen eignen?
    JIT, Raphaël’s Javascript Library, Bluff Graphs, JSChart, jqPlot, Ext JS (ab v4), JSXGraph, Protovis und wahrscheinlich ungefähr 1.000 andere.

    Carsten
  • Vivid schrieb:

    Also ich habe jetzt nochmal nach JavaScript geschaut. Mich stört wohl einfach dieser Fakt, dass Funktionen und Klassen gemischt werden. :(

    JavaScript ist eine prototypbasierte objektorientiere Programmiersprache. Dort gibt es keine Klassen.
    Vermutlich ist dieses Verständnisproblem Ursache für deine nachfolgenden Probleme.

    Weiterhin verstehe ich die Frage nicht bzw. seh nicht einmal eine.
    «Applejack» "Don't you use your fancy mathematics to muddle the issue!"

    Iä-86! Iä-64! Awavauatsh fthagn!

    kmr schrieb:

    Ach, Du bist auch so ein leichtgläubiger Zeitgenosse, der alles glaubt, was irgendwelche Typen vor sich hin brabbeln. :-P
  • Danke BlueM, für deine Antwort.

    Zu deinem Hinweis bzgl. klassenfreien Objekten: Ich bin es von anderen Sprachen halt gewohnt, dass ich eine Klasse anlege. Diese Klasse hat Eigenschaften und Methoden. Natürlich lässt sich das auch mit JavaScript realisieren, jedoch wird der gesamte Code dann nur mit einer function xxx() {..} umhüllt. Also, wenn ich eigene "Klassen" nutzen möchte. Das war für mich extrem ungewohnt.

    Danke auch für die Frameworks.