Dyskretny gradient?
Próbuję zrozumieć, jak uzyskać dyskretny gradient siatki, która jest używana jako dane wejściowe jakiejś funkcji $f$. Innymi słowy dla każdego wierzchołka$v$ istnieje wielkość skalarna $s$ powiązany z tym.
Próbuję zrozumieć, jak obliczyć dyskretny gradient $f$na powierzchni. W tym celu sprawdzałem te slajdy:
http://www.hao-li.com/cs599-ss2015/slides/Lecture04.1.pdf
Ale to nie jest kliknięcie. Przyjęta przeze mnie mądra notacja jest tylko próbą sformalizowania „nie mamy pojęcia, jakie byłyby wartości w trójkątach, więc zamierzamy po prostu interpolować liniowo za pomocą współrzędnych barycentrycznych”.
Ale potem slajdy osiągają ostateczną formułę gradientu:
Trochę rozumiem dolną część, która wydaje się mówić o podstawie gradientu w $i$ czy wektor jest prostopadły do przeciwległej krawędzi podzielony przez 2 razy pole trójkąta (zakładam), ale jak wyprowadzono górną formułę?
Odpowiedzi
Definiuje gradient w kategoriach współrzędnych barycentrycznych. Jest podobny do wyprowadzenia w tej odpowiedzi , tylko nieco przearanżowany algebraicznie przy użyciu faktu, że trzy współrzędne barycentryczne sumują się do jednego.$$ \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} $$
Obszar składa się z 2 składowych, znormalizowany gradient podstawy_i daje stałą prędkość w kierunku jednej ze składowych, która zależy tylko od wierzchołków.
Podświetlona formuła jest stanem pośrednim przekształcenia funkcji w pełni wykorzystującej wierzchołki.