2017-01-04 5 views
0

Ich muss das rote Dreieck links von Weiß zu Schwarz interpolieren, wie in der Abbildung dargestellt. Ich habe es zu einem Parallelogramm erweitert, um die Art der Interpolation, die ich erreichen möchte, besser zu verstehen.OpenGl Dreieckinterpolation Problem

enter image description here

von 1 zu den weißen Extremen des Dreiecks zuweisen und Null nach unten i bin nicht die erwarteten Ergebnisse zu erzielen, dachte ich, dass dieser konkrete Fall würde nicht dazu führen, Perspektive koordiniert Probleme aufgrund der Tatsache, Diese Dreieckswerte sind immer noch auf ein Parallelogramm und nicht auf ein Trapez abgebildet, aber ich glaube, ich lag falsch. Eine Lösung wäre wie in der rechten Abbildung gezeichnet, um p1 zu finden, indem ein Vektorschnitt berechnet wird, die Länge von frag - p1 berechnet und mit der Länge verglichen wird (v3 - v1), was für den Fragment - Shader i zu überkillt wäre verwende. Eine andere, ebenfalls teure Lösung wäre, den aus den Punkten der Eckenvektoren gebildeten Winkel zu speichern und ein wenig Trigonometrie mit p2 und frag zu verwenden, um einen Punkt in v1 - v3 zu erhalten, um mit dem vollen Segment zu interpolieren auch verrückt ineffizient

Das Endziel wäre eine konvexe Hülle aus Dreiecken zeichnen von ihm bearbeiten Zentrum zu seinen Kanten in einem schwarzen zu weißen Mode

ist: diese Frage als ‚exakte Kopie‘ eines anderen markiert wurde Soweit mein Verständnis geht, hat das wenig mit dem, was ich gefragt habe. Keine der bereitgestellten Antworten hilft meinem Fall und ich würde gerne wissen, wo genau es als 'genaues Duplikat' definiert werden könnte.

Antwort

1

Ich denke, Sie sollten das Baryzentrische Koordinatensystem versuchen, das ist die Art, wie OpenGL die Farben interpoliert zwischen verschiedenen Ecken. (Baryzentrische Interpolation genannt) In Ihrem speziellen Fall sollten Sie einen einzigen Wert dieser drei Werte für die Einstellung der Farbe nehmen.

Aber es einfach selbst lesen ...

Dies ist der Wikipedia-Link: https://en.wikipedia.org/wiki/Barycentric_coordinate_system