89.14 等高線制御 (cntrparam)

set cntrparam は等高線の生成方法、およびそれを滑らかに描画する方法を 制御します。show contour は現在の contour の設定だけでなく cntrparam の設定をも表示します。

書式:

     set cntrparam { { linear
                     | cubicspline
                     | bspline
                     | points <n>
                     | order <n>
                     | levels { auto {<n>} | <n>
                                | discrete <z1> {,<z2>{,<z3>...}}
                                | incremental <start>, <incr> {,<end>}
                              }
                     }
                   }
     show contour

このコマンドは 2 つの機能を持っています。一つは等高線上の点 (データ点 の線形補間、あるいは関数の標本化 (isosample) による点) での z の値の設 定で、もう一つは、そのように決定された z が等しい点同士を等高線で結ぶ 方法の制御です。< n> は整数型の定数式、< z1> , < z2> ... は任意の定数式で す。各オプション変数の意味は次の通りです:

linear, cubicspline, bspline -- 近似 (補間) 方法を指定します。 linear ならば、等高線は曲面から得られた値を区分的に直線で結びます。 cubicspline (3 次スプライン) ならば、区分的な直線はいくぶんなめらか な等高線が得られるように補間されますが、多少波打つ可能性があります。 bspline (B-spline) は、より滑らかな曲線を描くことが保証されますが、 これは z の等しい点の位置を近似しているだけです。

points -- 最終的には、全ての描画は、区分的な直線で行われます。ここ で指定する数は、bspline または cubicspline での近似に使われる線分 の数を制御します。実際には cubicspline と bspline の区間 (曲線線分) の 数は points と線分の数の積に等しくなります。

order -- bspline 近似の次数です。この次数が大きくなるにつれて、等高 線はなめらかになります (もちろん、高次の bspline 曲線になるほど、元の 区分的直線からは離れていきます)。このオプションは bspline モードでの み有効です。指定できる値は、2 (直線) から 10 までの整数です。

levels -- 等高線のレベルの数は、auto (デフォルト), discrete, incremental と等高線のレベル数 < n> で制御します。

auto では、< n> は仮のレベルの数であり、実際のレベルの数は、簡単なラ ベルを生成するように調節されます。曲面の z 座標が zmin から zman の範 囲にあるとき、等高線はその間の dz の整数倍になるように生成されます。こ こで、dz は 10 のあるべき乗の 1, 2, 5 倍、のいずれかです (2 つの目盛り の間を丁度割り切るように)。

levels discrete では、等高線は指定された z = < z1> , < z2> ... に対して 生成されます。指定した個数が等高線のレベルの個数となります。discrete モードでは、set cntrparams levels < n> という指定は常に無視されます。

incremental では、等高線は z = < start> から始まり、< increment> ずつ 増えて行き限界の個数に達するまで書かれます。< end> はその等高線の数を決 定するのに使われますが、これは後の set cntrparam levels < n> によって 常に変更されます。z 軸が対数軸の場合、set ztics の場合と同様に、 < increment> は倍数として解釈されます。

コマンド set cntrparam が引数なしに呼ばれた場合は、次のデフォルトの 値が使われます: linear, 5 points, order 4, 5 auto levels

例:

     set cntrparam bspline
     set cntrparam points 7
     set cntrparam order 10

以下はレベルの基準が合えば 5 個のレベルがに自動的に選択されます:

     set cntrparam levels auto 5

以下は .1, .37, .9 にレベルを設定します:

     set cntrparam levels discrete .1,1/exp(1),.9

以下は 0 から 4 まで、1 ずつ増やすレベルを設定します:

     set cntrparam levels incremental  0,1,4

以下はレベルの数を 10 に設定します (増加の最後の値 (end) または自動で 設定されるレベルの数は変更されます):

     set cntrparam levels 10

以下はレベルの数は保持したままレベルの開始値と増分値を設定します:

     set cntrparam levels incremental 100,50

等高線を描く場所の制御に関しては、以下参照: set contour (89.17)。等高線のラ ベルの書式と線種の制御に関しては、以下参照: set cntrlabel (89.13)

以下も参照してください。

等高線のデモ (contours.dem)

および

ユーザ定義レベルの等高線のデモ (discrete.dem).

竹野茂治@新潟工科大学
2017年3月21日