¿Gradiente discreto?

Aug 22 2020

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

1 NathanReed Sep 23 2020 at 01:06

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} $$

xer-rex Aug 22 2020 at 14:42

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.