この記事は現在、プロジェクトメンバーによる査読中のものです。草稿段階ですので、内容・表現の正確さについて責任を負いかねます。 リンクを正しく張れていないところが存在しますのでご注意ください。 正式公開まで、いましばらくお待ちください。
単純な図形を不変にする滑らかな流れの生成法

この記事では,便利なベクトル場を生成する手法を論じます. 大雑把な話ですが,なかなか興味深いと思います.

いきなりの本題

二次元平面上に2つの連続な陰関数

f_1(x,y) = c_1 \\f_2(x,y) = c_2 \tag{1}

があるとします.

これは簡単に解釈すると,それぞれ境界で囲まれたある有界な領域から離れるにしたがって, 値を増す関数が左辺で,その等高線を指定するのが右辺の定数値です. もちろん離れるにしたがって負に増大する場合はありますが,ここでは考えません. その場合は全体にマイナスを掛ければいいからです.

ここで,関数 f_i(x,y) - c_i は,それがゼロになる集合で仕切られる 領域の内側と外側では,必ず正のみか,負のみになり,混じることはありません. なぜなら,混じっているなら,その領域間に境界が存在するはずだからです.

ここで, c_1,c_2 を固定して,動くパラメータ C を考えます. 下を考えてみましょう.

(f_1(x,y) - c_1)(f_2(x,y) - c_2) = C \tag{2}

これって, C=0 の時は左辺の積の因子 f_1(x,y) - c_1 (これをゼロにする曲線を \Gamma_1 とする)か f_2(x,y) - c_2 (同じく \Gamma_2 とする)がゼロになっている時で,つまり,式 (1) の和集合 \Gamma = (\Gamma_1 \cup \Gamma_2) です.

面白いのはここからです. C を正負に動かしてみると, \Gamma に滑らかに沿った 曲線群になります.ここで, \Gamma_1 から近い \Gamma_2 の点を みると, C が正になった時, f_1(x,y) - c_1 が小さいの で, \Gamma_2 からはある程度離れた点でもある点で,式 (2) を満たした点の集合を作ります. 一方, \Gamma_1 から大きく離れると, \Gamma_2 はほとんど元の図形から動きません.

具体例

5つほど,上げておきます.(数式可視化ソフトのdesmosを使うといいです)

(1)双曲線

|x||y| = C \tag{3}

(2)四直線に沿う曲線群

(|x|-1)(|y|-1) = C \tag{4}

カッシーニの卵型( \ell = a ではレムニスケート)

((x-a)^2+y^2)((x+a)^2+y^2)=\ell^4 \tag{5}

非対称なカッシーニの卵型

((x-2)^2+y^2)((x+2)^2+y^2-1)= C \tag{6}

便利なツールとして

これベクトル場で良い感じのを取ってくるのに使えますね. 手計算ではなかなか複雑ですが,数値計算なら有効な手法かと思います.

つまり,曲線の法線ベクトルを求める手法である外微分 (これは一形式なので,それからベクトル場にしたもの)をとったり, それに直交した曲線に沿うベクトルを容易に得ます.(単純な計算とは言っていない)

法線ベクトル場 X は, \psi = (f_1(x,y) - c_1)(f_2(x,y) - c_2) として,

X = \dfrac{\partial \psi}{\partial x}\dfrac{\partial}{\partial x} + \dfrac{\partial \psi}{\partial y}\dfrac{\partial}{\partial y}  \tag{7}

接線ベクトル場 Y は,

Y = -\dfrac{\partial \psi}{\partial y}\dfrac{\partial}{\partial x} + \dfrac{\partial \psi}{\partial x}\dfrac{\partial}{\partial y}  \tag{8}

となります.どうです?なかなか便利そうな手法ではありませんか?

今日はここまで.お疲れさまでした.