Mathe-Problem

Über alles nicht so Wichtige was aber irgendwie mit Bahn und Zusi zu tun hat. Viel Spaß beim Plaudern.
Antworten
Nachricht
Autor
Benutzeravatar
Carsten Hölscher
Administrator
Beiträge: 33384
Registriert: 04.07.2002 00:14:42
Wohnort: Braunschweig
Kontaktdaten:

Mathe-Problem

#1 Beitrag von Carsten Hölscher »

Bei der ZusiDisplay-Integration tauchte jetzt ein mathematisches Problem auf, das mit etwas Kopfzerbrechen bereitet. Vielleicht hat ja jemand einen Geistesblitz.
Für das irgendwie schief im Raum stehende Viereck des Displays im Führerstand kann man nicht einfach 2 Dreiecke nehmen, sondern braucht ein etwas feineres Gitter. Es geht um die Berechnung der Gitterkoordinaten und umgekehrt darum, einen Mausklick in ZusiDisplay-Koordinaten zurückzurechnen, damit ZusiDisplay weiß, wo man hingeklickt hat.

Also in allgemeiner Form sowas wie die Transformation im folgenden Bild, etwas herausgehoben das Display-Viereck im u/v-System.

So eine Transformation machen die Gleichungen 1 und 2. Wenn ich die Parameter a und b bestimmt habe, liefert mir die Gleichung also zu einem Mausklick im x/y-System die u/v-Koordinaten, die ZusiDisplay braucht.

Zu Berechnung der Koordinaten des Meshes hab ich die Formeln 1und 2 nach x und y aufgelöst.

Bild

Das Ganze funktioniert einwandfrei in beide Richtungen, solange das Viereck irgendwie schief ist.

Baut man es aber schön rechtwinklig ein, kollabiert die Formel. Man sieht es gut am trivialen Fall, dass beide Systeme identisch sind, also x=u und y=v.
Es ergeben sich a1=1 und b2=1 und der die restlichen Parameter zu 0.

Geht man damit in die Gleichungen für x und y, ist der Nenner jeweils 0, der Zähler auch. Richtig wäre aber das Ergebnis x=u und y=v.

Nun liegt hier ganz augenscheinlich keine Singularität oder eine entartete Geometrie oder irgendsowas vor, wo man das erwarten würde. Dieses mathematische Verhalten erscheint mir sehr ungewöhnlich, wenn die "schwierigeren Fälle" durchlaufen, dann bekommt man die einfachen Fälle ja normalerweise "kostenlos dazu". Ich sehe auch keinen Ansatz, die Formeln so umzustellen, dass keine oder andere Nenner vorkommen. Hat jemand eine Idee, wo hier was schief läuft?

Carsten

gehowa
Beiträge: 153
Registriert: 02.01.2016 22:18:48

Re: Mathe-Problem

#2 Beitrag von gehowa »

Sowas müsste sich mit einer Transformationsmatrix lösen lassen, ist bei DirectX eventuell sogar dabei? Uni ist schon eine Weile her, da müsste ich mich wieder einarbeiten, aber eine schnelle Suche hat folgendes ergeben: https://math.stackexchange.com/question ... javascript

Gernot

