Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: Mi Mai 15, 2024 06:34

Foren-Übersicht » Programmierung » Mathematik-Forum
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 22 Beiträge ]  Gehe zu Seite 1, 2  Nächste
Autor Nachricht
 Betreff des Beitrags: Koordinatentransformation
BeitragVerfasst: Do Jan 03, 2008 12:05 
Offline
DGL Member

Registriert: Di Mai 24, 2005 16:43
Beiträge: 710
Hallo,

Ich möchte Koordinaten eines Vielecks auf die eines anderen Vielecks umrechnen. (im R2)
Gesucht ist die Matrix M, die einen Punkt P auf den Punkt P' abbildet.
Gegeben sind 4 Punkte A,B,C,D des alten und 4 Punkte A',B',C',D' des neuen Systems.

P' = P * M

Bild

Wenn ich nun ein Gleichungssystem aufstelle, erhalte ich 8 Gleichungen mit 4 Unbekannten. (Die 4 Matrixkoeffizienten)
Nur ist es mir bisher nicht gelungen dieses LGS zu lösen (auch nicht mit Hilfe von Maxima)
Zu beachten ist, dass die Punkte zwar gegeben sind, aber als Konstanten vorliegen, ich also nicht mit Zahlen rechnen kann.
(Da mein Programm diese 8 Punkte vorgibt)
Jemand hat mir ein paar Tipps gegeben, darunter auch, erst einmal in ein System der Art:
A' = (0; 0) B' =(1; 0) C' = (1; 1) D'=(0, 1) umzurechnen.
Dies halte ich auch für sinnvoll, da ich dann von dort leicht ins neue System transformieren kann.
(Zweite Matrix berechnen und beide Matrizen multiplizieren)

Allerdings habe ich Probleme beim Lösen des LGS,
Wie stelle ich das nun an ?

danke schonmal

mfg


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Jan 03, 2008 13:22 
Offline
DGL Member

Registriert: Do Mai 30, 2002 18:48
Beiträge: 1617
Du hast da ein kleines Problem...Du redest von seltsamen Koordinaten: Eine affine Basis im 2D ist lässt sich vollständig durch 3 verschiedene Punkte spezifizieren. Du hast jedoch 4 und dein linkes Bild ist vieles, aber sicher kein Parallelogramm. Es muss aber affin sein, wenn Du erwartest, daß sich ein lineares Gleichung ergibt. Wenn Du die Koordinaten nicht affin spezifizierst, musst Du ne Definition von Deinen Korrdinatensystem geben (Baryzentrisch?). Ansonsten, wenn du affin bist, musst Du halt beschliessen, was Deine 0 ist, deine Koordinaten entsprechend ausdrücken und dann... Schwups http://de.wikipedia.org/wiki/Basiswechs ... torraum%29 ;-)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Jan 03, 2008 13:37 
Offline
DGL Member

Registriert: Di Mai 24, 2005 16:43
Beiträge: 710
Verstehe ich nicht so ganz. Ich möchte die Koordinaten des einen Rechtecks in die des anderen umrechnen. Gegeben habe ich alle Punkte beider Rechtecke wobei A A' B B' C C' und D D' entspricht. Wie gehe ich nun an das ganze heran ?

mfg


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Jan 03, 2008 14:31 
Offline
DGL Member
Benutzeravatar

Registriert: Do Jan 03, 2008 04:51
Beiträge: 14
Mal davon abgesehen, dass dein Rechteck in mathematisch falscher Richtung beschriftet ist, lässt sich dein Viereck in eine Ebene legen, die durch drei seiner Eckpunkte definiert werden kann.
Die Punktgleichungen wären demnach:
OP = OA + r*AB + s*AC

OP' = OA' + r*A'B' + s*A'C'

Dein Ziel ist jetzt aus der ersten Gleichung die Parameter r und s zu bestimmen und in die zweite Gleichung einzusetzten um damit die Koordinaten des Punktes P' zu erhalten.
du hast also resultierend die drei Gleichungen

I: p1 = a1 + r*(b1-a1) + s*(c1-a1) = a1+r*x1+s*y1

II: p2 = a2 + r*(b2-a2) + s*(c2-a2) = a2+r*x2+s*y2

III: p3 = a3 + r*(b3-a3) + s*(c3-a3) = a3+r*x3+s*y3


Um Schreibarbeit zu ersparen habe ich jetzt einmal b1-a1 = x1, c1-a1 = y1 usw. gesetzt.

Diese stellst du nun nach r und s um:

I: r = -(a1+s*y1)/x1 für x<>0, sonst s = a1/y1 für y1=0 etc. (viele Fallunterscheidungen, am konkreten Beispiel wäre es leichter ^^)

II: s = -(a2+r*x2)/y2 für y<>0

= (-a2+(a1+s*y1)/x1)*x2/y2

= (a1*x2+s*y1*x2-a2*x1)/(x1*y2)

