AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Kartesische Koordinaten in Pixel umrechnen
Thema durchsuchen
Ansicht
Themen-Optionen

Kartesische Koordinaten in Pixel umrechnen

Ein Thema von Androxin · begonnen am 14. Jun 2011 · letzter Beitrag vom 14. Jun 2011
Antwort Antwort
Androxin

Registriert seit: 14. Jun 2011
6 Beiträge
 
#1

Kartesische Koordinaten in Pixel umrechnen

  Alt 14. Jun 2011, 12:51
Moin.

Ich bin gerade dabei an einem gezeichneten Koordinatensystem mit 4 Quadranten rumzuwerkeln.

Nun brauche ich eine Funktion, die mir aus den berechneten x,y Koordinaten den richtigen Bildpunkt auf meiner Zeichenfläche ermittelt - und umgekehrt.
Das ganze soll dann natürlich zum Wertebereich des Koordinatensystems passen.

Kann mir jemand beim zusammensetzen der Formel für die Umrechnung behilflich sein?

Die Lösung ist, wie immer, ganz einfach. Nur ich komme da gerade irgendwie nicht drauf.

Neben der Kartesischen/Bildkoordinate sollten noch die maximale Bildkoordinate und der Wertebereich in die Funktion eingehen.


Bsp:
Code:
Wertebereich: 5
MaxBildkoordinate: 20

 0  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20

--------------------------------------------------------------
-5    -4    -3    -2    -1     0     1     2     3     4     5

Pixel2Koordinate(6, 20, 5) ==> -2
Pixel2Koordinate(5, 20, 5) ==> -2,5

Koordinate2Pixel(-4, 20, 5) ==> 2
Koordinate2Pixel(3,5, 20, 5) ==> 17

Ich hoffe, dass mich jemand auf die richtige Bahn bringen kann.

Gruß
Androxin

PS: Nein, ich brauche keinen hübschen Quellcode. Ein Denkanstoß oder eine unhübsche Formel würden mir schon reichen.
  Mit Zitat antworten Zitat
gammatester

Registriert seit: 6. Dez 2005
999 Beiträge
 
#2

AW: Kartesische Koordinaten in Pixel umrechnen

  Alt 14. Jun 2011, 13:38
Ich nehme an, Du willst zwei lineare Funktionen für die beiden Abbildungen haben, wobei die jeweiligen Koordiatenachsen parallel sind und nur unterschiedliche Skalierungen und Nullpunkte haben.

Für eine Funktion: px_min wird auf Kx_min, px_max wird auf Kx_max abgebildet, also eine Gerade durch zwei Punkte. Allgemein wird dann px auf Kx abgebildet:

px -> Kx = (Kx_max - Kx_min)/(px_max - px_min) * (px - px_min) + Kx_min

Entsprechend für y (eventuell gespiegelt bei Bildschirmkoordinaten). Wenn die Beziehungen nicht so einfach sind (Drehungen, nicht-lineare Verzerrungen usw.), muß man einen anderen Ansatz verwenden.
  Mit Zitat antworten Zitat
hboy

Registriert seit: 16. Jan 2004
364 Beiträge
 
#3

AW: Kartesische Koordinaten in Pixel umrechnen

  Alt 14. Jun 2011, 13:42
Ich werfe mal Wiki in die Runde: http://de.wikipedia.org/wiki/Affine_Abbildung
Power is nothing without TControl
  Mit Zitat antworten Zitat
Androxin

Registriert seit: 14. Jun 2011
6 Beiträge
 
#4

AW: Kartesische Koordinaten in Pixel umrechnen

  Alt 14. Jun 2011, 13:54
Code:
Wertebereich: 5
MaxBildkoordinate: 20

 0  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20

--------------------------------------------------------------
-5    -4    -3    -2    -1     0     1     2     3     4     5

Pixel2Koordinate(6, 20, 5) ==> -2
Pixel2Koordinate(5, 20, 5) ==> -2,5

Koordinate2Pixel(-4, 20, 5) ==> 2
Koordinate2Pixel(3,5, 20, 5) ==> 17
Hab grad noch eine Runde gegrübelt und bin (px 2 kd)-Variante auf folgende Formel gekommen:

0-(((MaxBildkoordinate/2)-px)*((Wertebereich/(MaxBildkoordinate/2))))

mit Zahlen gefüllt (2. Beispiel):
0-(((20/2)-5)*((5/(20/2)))) = -2,5

Für die andere Richtung muss man es nur vernünftig umstellen, denke ich.

@gammatester: ich muss zugeben, dass ich deine Lösung inhaltlich noch nicht so ganz verstanden habe.
Funktionieren tut sie aber prima: (5 - -5)/(20 - 0) * (5 - 0) + -5 = -2,5
  Mit Zitat antworten Zitat
gammatester

Registriert seit: 6. Dez 2005
999 Beiträge
 
#5

AW: Kartesische Koordinaten in Pixel umrechnen

  Alt 14. Jun 2011, 14:39
Hier eine einfache Schnellableitung mit Standardvariablen x,y: Gesucht Gerade durch (x1,y1) und (x2,y2). Ansatz Geradengleichung y = m*x + b. Punkte einsetzen ergibt

y1 = m*x1 + b (Gl.1)
y2 = m*x2 + b (Gl.2)

Gleichungen subtrahieren (Gl.2 - Gl.1): y2-y1 = m*(x2-x1) also m = (y2-y1)/(x2-x1). Einsetzen von m in Gl.1 ergibt b = y1-(y2-y1)/(x2-x1)*x1. Also insgesamt:

y = m*x+b
y = (y2-y1)/(x2-x1)*x + y1 - (y2-y1)/(x2-x1)*x1
y = (y2-y1)/(x2-x1)*(x-x1) + y1
  Mit Zitat antworten Zitat
Androxin

Registriert seit: 14. Jun 2011
6 Beiträge
 
#6

AW: Kartesische Koordinaten in Pixel umrechnen

  Alt 14. Jun 2011, 14:43
Au man.

Das ist ja echt total einfach. Wie ich es ja schon vermutet habe.
Doof, wenn man mal einen Knoten im Gehirn hat und auf einen Lösungsweg festgefahren ist.

Vielen, vielen Dank für die Erleuchtung!
  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 05:24 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