レベルの境界で〜以上〜未満と区別できるように描画する

GrADSで描画をしたときに、コンターの境界は「〜以上〜未満」になっているのか? ということでしたが、結論から言うとなっていません。

1, 1, 2, 2, ……, 10, 10

というような値をx方向に並べると「〜より大きく〜以下」となっており、

0.1, 0.1, 0.2, 0.2, ……, 1.0, 1.0

というような値のばあいは「〜以上〜未満」となりました(浮動小数点数の宿命か?)。

右上の図1は通常の d (display) コマンドを使って、折れ線と塗りつぶしで描画した場合です。左右の絵は値を1/10に変えただけなので、同じようになって欲しいのですが、塗りつぶしがずれています。

このように意図しないレベルの設定とならないように、「〜以上〜未満」と描画できるスクリプト dp.gs 及び、「〜より大きく〜以下」と描画できるスクリプト dm.gs を作成しました。これらを使用した場合は下の図2, 図3のようにになります。


図1. d コマンド使用(レベルの境界が不定?)


図2. dp コマンド使用(〜以上〜未満)


図3. dm コマンド使用(〜より大きく〜以下)

使い方

通常、

> d val

と入力する代わりに、

> dp val

あるいは、

> dm val

と入力するだけです。



参考(スクリプトの中身)

GrADSの中では4バイトの実数で計算しているようです。

4バイトの浮動小数では実数部は23ビット。

2−23≒1.2×10−7 なので、絶対値で 2×10−7 倍の値を加えたり、減らしたりしています。



By T. Egawa <2007.07.06>
戻る