Koordinatensystem

Wieso? Kannst Du das begründen? Das von Takidoso vorgeschlagen Verfahren mit dem Logarithmuspapier sollte wunderbar funktionieren. Das Problem ist nur, das negative Werte nicht abgebildet werden können. Diese müssten aber nur in positive Werte umgewandelt und gespiegelt werden. Das ist simpel.

Es hätte den Vorteil, das immer der gesamte Wertebereich sichtbar ist und das der Bereich kleiner Werte vergrößert abgebildet wird.

So wie das Problem dargestellt wurde, ist die dabei entstehende Verzerrung kein Problem.

Lupe und Zoom haben immer das Problem, das Teile des Wertebereichs nicht dargestellt werden können.

Gruß

Das Logarythmuspapier sollte nur ein Beispiel sein für nicht lineare Darstellung sein. Wenn ich girl2005 richtig verstanden habe geht es um die Darstellung eines einzelnen oder weniger einzelner Werte, also keine Kurve. Insofern verstehe ich nicht warum man immer ein Koordinatensystem über die theroretische Gesamtskala darstellen sollte, wenn eh auf der meisten Fläche nix zu sehen ist.
Ich würde auf Bedarf hin zoomen, und zwar dann auch ganz ohne Scrollbalken. Wenn mehr als ein Wert dargestellt wird, muss man dann halt kleinsten und größten Wert nehmen, um daraus zu ermitteln welche Skalaeinteilunen das Koordinatensytem hat und vor allem welche Bereiche tatsächlich dargestellt werden müssen um den oder die wenigen Werte dort sichtbar einzutragen. Ständig +-600 darzustellen unabhängig des darzustellenden Wertes, würde ich vermeiden, da offenbar eine Notwenigkeit bestehet bei kleinen Beträgen (+-5) eine genauere Skala (mehr Pixel pro darzustellende Einheit) zu verwenden. Aus meiner Sicht ist das vorrangig eine Dreisatz-Geschichte mit entweder Kontrolle des Anwenders, oder mit reinem uneingreifbaren Automatismus über den Zoom.
 
Zuletzt bearbeitet:
Wenn aber Messwerte angezeigt werden, kann das zu einer sehr unruhigen Darstellung führen. Durch einen Zoom würden außerdem extreme Ausschläge nicht extrem erscheinen. Wenn der Anwender durch Ablenkung den zoom "verpasst" fällt ihm die neue Skalierung vielleicht nicht einmal auf.
 
Wenn aber Messwerte angezeigt werden, kann das zu einer sehr unruhigen Darstellung führen. Durch einen Zoom würden außerdem extreme Ausschläge nicht extrem erscheinen. Wenn der Anwender durch Ablenkung den zoom "verpasst" fällt ihm die neue Skalierung vielleicht nicht einmal auf.

Das ist ein interessanter und berechtigter Einwand. Man könnte ja den Zoom als einen Nichtstufenlosen-Zoom darstellen. z.B. lässt man nur eine Handvoll Zooms zu. Und wenn man dann noch den Wert irgendwo noch hinschreibt, bzw die Skala bei entsprechend genauen Auflösungen noch beschriftet...
Welche Zooms das sind, diese vom Programm automatisch gewählt werden sollen oder der Anwender die Möglichkeit bekommen soll dies zu bestimmen (Kontextmenu, oder Buttons ...) und Spielarten wie ob grundsätzlich der Ursprung des Koordinatensystems in der Mitte liegen soll, sollte man mit dem Anwender absprechen.
Da man vermutlich keine Scrollbalken wünscht ist es IMHO besonders wichtig , dass man die Größe des Panels mit in die Relation der darzustellenden Skala einbezieht, denn die Bildschirmauflösung sollte man wirklich nicht als fix sondern als variabel betrachten.
 
Ich habe eine (noch fehlerhafte) Implementierung für das Logarithmuspapier. Ich finde die Darstellung sehr übersichtlich und wenig fehleranfällig. Was mich aber mal sehr interessieren würde, ist wie weit girl2005 mit dem Problem ist.

Wäre irgendwie gut, wenn sie wieder in die Diskussion eingreift. ;-)

Grüße
 
Hallo zusammen,

