Ayrık Gradyan?

Aug 22 2020

Bir fonksiyonun girdisi olarak kullanılan bir ağın ayrık gradyanını nasıl elde edeceğimi anlamaya çalışıyorum $f$. Diğer bir deyişle her köşe için$v$ skaler bir miktar var $s$ ile ilişkili.

Ayrık gradyanını nasıl hesaplayacağımı anlamaya çalışıyorum $f$yüzeyin üzerinde. Bu amaçla şu slaytları kontrol ediyordum:

http://www.hao-li.com/cs599-ss2015/slides/Lecture04.1.pdf

Ama tıklamak değil. Varsaydığım parça bilge notasyon, "üçgenlerdeki değerlerin ne olacağı hakkında hiçbir fikrimiz yok, bu yüzden Barycentric koordinatları kullanarak doğrusal olarak enterpolasyon yapacağız".

Ancak daha sonra slaytlar, gradyan için bu son formüle ulaşır:

Alt kısmı anlıyorum, bu da gradyan temeli diyor gibi görünüyor $i$ zıt kenara ortogonal olan bir vektör üçgenin alanının 2 katına bölünür (varsayıyorum), ama üstteki formül nasıl türetildi?

Yanıtlar

1 NathanReed Sep 23 2020 at 01:06

Gradyanı, barisantrik koordinatlar cinsinden tanımlıyor. Bu cevaptaki türetmeye benzer , sadece üç baryantrik koordinatın toplamı bire eşit olduğu gerçeğini kullanarak cebirsel olarak biraz yeniden düzenlenmiştir.$$ \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

Bir alan 2 bileşenden oluşur; base_i'nin normalleştirilmiş gradyanı, yalnızca köşelere bağlı olan bileşenlerden birinin yönündeki sabit oranı verir.

Vurgulanan formül, işlevin tam olarak köşeleri kullanarak dönüştürülmesinin ara durumudur.