|
Hallo liebes Forum,
ich habe Daten, die xyz-Koordinaten repräsentieren. Das gute ist schon mal, dass ich weiß, dass alle und y-Koordinaten den gleichen Abstand zueinander haben. ich habe also ein quadratisches oder schlimmsten falls ein rechteckiges Netz.Die z-Koordinaten sind aber in der Regel so beschaffen, dass vier Punkte, die gemeinsam ein Rechteck bilden, nicht in einer Ebene liegen.
Mein Ziel ist es, die z-Koordinate für einen beliebigen Punkt innerhalb des Rechtecks zu ermitteln.
Meine Idee wäre, das Rechteck über die Diagonale in zwei Dreiecke zu teilen. Hier habe ich dann je drei Punkte, mit denen ich eindeutig eine Ebene definieren kann. Aber welche Diagonale verwende ich? Das ist ja abhängig von den umgebenden Punkten.
Kennt jemand eine andere Idee oder eine vorgehensweise, wie ich bestimmen kann auf welche Art ich das Rechteck teilen muss? Gibt es Algorithmen für sowas?
Viele Grüße!
Für alle, die mir helfen möchten (automatisch von OnlineMathe generiert): "Ich benötige bitte nur das Ergebnis und keinen längeren Lösungsweg." |
|
|
Das gute ist schon mal, dass ich weiß, dass alle x− und y-Koordinaten den gleichen Abstand zueinander haben. Dass die Maschenweiten in und y-Richtung immer gleich ist, ist für die lineare Interpolation, die du anstrebst, relativ egal.
ich habe also ein quadratisches oder schlimmsten falls ein rechteckiges Netz. Naja, die Normalprojektion des Raumnetzes auf die xy-Ebene besteht aus rechteckigen Maschen. Das Netz selbst wohl kaum!
Die z-Koordinaten sind aber in der Regel so beschaffen, dass vier Punkte, die gemeinsam ein Rechteck bilden, nicht in einer Ebene liegen. Dann ist es eben mit Sicherheit KEIN Rechteck, sondern ein allgemeines, räumliches Viereck!
Mein Ziel ist es, die z-Koordinate für einen beliebigen Punkt innerhalb des Rechtecks zu ermitteln. Da es dieses Rechteck gar nicht gibt, kann das ja wohl kaum das Ziel sein. Ganz abgesehen davon, dass "innerhalb des Rechtecks" eine sehr vage Formulierung für das, was du eigentlich erreichen möchtest, ist
Wenn dir lineare Interpolation ausreicht und du die Masche innerhalb derer sich das Ganze abspielen soll bereits lokalisiert hast, dann such dir zwei gegenüberliegende Seiten diese Raumvierecks (zB jene, für die jeweils konstant ist) und interpoliere auf jeder beiden Kanten für den gegebenen x-Wert. Dadurch erhältst du je einen Punkt auf jeder dieser beiden Kanten und auf der durch diese Punkte gebildeten Strecke interpolierst du dann den gegebenen y-Wert und bist beim gesuchten Punkt.
Beispiel:
?
Zunächst interpolieren wir (nur für entlang und und erhalten . Dann interpolieren wir (nur für entlang und und erhalten .
Interpolation (nur für zwischen diesen beiden Punkten liefert dann .
Die auftretenden 3 Interpolationen sind jeweils nur 2D-interpolationen, da immer eine der Koordinaten konstant ist.
|
|
Hallo Roman-22,
vielen Dank für deine Antwort. Ja, ich habe mich sehr schwammig ausgedrückt, aber im Grunde habe ich das schon so verstanden, wie du es beschrieben hast.
Dein Lösungsvorschlag entspricht der Vorgehensweise bei bilinearer Interpolation, richtig? Darauf bin ich bereits gestossen. Mein Problem damit ist aber, dass ich doch zwei verschiedene Lösungen bekomme, je nachdem, welcher der gegenüberliegenden Seiten einer Masche ich wähle.
Deswegen würde ich die Masche gerne in Abhängigkeit der Umgebung wie eingangs beschrieben teilen.
|
|
Dein Lösungsvorschlag entspricht der Vorgehensweise bei bilinearer Interpolation, richtig? Ja, natürlich! ;-)
Mein Problem damit ist aber, dass ich doch zwei verschiedene Lösungen bekomme, je nachdem, welcher der gegenüberliegenden Seiten einer Masche ich wähle. Das ist falsch! Wie kommst du auf diese Idee?. Du erhältst natürlich bei beiden Varianten ganz genau die gleiche Lösung!
Deswegen würde ich die Masche gerne in Abhängigkeit der Umgebung wie eingangs beschrieben teilen. Keine Ahnung, was du mit "in Abhängigkeit der Umgebung" meinst. Du hast doch bloß beschrieben, dass du dein Raumviereck in zwei ebene Dreiecke zerteilen möchtest. Und genau DAS führt, wie du ja eingangs selbst erkannt hast, zu unterschiedlichen Lösungen. Du würdest jede Masche deiner Fläche triangulieren, also in 2 ebene Dreiecke zerlegen, und das ist auf unterschiedliche Arten möglich, die dann auch zu unterschiedlichen Interpolationsergebnissen führen. Bei bilinearer Interpolation wird quasi eine HP-Fläche, also eine doppelte Regelfläche, in jede Masche gespannt und das Interpolationsergebnis ist eindeutig, egal welche Geradenschar du wählst.
Nehmen wir die Werte meines obigen Beispiels: Entweder du erhältst die Punkte und auf zwei gegenüberliegenden Kanten, oder du erhältst und auf den anderen beiden Kanten. Egal zwischen welchen der beiden Paare du nun interpolierst, du landest in beiden Fällen bei . Siehe dazu auch die passende Zeichnung:

|
Diese Frage wurde automatisch geschlossen, da der Fragesteller kein Interesse mehr an der Frage gezeigt hat.
|