ich hatte in der letzten Zeit nicht die Möglichkeit, hier zu schauen. Ich freue mich dass die Diskussion immer noch lebendig ist.
Zitat von Takidoso
Mal noch 'ne Frage zu Deiner Aufgabenstellung:
Verstehe ich das richtig, dass Du einzelne Werte, also Punkte, im Koordinatensystem darstellen willst, oder musst Du ganze Kurven darstellen?

Du hast es richtig verstanden Takidoso, ich muss nur einen Punkt anzeigen, das sich ständig bewegt. und alle Bereiche sind wichtig. nur der X-Bereich zwischen -5 und 5 und der Y-Bereich zwischen -0.05 und 0.05 muss immer sichtbar sein,weil es das Ziel ist, wo der Punkt sein soll.
Das Problem des Zooms ist, dass man nicht genau den Bereich sieht wo man ist. Deshalb habe ich mir gedacht verschiedene Koordinatensysteme für verschiedene Bereiche zu erstellen. aber das habe ich noch nicht geschafft.

zitat von IMAGO
Was mich aber mal sehr interessieren würde, ist wie weit girl2005 mit dem Problem ist.

ich habe jetzt ein Koordinatensystem erstellt. Wenn der Punkt sichtbar im Panel ist ändere ich nichts, sonst mache ich eine Skalierung ,so dass der Punkt ganz links oder ganz rechts im Panel steht, damit ist der wichtige Bereich in der Mitte sichtbar .
Das Problem ist jetzt bei größen Werten ab 200 und -200 auf der X- Achse oder ab -1.5....der Punkt kann angezeigt werden, aber nicht der Bereich in der Mitte.
 
Also wenn es nur ein einzelner Punkt ist, der angezeigt werden muss, und dieser z.B. in x-Rcihtung auf +500 steht, ist es dann vielleicht eine gute Idee in diesem Moment den negativen Bereich des Koordinatensystems nicht anzuzeigen oder zumindest nur ein kleines Stück davon weit um den Ursprung zu sehen.
mal zur Ilustration

Code:
      !
      !                                           *
------!-----------------------------------------------
      !
      !

anstelle von

Code:
                                               !
                                               !                                           *
-----------------------------------------------!-----------------------------------------------
                                               !
                                               !
Man würde dann den X-Wert des Punktes mit einem Schwellenwert vergleichen, um darüber zu entscheiden welcher von den beiden Darstellungen einzusetzen ist.
Man kann dies, so wie Du es offenbar vorhast, entweder statisch machen (n Programmcodevarianten für n Koordinatensystemdarstellungen).
Man kann auch das Koordinatensystem dynamsch (algorithmisch) erstellen.

Der Vorteil einer statischen Lösung ist, dass man sich nicht so viele mathematische Überlegungen machen braucht, ist aber dann auch nicht so flexibel und würde erneute statische erweiternde Programmeirung bedeuten, wenn man z.B. eine neue Auflösung wollte.
Der Vorteil einer dynamsichen Erstellung wäre, wenn es richtig gemacht ist, dass die zu Verfügung stehende Größe des Anzeigefensters mit einbezogen wird, und auch ein Zoom nicht ausgeschlossen wäre. Ist halt eine Frage von Verhältnisrechnung (synonym Dreisatz).
 
hallo takidoso,

ich benutze die Lösung , die du dargestellt hast, man sieht den Punkt und den wichtigen Bereich um den Ursprung des Koordinatensystems..leider endet diese Möglichkeit bei 150 oder -150 ..auf der X-Achse und auch nur für einen Teil der Y-Achse.
für andere Werte muss ich ein neues Koordinatensystem erstellen. aber ich weiß nicht genau wie? was meinst du mit ein dynamisches Koordinatensystems?
 