= s*y1*x2/(x1*y2)+(a1*x2-a2*x1)/(x1*y2)

s*(1-y1*x2/(x1*y2)) = (a1*x2-a2*x1)/(x1*y2)

s = ((a1*x2-a2*x1)/(x1*y2))/(1-y1*x2/(x1*y2))

den ganzen Kram zu vereinfachen erspar ich mir jetzt - den Wert für s musst du jetzt noch in die Gleichung für r einsetzen und dann die beiden Variablen verwenden um in der zweiten Ebenengleichung den projezierten Punkt zu erhalten. (Achtung: Fallunterscheidungen berücksichtigen!)

Ich würde empfehlen dir das alles nochmal auf ein Blatt Papier zu schreiben, da es auf dem Rechner immer ein wenig unübersichtlich aussieht. Für Nachholbedarf in Sachen Vektorrechnung würde ich folgende Seite empfehlen: www.rither.de

Ob es mit OpenGL jetzt auf irgendeinem Weg einfacher geht, kann ich dir leider nicht beantworten, da ich noch ein totaler Newbie auf dem Gebiet bin. Das wäre auf jeden Fall ein Weg, den du einschlagen könntest.

_________________
MfG cero


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Jan 03, 2008 14:53 
Offline
DGL Member

Registriert: Do Mai 30, 2002 18:48
Beiträge: 1617
Seth hat geschrieben:
Verstehe ich nicht so ganz. Ich möchte die Koordinaten des einen Rechtecks in die des anderen umrechnen.

cerotidinon hat geschrieben:
OP = OA + r*AB + s*AC
OP' = OA' + r*A'B' + s*A'C'

Da steht die Antwort.... In der linearen Algebra tauchen nur 3 der Punkte auf - A;B;C in diesem Fall. Dein D wird dadurch automatisch so gelgegt, daß sich ein Parallelogramm ergibt und ist an sich völlig nutzlos. In deinem Bild auf der linken Seite ist jedoch kein Parallelogramm zu sehen - deshalb die frage, worin du eigentlich rechnest.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Jan 03, 2008 15:01 
Offline
DGL Member
Benutzeravatar

Registriert: Do Jan 03, 2008 04:51
Beiträge: 14
ups, habe gar nicht gesehen, dass das ganze im R2 geschehen soll. In diesem Fall besteht natürlich die Frage, was du nun eigentlich vor hast.. ^^

Im Prinzip hast du ja nur eine Regelmäßigkeit darin, wenn du ein gleichmäßiges Vieleck hast. Ansonsten steckt ja kein System dahinter.

_________________
MfG cero


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Jan 03, 2008 20:01 
Offline
DGL Member

Registriert: Di Mai 24, 2005 16:43
Beiträge: 710
Es muss nicht zwangsweise ein Parallelogramm sein, allerdings könnte ich es, wenn es wirklich deutlich einfacher ist, vielleicht so einrichten. (allerdings gibt es eine gewisse Abweichung/Ungenauigkeit wodurch die Parallelität dann nicht ganz gewährleistet werden kann)
Und wenn ich kein Parallelogramm habe, brauche ich soweit ich weiß 4 Punkte. (R2 ist richtig)
Ich bin nicht allzu bewandert auf dem Gebiet.

mfg


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Jan 03, 2008 21:36 
Offline
DGL Member
Benutzeravatar

Registriert: Do Jan 03, 2008 04:51
Beiträge: 14
Könntest du evtl. nochmal genau erläutern, was du nun eigentlich machen willst? Willst du das Vieleck verzerren?!

Wenn ja, was soll der Punkt dann für Voraussetzungen haben? Gleiches Verhältnis der Abstände zu den anderen Punkten? Gleicher Seitenabstand?
Ich versteh einfach nicht, was du vor hsat. :oops:

_________________
MfG cero


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Jan 03, 2008 22:56 
Offline
DGL Member

Registriert: Di Mai 24, 2005 16:43
Beiträge: 710
Also ich habe dieses Viereck und einen Punkt, der sich in diesem Viereck befindet. Und ein zweites Viereck. Jetzt möchte ich den Punkt im 2. Viereck berechnen, der dem Punkt im ersten Viereck entspricht.

mfg


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Jan 03, 2008 22:59 
Offline
DGL Member
Benutzeravatar

Registriert: Do Jan 03, 2008 04:51
Beiträge: 14
Die Frage ist jetzt: Worauf beziehst du dich mit "entsprechen"? Was soll der Punkt für Eigenschaften haben? Wann "entspricht" bei dir ein Punkt dem anderen?

_________________
MfG cero


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Jan 03, 2008 23:00 
Offline
DGL Member
Benutzeravatar

