Tuesday, March 17, 2009

陰関数を用いたモデリング implicit modeling

陰関数(implicit function)について,モデリングの論文で頻繁に聞くようになっているので,興味深いと思っている人も多いと思いますが,イメージができるまではハードルが高いので,ここでその導入のお手伝いができればと思います.
まぁbloomenthalの論文読むのが面倒だって人もこの程度理解できれば,実装ができちゃうと思います.
陰関数については,中学校の数学の授業で,すでに習っていると思いますが,ここでおさらい.
多変数を扱う場合の式の表記法は大きく2種類あって,それらはそれぞれ陽関数と陰関数と呼ばれています.
2変数xとyがあり,それぞれ独立変数と従属変数としたとき,陽関数は,
f(x) = y
といったように,独立変数と従属変数が右辺と左辺に分かれている形となっており,陰関数は,
f(x, y) = 0
といったように,それぞれが右辺もしくは左辺に集められた形を指す.
ここで,話題にするのは陰関数であり,下の方のどちらかの辺に集められた形で形状を定義します.

最近,話題になっている円の陰関数表現ですが,単円を表現すると,
x^2+y^2 = 1
となります.
変形すると
x^2+y^2 - 1 = 0
です.
右辺が0なわけですが,この式は,x^2+y^2 - 1のとき,値が0となるような点の集合を指します.
つまりは,単円です.
同様に,右辺が1になったときのことを考えます.
x^2+y^2 - 1 = 1
これは,x^2+y^2 - 1が1のときの点の集合ですから,原点から2^(1/2)の距離にある点の集合を指します.
右辺が-1のときは,同様に考えて,原点から0距離の点の集合です.
この右辺の値によって,点の集合が存在する位置が変わることがわかります.
右辺が0のときを基準の面としたとき,右辺を0未満の値にしたとき,それは,単円の内側(原点寄り)の集合を意味します.
逆に0より大きいと単円の外側にあることがわかります.
右辺の値を変化させると,単円の内外の集合を算出できますが,それを応用して,ある座標のときの右辺の値を見ることで,その座標が単円の内外を判定できます.
xとyにそれぞれ,0.5ずついれると,0.25+0.25-1=-0.5となり,右辺が0未満の値がでます.
これは内側を意味します.
外側の座標を指定すると右辺は0より大きくなります.
これは2次元以上のn次元に対応できることでして,関数によって内外の符号は変わりますが,0を境にした空間的な集合は算出することができます.

まぁ,こんなこと書いてないで,さっさと発表の自主練習しろってことですので

No comments: