離散勾配?

Aug 22 2020

ある関数の入力として使用されているメッシュの離散勾配を取得する方法を理解しようとしています $f$。言い換えれば、すべての頂点に対して$v$ スカラー量があります $s$ それに関連付けられています。

の離散勾配を計算する方法を理解しようとしています $f$表面上。その目的のために、私はこれらのスライドをチェックしていました:

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

しかし、それはクリックしていません。私が想定している区分的表記は、「三角形の値がどうなるかわからないので、重心座標を使用して線形補間する」という形式化の試みにすぎません。

しかし、その後、スライドは勾配の次の最終式に到達します。

私はちょっと下の部分を理解しています、それはで勾配の基礎を言っているようです $i$ は、反対側のエッジに直交するベクトルを三角形の面積の2倍で割ったものです(私は推測します)が、上の式はどのように導き出されましたか?

回答

1 NathanReed Sep 23 2020 at 01:06

これは、重心座標の観点から勾配を定義しています。これは、この回答の導出に似ていますが、3つの重心座標の合計が1になるという事実を使用して、代数的に少しだけ再配置されています。$$ \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

エリアは2つのコンポーネントで構成され、basis_iの正規化された勾配は、頂点のみに依存するコンポーネントの1つの方向に一定の速度を与えます。

強調表示されている式は、関数を変換する中間状態であり、頂点を完全に利用しています。