Registriert: Do Sep 02, 2004 19:42
Beiträge: 4158
Programmiersprache: FreePascal, C++
Das Problem erinnert mich ein wenig an KeyStone, also das verzerren eines Bildes für einen Beamer, sodass es auf einer nicht exakt senkrecht zum Beamer stehenden Leinwand trotzdem gerade erscheint.
Wenn man hier zu keiner Lösung kommt, könne man vielleicht in OpenSource-Projekten zu dem Thema nachschauen.

Gruß Lord Horazont

_________________
If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung.
current projects: ManiacLab; aioxmpp
zombofant networkmy photostream
„Writing code is like writing poetry“ - source unknown


„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Jan 03, 2008 23:20 
Offline
DGL Member

Registriert: Di Mai 24, 2005 16:43
Beiträge: 710
Mit entsprechen meine ich, dass wenn der Punkt zB. ein Eckpunkt ist, soll dieser auf den entsprechenden Eckpunkt des anderen Vierecks abgebildet werden. Das Gleiche soll für alle dazwischenliegenden Punkte derart passieren, dass für jeden Punkt des ersten Vierecks ein entsprechender Punkt auf dem zweiten Viereck gefunden wird.

mfg


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Jan 03, 2008 23:47 
Offline
DGL Member
Benutzeravatar

Registriert: Do Jan 03, 2008 04:51
Beiträge: 14
hm, dir ist soweit klar, dass es in jedem Viereck unendlich viele Punkte gibt?!

Tut mir Leid, ich versteh immernoch nicht das Problem - vielleicht kann mir ja jemand anderes auf die Sprünge helfen.

Falls du doch das Verhältnis der Eckpunkte meinen solltest, musst du es auch genau darüber ausrechnen. Du berechnest den Betrag des jeweiligen Vektors (AP,BP,CP,DP) über die Betragsformel |AP| = sqrt((p1-a1)²+(p2-a2)²)

Danach setzt du die jeweiligen Beträge ins Verhältnis und setzt das selbe Verhältnis auch in deinem neuen, verzerrten Viereck an. (Bsp: |AP|/|BP| = |A'P'|/|B'P'| )
Ich bin mir jetzt noch nicht ganz sicher, wie viele Eckpunkte du dafür wirklich brauchst - ich glaube drei. Das müsste man mal durchrechnen (ist mir aber gerade ein bißchen zu viel Rechenaufwand :P )

_________________
MfG cero


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Jan 04, 2008 09:01 
Offline
DGL Member

Registriert: Mo Dez 20, 2004 08:58
Beiträge: 442
Wohnort: Mittweida (Sachsen)
Der Trick bei dem Problem ist die Verwendung von Verhältnisgleichungen. Das Problem dabei ist die Abhängigkeit dieser voneinander.

Läge der Punkt auf [AB], dann wäre P'=[A'B']*[AP]/[AB], weil die anderen Verhältnisse rausfliegen. Das Gleiche gilt für die anderen vier Seiten. Wenn er nun nicht auf einer Seite liegt, muss diese Gleichung mit den Verhältnissen zu [AD] und [BC] gewichtet werden.
Die Schwierigkeit besteht nun darin, die Wichtungen rauszukriegen, denn die sind leider nicht so trivial, da diese wiederum gewichtet werden müssen, da [AB] und [BD] auch unterschiedlich lang sind.

Das Koordinatensystem ist also nicht nur nichtkarthesisch, sondern der Achsenwinkel ist zudem vom Abstand zum Ursprung abhängig (nicht nur vom Abstand sondern zudem noch vom Winkel zwischen P^ und einer der Achsen in (0,0)).

Hier setzt dann allerdings meine Mathematik aus, aber vielleicht konnte ich eine Anregung liefern.

_________________
Manchmal sehen Dinge, die wie Dinge aussehen wollen, mehr wie Dinge aus, als Dinge.
<Esmerelda Wetterwax>
Es kann vorkommen, dass die Nachkommen trotz Abkommen mit ihrem Einkommen nicht auskommen und umkommen.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Jan 04, 2008 09:21 
Offline
DGL Member

Registriert: Mo Dez 20, 2004 08:58
Beiträge: 442
Wohnort: Mittweida (Sachsen)
Mir ist grad eingfallen, dass sich das Problem iterativ lösen lässt:

Berechne P' aus P nach Verhältnis zu [AB] und [AD].
Berechne P'' aus P' nach Verhältnis zu [BC] und [BD].
Ermittle Abstand P' P''
Neues P wird P''
Wiederhole solange bis Abstand < epsilon.

_________________
Manchmal sehen Dinge, die wie Dinge aussehen wollen, mehr wie Dinge aus, als Dinge.
<Esmerelda Wetterwax>
Es kann vorkommen, dass die Nachkommen trotz Abkommen mit ihrem Einkommen nicht auskommen und umkommen.


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 22 Beiträge ]  Gehe zu Seite 1, 2  Nächste
Foren-Übersicht » Programmierung » Mathematik-Forum


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 4 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.040s | 19 Queries | GZIP : On ]