Benutzeravatar
Johannes
Beiträge: 3197
Registriert: 14.03.2009 22:36:06
Aktuelle Projekte: Zusitools (http://git.io/zusitools)

Re: Mathe-Problem

#3 Beitrag von Johannes »

Mir ist noch nicht ganz klar, wie beim Aufloesen der Gleichungen vorgegangen wurde. Wenn ich durch 2(a_3b_1-a_1b_3) teile, muss ich ja eine Fallunterscheidung machen und fuer den Fall, dass der Nenner 0 ist, die Gleichung irgendwie anders loesen. Oben ist halt nur der Fall a_3b_1 != a_1b_3 abgehandelt.

Wenn ich die Gleichungen in Wolfram Alpha kippe, kommen neben der gezeigten Loesung (mit entsprechenden Bedingungen) auch noch eine ganze Menge andere raus: https://www.wolframalpha.com/input/?i=s ... D+for+x,+y Das sieht aus wie eine Hoelle von Fallunterscheidungen.

Zusi kann doch nicht das erste Programm sein, das diese Problemstellung zu loesen hat. Ich schlage vor, eine bereits existierende Loesung zu suchen und diese zu implementieren. Startpunkte:
- https://www.geometrictools.com/Document ... ppings.pdf" target="_blank
- http://reedbeta.com/blog/quadrilateral- ... on-part-1/" target="_blank
Zuletzt geändert von Johannes am 10.02.2019 13:08:51, insgesamt 3-mal geändert.

Benutzeravatar
Carsten Hölscher
Administrator
Beiträge: 33384
Registriert: 04.07.2002 00:14:42
Wohnort: Braunschweig
Kontaktdaten:

Re: Mathe-Problem

#4 Beitrag von Carsten Hölscher »

Man kann es auch durch Interpolieren der Eckpunkte lösen.
Mich wundert das nur und bevor ich es neu programmiere, wollt ich mal sehen, ob jemandem was auffällt.

Es gibt 2 Lösungen für die Lösung des Gleichungssystems. Mehr dürfen es auch nicht sein. Beide haben den gleichen Nenner.

Carsten

Benutzeravatar
F. Schn.
Beiträge: 6630
Registriert: 24.10.2011 18:58:26

Re: Mathe-Problem

#5 Beitrag von F. Schn. »

Rein oberflächlich betrachtet würde ich jetzt erwarten, dass der Zähler auch 0 wird, und man womöglich sogar LH drauf werfen kann. Das klappt (unter der Kollabierungs-Vorraussetzung a3=b3=0) aber nur, wenn a2b1-a1b2<=0. Unter der Voraussetzung, dass das vermutlich keine normale Wurzel, sondern eine +/--Wurzel ist, könnte man sich das mal näher anschauen. Aber im Endeffekt wird das auf das selbe hinauslaufen, was Johannes schon gesagt hat. Vermutete Ursache: Die der Wurzel zugrunde liegende quadratische Formel muss für den Fall, dass der a-Faktor (also der vor dem x^2) null ist, ja anders aufgelöst werden.

Edit: Das ist jetzt umnachtet, also wenn ich Mist geschrieben habe, lösche ich es wieder: Ich vermute mal, dass die Formel aus der Auflösung eine quadratischen Gleichung kommt. In dem Fall wäre bei a2b1-a1b2 ein Vorzeichenfehler, das dürfte nicht von den restlichen Vorzeichen abweichen, aber sei's drum. In dem Fall wäre ein Schritt vor dem Endergebnis folgendes Zwischenergebnis:
ax^2 + bx + c = 0 mit
a = (a3b1-a1b3)
b = -a2b1 + a1b2 + a4b3 - a3b4 - b3u + a3v
c = a2b4 - a4b2 -a2v + b2u (hm, bei dir stehen hier 1er anstatt 2er... hm, egal...)
Deine Lösungsformeln wären jetzt x=(-b + sqrt(b^2+4ac) ) / 2a. Das gilt aber nur wenn a ungleich 0.

Für a = 0 könnte x durch x=-c/b bestimmt werden, wenn b ungleich 0. Rein abgeschätzt dürfte der Fall b = 0 eine Vernichtung einer Achse mit sich bringen und damit irrelevant sein, und immer wahr sein, wenn c = 0, ansonsten immer falsch.
Zuletzt geändert von F. Schn. am 11.02.2019 00:08:40, insgesamt 5-mal geändert.
Diese Signatur möchte folgendes bekannter machen: ZusiWiki · ZusiSK: Streckenprojekte · YouTube: Objektbau für Zusi · euirc: Zusi-Chat

Antworten