AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Zoom anpassen für ein 2D Koordinatensystem.

Ein Thema von gemy · begonnen am 20. Jan 2020 · letzter Beitrag vom 20. Jan 2020
Antwort Antwort
gemy

Registriert seit: 17. Feb 2019
34 Beiträge
 
#1

Zoom anpassen für ein 2D Koordinatensystem.

  Alt 20. Jan 2020, 13:05
Mahlzeit !

Ich habe ein Problem, komme leider auf keine gute Lösung:


Ich habe einen canvas. Auf diesen Canvas Zeichne ich Kerzen (Börse). Nun habe ich Werte aus einer csv Datei. Diese trage ich in den Canvas als Kerzen ein (Hoch- tief- close -open).


Nun hat mein canvas 500 pixel in der Höhe. Wenn z.B. den Deutschen Aktien index lade und eine Kerze darstelle, so habe ich z.B. 13400-13550 = 150 Punkte = 150 pixel differenz. Sieht gut aus auf dem canvas.

Wenn ich aber nun den Eur/CHF lade, so hat eine Kerze nur 1 Pixel. (Kurs = 1,07).

Was ich nun machen muss ist :

Je höher der Kurs desto kleiner der Zoom.



Ich habe schon mit mehreren f(x) herumgedoktert, bekomme es aber nicht hin.


Gegeben :
Bei Kurs 1,50 soll der Zoom 9000 sein.
Bei Kurs 13000 soll der Zoom 1 sein.

Abstufungen :20

Der Zoom soll expotentiell nach unten gehen, aber bei 13000 bei 1 sein.


Kurs : currency ( candle[0].candleprice[sopen])
zoom : currency

Ich komme leider auf keine Lösung. Vielleicht gibt es ja ein Mathe und Programmier Genie, der das nicht als Problem sieht.
  Mit Zitat antworten Zitat
TiGü

Registriert seit: 6. Apr 2011
Ort: Berlin
3.070 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: Zoom anpassen für ein 2D Koordinatensystem.

  Alt 20. Jan 2020, 14:53
Versteht so keiner.
Hänge doch mal Bilder vom Ist-Zustand an und male dir mit Paint oder sonstwas das gewünschte Soll-Ergebnis dazu.
  Mit Zitat antworten Zitat
Rainbow6

Registriert seit: 21. Mai 2019
20 Beiträge
 
#3

AW: Zoom anpassen für ein 2D Koordinatensystem.

  Alt 20. Jan 2020, 14:59
Im Prinzip brauchst du einen "dynamisch" Zoom Faktor, den du natürlich auch ein wenig beeinflussen kannst.

Das ganze sollte eigentlich über einen einfachen Dreisatz zu lösen sein. Natürlich ist es Besser evtl. die Y-Achse immer erstmal aufzurunden

13550 => 13600
107 => 110

500 Pixel : 13600 Y => 0,03676 Pixel/Y x 13550 Y => 498 Pixel
500 Pixel : 110 Y => 4,54545 Pixel/Y x 107 Y => 486 Pixel

Damit legst du quasi den Maßstab für die Y-Achse dynamisch fest - ich würde dabei immer zusehen, dass du je nach Größenordnung von Y eben die Aufrundung entsprechend machst.

Ich hoffe das hilft dir ein wenig - ich bin grad unterwegs, und kann jetzt keine komplette Pascal-Implementierung machen.

Grüße aus Franken
Daniel
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:35 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz