6.2 Espaço afim
Um espaço afim contém, além do espaço vetorial de mesma dimensão, um conjunto de pontos. Usararemos letras maiúsculas \((P, Q, \dots)\) para denotar pontos. Além das operações com vetores, é definida a operação de diferença entre pontos, que resulta em um vetor:
\[\mathbf{u}=P-Q.\]
O vetor \(\mathbf{u}\) representa o deslocamento (translação) de \(Q\) para \(P\) (figura 6.5).
A partir da diferença entre pontos podemos definir a operação de adição de ponto e vetor, que resulta em um ponto deslocado pelo vetor:
\[P=Q+\mathbf{u}.\]
Combinação afim
Com as operações de diferença entre pontos e adição de ponto e vetor, podemos fazer combinações entre pontos para formar novos pontos. Por exemplo, considere a seguinte operação entre os pontos \(P\) e \(Q\):
\[R=Q+a(P-Q).\]
- Se \(a=0\), então \(R=Q\);
- Se \(a=1\), então \(R=P\).
Valores de \(a \in [0, 1]\) produzem pontos entre o segmento que conecta \(P\) e \(Q\) (figura 6.6). As setas representam os diferentes vetores \(a(P-Q)\).
Podemos usar essa expressão para definir uma nova e importante operação básica sobre pontos. Primeiro, note que
\[R=Q+a(P-Q)\]
é equivalente a
\[R=a P+(1-a)Q.\]
Uma combinação afim entre pontos \(P\) e \(Q\) é definida como
\[R=a P + b Q,\] onde
\[a + b = 1.\]
De forma mais geral, uma combinação afim entre os pontos \(P_1, P_2, \dots, P_n\) é qualquer soma na forma
\[a_1 P_1 + a_2 P_2 + \dots + a_n P_n,\]
onde
\[a_1 + a_2 + \dots + a_n = 1.\]
Se restringirmos os escalares \(a_i\) de uma combinação afim para o intervalo \([0, 1]\), temos uma combinação convexa. A união de todas as combinações convexas de um conjunto de pontos é chamada de casco convexo ou fecho convexo (figura 6.7).
Se \(P_1\), \(P_2\) e \(P_3\) forem quaisquer três pontos não colineares, então a combinação afim
\[P=a_1 P_1 + a_2 P_2 + a_3 P_3\]
pode ser usada para gerar qualquer ponto no plano que contém \(P_1\), \(P_2\) e \(P_3\).
A união de todas as combinações convexas de \(P_1\), \(P_2\) e \(P_3\) é o conjunto de pontos do triângulo \(\triangle P_1 P_2 P_3\).
Se \(a_1, a_2,a_3 \geq 0\) e \(a_1+a_2+a_3=1\), esses três escalares são chamados de coordenadas baricêntricas (geralmente denotadas por \(\alpha\), \(\beta\) e \(\gamma\)). Um ponto no triângulo pode ser unicamente determinado pela combinação de quaisquer duas coordenadas baricêntricas. Como ilustrado na figura 6.8, as coordenadas baricêntricas representam razões entre as áreas de subtriângulos e a área do triângulo. No pipeline de renderização, o rasterizador usa coordenadas baricêntricas para calcular a interpolação dos atributos de vértices em relação aos fragmentos amostrados no triângulo.