Gradiente discreto?
Estou tentando entender como obter o gradiente discreto de uma malha que está sendo usada como entrada de alguma função $f$. Em outras palavras, para cada vértice$v$ existe uma quantidade escalar $s$ associado a isso.
Estou tentando entender como calcular o gradiente discreto de $f$na superfície. Para isso, verifiquei estes slides:
http://www.hao-li.com/cs599-ss2015/slides/Lecture04.1.pdf
Mas não está clicando. A notação de peça que estou assumindo é apenas uma tentativa de formalizar "não temos idéia de quais seriam os valores nos triângulos, então vamos apenas interpolar linearmente usando coordenadas baricêntricas".
Mas então os slides chegam a esta fórmula final para o gradiente:
Eu meio que entendo a parte inferior, que parece dizer a base do gradiente $i$ é um vetor ortogonal à aresta oposta dividido por 2 vezes a área do triângulo (presumo), mas como a fórmula superior foi derivada?
Respostas
Ele está definindo o gradiente em termos de coordenadas baricêntricas. É semelhante à derivação nesta resposta , apenas reorganizada um pouco algebricamente, usando o fato de que as três coordenadas baricêntricas somam uma.$$ \begin{aligned} f(\mathbf{u}) &= f_i B_i(\mathbf{u}) + f_j B_j(\mathbf{u}) + f_k B_k(\mathbf{u}) \\ &= f_i (1 - B_j(\mathbf{u}) - B_k(\mathbf{u})) + f_j B_j(\mathbf{u}) + f_k B_k(\mathbf{u}) \\ &= f_i + (f_j - f_i) B_j(\mathbf{u}) + (f_k - f_i) B_k(\mathbf{u}) \\ \nabla f(\mathbf{u}) &= (f_j - f_i) \nabla B_j(\mathbf{u}) + (f_k - f_i) \nabla B_k(\mathbf{u}) \\ \end{aligned} $$
Uma área consiste em 2 componentes, o gradiente normalizado de basis_i dá a taxa constante na direção de um dos componentes que depende apenas dos vértices.
A fórmula destacada é o estado intermediário de transformação da função totalmente utiliza vértices.