PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Dreick - Interpolation - Höhe


Gast
2009-04-19, 15:47:19
Ich habe ein Dreieck im 3D mit Höheninformationen an den Eckpunkten. Diese sind bekannt.

Nun habe ich einen Punkt p (x,y) innerhalb des Dreicks und will aus den Höheninformationen des Dreicks den Höhenwert am Punkt p interpolieren.

Wie stell ich das an, seh grad voll auffem Schlauch?

Gast
2009-04-19, 16:07:12
Erstmal mußt du die baryzentrischen Koordinaten ermitteln (in der gewünschten Ebene). Mit Punkt P und dem Dreieck (A, B, C) bildest du die Dreiecke (A, B, P), (A, P, C) und (P, B, C). Die baryzentrischen Koordinaten a, b und c sind dann:

a = Fläche von (P, B, C) / Fläche von (A, B, C)
b = Fläche von (A, P, C) / Fläche von (A, B, C)
c = Fläche von (A, B, P) / Fläche von (A, B, C)

Wahlweise kannst du c auch als 1 - a - b errechnen, die Summe der baryzentrischen Koordinaten ist nämlich immer 1. An die Fläche kommst du so:

Fläche(A, B, C) = ((B.x - A.x) * (C.y - A.y) - (B.y - A.y) * (C.x - A.x)) / 2

Analog dazu die Flächen der anderen Teildreiecke. Wichtig ist, hier keinen Absolutwert zu bilden, falls der Punkt P außerhalb des Dreiecks liegen sollte. Je nachdem, wie du dein Dreieck definierst (im oder gegen den Uhrzeigersinn) und die Achsen ausgerichtet sind, sind die "Flächen" positiv oder negativ. Das ist aber egal, da es um die Relationen geht, nicht um absolute Werte. Daher kannst du aus der Berechnung auch das / 2 weglassen.

Mit den baryzentrischen Koordinaten kannst du jetzt jeden beliebigen Wert interpolieren:

P.blub = a * A.blub + b * B.blub + c * C.blub

Nasenbaer
2009-04-19, 16:08:02
Was meinst du mit Höheninformation? Die Y-Achse im 3D-Raum?

Gast
2009-04-19, 16:13:34
@Gast

Danke für die schnelle Antwort, ich werde es ausprobieren.

@nasenbaer
Höhenwert = Y-Wert

Gast
2009-04-19, 16:15:38
Genau genommen liegt mein Punkt in x,z-Ebene, habe ich oben falsch geschrieben.

Nasenbaer
2009-04-19, 16:19:24
Ist es nicht sinnvoller einfach die Projektion von 3D->2D rückgängig zu machen mittels der invertierten Projektionsmatrix?

Gast
2009-04-19, 16:23:19
Wie sollte mir das bei der Interpolation weiterhelfen?

Nasenbaer
2009-04-19, 16:26:47
Wie sollte mir das bei der Interpolation weiterhelfen?
Ich glaub ich habe dein Problem nicht wirklich verstanden.

Ich dachte erst du hast ein Dreieck im 3D-Raum und eine Projektion davon auf eine 2D-Bildschirmebene und willst und mit den 2D-Bildkoordinaten wieder auf den Punkt im 3D schließen, der auf dem Dreieck liegt.p

wry
2009-04-20, 00:37:44
Ich hatte mal ein ähnliches Problem, allerdings mit Dreieck und Farben:
http://www.forum-3dcenter.org/vbulletin/showthread.php?t=216641

Ich weiß allerdings nicht ob das bei deinem Problem hilft.

Kinman
2009-04-20, 08:21:40
Ich hatte exakt das gleiche Problem:
http://www.forum-3dcenter.org/vbulletin/showthread.php?p=6941037#post6941037

instinct
2009-04-20, 09:17:22
Ich war der Threadstarter.

Vielen Dank an alle!

Die Lösung von Gast (2.Post) funktioniert prima!! :D