¿Gradiente discreto?
Estoy tratando de entender cómo obtener el gradiente discreto de una malla que se está utilizando como entrada de alguna función $f$. En otras palabras para cada vértice$v$ hay una cantidad escalar $s$ asociado a ello.
Estoy tratando de entender cómo calcular el gradiente discreto de $f$en la superficie. Para ese propósito, estaba revisando estas diapositivas:
http://www.hao-li.com/cs599-ss2015/slides/Lecture04.1.pdf
Pero no está haciendo clic. La notación por partes que estoy asumiendo es solo un intento de formalizar "no tenemos idea de cuáles serían los valores en los triángulos, así que vamos a interpolar linealmente usando coordenadas baricéntricas".
Pero luego las diapositivas alcanzan esta fórmula final para el gradiente:
Entiendo un poco la parte inferior, que parece decir la base del gradiente en $i$ ¿Es un vector ortogonal al borde opuesto dividido por 2 veces el área del triángulo (supongo), pero cómo se derivó la fórmula superior?
Respuestas
Está definiendo el gradiente en términos de coordenadas baricéntricas. Es similar a la derivación en esta respuesta , solo reorganizada un poco algebraicamente usando el hecho de que las tres coordenadas baricéntricas suman uno.$$ \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} $$
Un área consta de 2 componentes, el gradiente normalizado de base_i da la tasa constante en la dirección de uno de los componentes que solo depende de los vértices.
La fórmula resaltada es el estado intermedio de transformación, la función utiliza completamente los vértices.