Mit dynamisch meine ich in diesem Falle, dass je weiter der Punkt vom Ursprung entfernt ist das Koordinatensystem kleiner dargestellt wird, also ein größerer Ausschnitt des Koordinatensytems sichtbar wird.
Zugegeben sowas macht vielleicht eher bei mehreren Punkten bzw Kurven erst richtig Sinn, da man meistens einen Gesamtüberblick bzw Eindruck über einen Graphen bekommen möchte.
Simples Rechnbeispiel...
Dein darzustellendes Koordinatensystem soll bis 100 reichen (100 also logischer Koordinatenwert) und die zur Verfügung stehende Breite deines Panels wäre 300 Pixel,
so wären ein logischer Koordinatenwert physich 3 Pixel. Nehmen wir an, Dein Panel welches zur Verfügung steht hätte 50 Pixel breit, so wäre ein logischer Koordinatenwert 1/2 Pixel (50pixel/100 Koordinatenwert). was für die Breite gilt, gilt auch für die Höhe natürlich. Wenn man die Änderbarkeit auf das logische Koordinatensystem betrachtet sollte man es halt auch andersherum betrachten. z.B. Panel hat 200 Pixel Koordinatensystem hat 50 Einteilungen also 200/50. Diesen Bruch könnte man den Skalierungsfaktor nennen.
Da Du den Ursprung des Koordinatensystems vielleicht nicht auf den linken Rand verbannen willst kannst Deu eine die Verschiebung mehr zur Mitte hin einbeziehen. Nehmen wir mal an Du möchtest den Ursprung so legen, dass Du zwichen -49 und +100 logische Koordinatenwerte anzeigen kannst, wo bei wir nun Annehmen dass Dir 300 Pixel zur Verfügung stehen sähe vermutlich die Rechnung so aus:

Code:
physiche Breite         = 300
logische Breite          = 49 +100 +1     // 1 steht für die 0 selbst
Skalierungsfaktor(X)   = physiche Breite/ logische Breite
physicher Urspung(x) = 50 * SkalierungsfaktorX

Die Höhe ist das gleiche in Grün habe ich hier mal außer Acht gelassen, sollte aber analog dazu berechnet werden.

Wo ich es aber gerade so überlege kann es für Dich aber auch gut sein, da Du nur einen einzelnen Punkt darstellen möchtest, einfach nur das Koordinatensystem zu verschieben
und bei großen Zahlen den Ursprung nicht wirklich einzeichnest sondern nur die Beschriftung änderst. Das würde dann Schematisch dann so aussehen

Code:
 |                                                       *
 |
 |-----|-----|-----|-----|-----|-----|-----|-----|-----|-----|
10    20    30    40    50     60    70    80    90    100   110

Code:
 |                                                       *
 |
 |-----|-----|-----|-----|-----|-----|-----|-----|-----|-----|
310   320   330   340   350    360   370   380   390   400   410

Man könnte sich auch überlegen farbige dünne Hilfslinien auf der y-Achse zu ziehen für einfacheres Ablesen, obgleich ich als "Anwender" annehmen würde immer auch die Koordinaten irgendwo klartextlich angezeigt zu bekommen.
 
hallo takidoso,

vielen Danke für die ausführliche Erklärung. du hast es genau verstanden, was ich machen will.
Die Mitte soll immer sichtbar sein. Ein anders Problem ist die Beschriftung der Achsen, jedes Mal wenn ich die Skalierung mache soll ich auch die Beschriftung der Achsen ändern.


physiche Breite = 300
logische Breite = 49 +100 +1 // 1 steht für die 0 selbst
Skalierungsfaktor(X) = physiche Breite/ logische Breite
physicher Urspung(x) = 50 * SkalierungsfaktorX


was bdeutet 50 hier?
 
Zuletzt bearbeitet:
Gedacht war hier im Beispiel, dass das dargestellte Koordinatensystem von -49 bis +100 gehen würde.
Das heist der Ursprung wäre im physischen Abbild auf 50 logische Einheiten nach rechts verschoben, wobei die logischen Einheiten in dem entsprechenden physichen Verhälstnis stehen müssen (s. SkalierungsfaktorX)
demnach stünde der Ursprung auf dem pyhsichen Abbild auf 50 * SkalierungsfaktorX physische Einheiten (Pixel).

Code:
   ----------|--------------------
-49          0                   100

   |     das seien 300 pixel     |
So in der Art war das mit der Beispielrechnung gedacht.

die anderen beiden Darstellungen waren mehr auf die Idee der Verschiebung auf den zu betrachtenden Bereich gemünzt, wobei der Ursprung nicht mehr physich auf dem Panel auftaucht, da er viel zu weit weg vom darzustellenden Punkt (Wert) ist, für den Fall, dass man die Darstellung des gesamten Koordinatensystems oder zumindest der gesammt möglichen Skala meiden möchte.
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück