ねこでじ(Nekodigi)

Nekodigi’s diary

学習中の気づきをまとめています。応援よろしくお願いします

【Processing】Laplace方程式で3D空間に伸びた布を張る。

成果物

www.youtube.com
Minimal Surfaceのように見えるのですが、確証がないので伸びた布という表現になっています。Laplace方程式は熱方程式などにも使われているとうり、拡散させ、滑らかにする働きがあるので、x,y,z成分それぞれでLaplace方程式を解くことで伸びた布を貼っています。

コード

1,2,3次元の全で実装しました。PVectorを使ったので拡張が簡単でした。
github.com

仕組み

周囲4マスのデータから、この式を使ってデータを求めることができます。
f[x][y]=\frac{f[x-1][y]+f[x+1][y]+f[x][y-1]+f[x][y+1]}{4}
この式の成立理由については、こちらをご覧ください。
nowokay.hatenablog.com
端は、固定されるので今回は、ここを螺旋になるように設定しています。
また、平滑されるのがわかりやすくなるように、端以外のマスの初期値をパーリンノイズを使って設定しています。