放射基底関数(RBF)補間(HTML5版)

※このページではHTML5 (及びthree.js) 、数値計算ライブラリ (Numeric.js) を使用しています

ガウス関数半径:
ローカルファイル:

操作方法

基本操作
マウスドラッグ(左ボタン) 対象物を回転させます。
マウスドラッグ(右ボタン) 対象物を平行移動させます。
マウスドラッグ(中央ボタン or ホイール) 対象物を拡大・縮小させます。
パネル操作
計算 母点を元に補間関数を計算し曲面を表示します。
ガウス関数半径 放射基底関数(ガウス関数)の基準半径 R です。重調和スプラインでは使用しません。
ローカルファイル JavaScriptのFileAPIによりローカルのテキストファイルも使用できます。 データは数値のみ(タイトル・ラベル無し)で、 1行1データでx,y,z座標をタブまたはスペース区切りで書いてください。
(ダウンロード中のサンプルデータを参照してください。)
キーボード操作
0 または a または z 視点をデフォルト(z軸+位置)に戻します。
x 視点をx軸+位置に設定します。
y 視点をy軸−位置に設定します。

プログラム概要
放射基底関数(RBF)補間のサンプルプログラムです。 関数は

Eq1
基底関数(ガウス関数 or 重調和スプライン)
Eq2
直交条件
Eq3
の形で与えられます。
サンプルデータの母点は関数
Eq2
の上にランダムに配置しています。 基準半径を変えると補間関数が変化することが確認できます。 なおこのサンプルデータでは基準半径は最大でも5くらいまでで、 それ以上大きくなると基底関数の凹凸が小さくなり過ぎて計算できません。 (それでも他の言語より大きな値で計算できるようです。)
重調和スプラインではこのような制限はありません。

参考文献
Wikipedia - 放射基底関数
Wikipedia:en - Polyharmonic spline
three.js による HTML5 3D グラフィックス[改訂版]上・下 遠藤理平著 カットシステム
three.js
Numeric Javascript

技術屋の魂(?)に戻る