03.04.2013 Views

Uma Arquitetura de Suporte a Interações 3D ... - DCA - Unicamp

Uma Arquitetura de Suporte a Interações 3D ... - DCA - Unicamp

Uma Arquitetura de Suporte a Interações 3D ... - DCA - Unicamp

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

sampler sVPos; // Mapa <strong>de</strong> posições dos vértices<br />

sampler sVN; // Mapa <strong>de</strong> normais aos vértices<br />

sampler sAdjIdx; // Mapa <strong>de</strong> índices <strong>de</strong> adjacência<br />

sampler sAdj; // Mapa <strong>de</strong> relações <strong>de</strong> adjacência<br />

sampler sP1K1; // Mapa com direção e curvatura principal 1<br />

sampler sP2K2; // Mapa com direção e curvatura principal 2<br />

/////////////////////////////////////////////////////////////////////<br />

// Realiza a <strong>de</strong>composição LDL’ <strong>de</strong> uma matriz NxN simétrica positiva<br />

// <strong>de</strong>finida e resolve Ax=B.<br />

/////////////////////////////////////////////////////////////////////<br />

float3 ldltsv( float3x3 w, float3 m, float N ) {<br />

// Decompõe matriz e sobrescreve matriz triangular inferior.<br />

float3 d;<br />

float2 v;<br />

int i;<br />

for( i = 0; i < N; i++ )<br />

{<br />

}<br />

for( int k = 0; k < i; k++ ) v[k] = w[i][k] * d[k];<br />

for( int j = i; j < N; j++ )<br />

{<br />

}<br />

float sum = w[i][j];<br />

for( int k = 0; k < i; k++ )<br />

sum -= v[k] * w[j][k];<br />

if( i == j )<br />

else<br />

d[i] = 1.0f / sum;<br />

w[j][i] = sum;<br />

// Resolve Ax=B após a <strong>de</strong>composição LDL’<br />

for( i = 0; i < N; i++ )<br />

{<br />

float sum = m[i];<br />

for( int k = 0; k < i; k++ )<br />

sum -= w[i][k] * m[k];<br />

179

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!