Computergrafik

Baryzentrische Interpolation im Dreieck

Hierarchie Ebenen | | Bresenham

Die Rasterisierung findet in der Pipeline zwischen den Per-Vertex und den Per-Fragment-Ops statt.

Prinzip der Rasterisierung:

FĂĽr jedes aus einem projizierten Dreieck generierte (d.h. rasterisierte) Fragment werden die assoziierten Attribute der Eckpunkte (Farbe, Normale, Texturkoordination, etc.) interpoliert → baryzentrische Interpolation.

Innerhalb eines Dreiecks ergibt die baryzentrische Interpolation aus den Eckwerten $s_{1/2/3}$ an den Eckpunkten $\vec{v}_{1/2/3}$ den Skalarwert am Punkt $\vec{v}$.

$ f(\vec{v}) = f(w_1,w_2,w_3) = w_1s_1 + w_2s_2 + w_3s_3 $ mit
$ w_1 = det(\vec{v_3}-\vec{v},\vec{v_2}-\vec{v}) D^{-1} $
$ w_2 = det(\vec{v_1}-\vec{v},\vec{v_3}-\vec{v}) D^{-1} $
$ w_3 = det(\vec{v_2}-\vec{v},\vec{v_1}-\vec{v}) D^{-1} $
$ D = det(\vec{v_3}-\vec{v_1},\vec{v_2}-\vec{v_1}) $

Bemerkung: Die Determinate $det(\vec{v2}-\vec{v1},\vec{v3}-\vec{v1})$ kann man sich als das Doppelte des Flächeninhalts des Dreiecks $A_{123}$ vorstellen:

$ A_{123} = \frac{1}{2} det(\vec{v2}-\vec{v1},\vec{v3}-\vec{v1}) $

Beispiel in 2D:

  • $ det(\vec{a},\vec{b}) = \vec{a}.x \cdot \vec{b}.y - \vec{a}.y \cdot \vec{b}.x $
  • $ \vec{a} = (1,0)^T, \vec{b} = (0,1)^T $$ det(\vec{a},\vec{b}) = 1 $
  • $ A_{12} = \frac{1}{2} det(\vec{a},\vec{b}) = \frac{1}{2} $

Damit ergeben sich die Faktoren $w_1$, $w_2$, $w_3$ jeweils als Verhältnis von Flächeninhalten wie im Folgenden am Fall $w_1 = A_{23} / A_{123}$ illustriert (der Faktor $\frac{1}{2}$ kürzt sich heraus):

Rechenbeispiel:

$\vec{v_1} = \left( \begin{array}{c} 2 \\ 0 \end{array} \right)$
$\vec{v_2} = \left( \begin{array}{c} 3 \\ 0 \end{array} \right)$
$\vec{v_3} = \left( \begin{array}{c} 2 \\ 2 \end{array} \right)$
$\vec{v} = \left( \begin{array}{c} 2 \\ 1 \end{array} \right)$
$ w_1 = 0.5 $
$ w_2 = 0.0 $
$ w_3 = 0.5 $
Kontrolle: $ \vec{v} = w_1\vec{v_1} + w_2\vec{v_2} + w_3\vec{v_3} $


Hierarchie Ebenen | | Bresenham

Options: