水曜日, 9月 28, 2011

離散データをグリッドデータへ : dgrid3d utilisation

---------------------
gnuplot の dgrid3d を考える.
理由は,ここに書いたとおり.



---------------------

まずは,こんな等高線の図があるとします.
フリーハンドで描いたので,汚いのは無視しましょう.

 デジタイザー,たとえば engauge digitizer みたいなソフトを使うといいでしょう.
ほんで,

### X, Y, Z  ###
0.000000  250.000000 40.0
12.886600  244.845000 40.0
25.773200  238.402000 40.0
36.082500  225.515000 40.0
43.814400  208.763000 40.0
42.525800  192.010000 40.0
37.371100  175.258000 40.0
34.793800  161.082000 40.0
30.927800  149.485000 40.0
......
##
##
### X, Y, Z  ###
217.784000  104.381000 40.0
206.186000  99.226800 40.0
190.722000  97.938100 40.0
175.258000  88.917500 40.0
166.237000  85.051500 40.0
159.794000  76.030900 40.0
158.505000  64.433000 40.0
164.948000  60.567000 40.0
181.701000  64.433000 40.0
195.876000  68.299000 40.0

てな具合のデータを用意し,gnuplot で描く.
通常モードだと,

 って,感じ.上記は,with line と with points を重ねてる.
わかりやすいように.


で, gnuplot コンソールで,


gnuplot> set dgrid3d 50, 50, 4 
gnuplot> splot "./map.lne" u 1:2:3 w l

とやると,



 と,格子目に補間データを設けて,描画してくれる.

問題は,この格子上に乗っかってるデータがほしい.
---------------------

引き続き,コンソール 上で


gnuplot> set output "output.dat"
gnuplot> set table
gnuplot> replot


とやると,画面変化はないが, output.dat が作業ディレクトリに生成される.

---------------------
output.dat の中身は



#Surface 0 of 1 surfaces

#IsoCurve 0, 50 points
#x y z type
 500  30.9278  41.6448 i
 500  40.4744  41.2966 i
 500  50.021  41.0037 i
 500  59.5676  40.7681 i
 500  69.1142  40.5872 i
 500  78.6608  40.4556 i
 

(中略)


 500  441.431  43.7643 i
 500  450.978  44.197 i
 500  460.525  44.6666 i
 500  470.071  45.1702 i
 500  479.618  45.7076 i
 500  489.164  46.2796 i
 500  498.711  46.8864 i

#IsoCurve 1, 50 points
#x y z type
 489.796  30.9278  41.2901 i
 489.796  40.4744  40.945 i
 ....


(中略)

 10.2041  489.164  43.1522 i
 10.2041  498.711  43.8984 i

#IsoCurve 49, 50 points
#x y z type
 0  30.9278  45.5525 i
 0  40.4744  45.1661 i
 0  50.021  44.7526 i
 0  59.5676  44.2973 i
 0  69.1142  43.7911 i
 

(中略)


 0  470.071  42.2797 i
 0  479.618  43.0064 i
 0  489.164  43.7655 i
 0  498.711  44.5343 i


 て感じ.
---------------------

すごいんじゃないでしょうか.....
 もっと,早く気がついていれば...

---------------------
gnuplot> set dgrid3d 50, 50, 4
  


の 50, 50 が 50x50 の意. 4 は 距離の 4 乗で重み付け平均.

0 件のコメント: