Casio Basic入門G03
Casio Basic入門
誤字脱字・記載ミスや分かりにくい表現は随時追記・修正します
修正 2015/07/30
修正 2017/09/25
修正 2015/07/30
修正 2017/09/25
5. Casio Basic でグラフィックス
前回: Casio Basic入門G02
Chapter G03
ClrGraph / Cls と ViewWindow
今回は、グラフィックス画面を消去する ClrGraph コマンドと 座標系を設定する ViewWindow について調べて見ます。
ClrGraph の詳細動作
最初に、ClrGraph の機能を確認するため、次の2つのプログラムで実験します。
ファイル名:CLRGRPH1
ViewWindow -10,30,2,-5,15,2
CoordOff
GridOff
AxesOn
LabelOff
PlotOn 2,2
ファイル名:CLRGRPH2
ClrGraph
PlotOn 2,2
CLRGRPH1 は、ViewWindow 座標系を指定し、グラフ設定は AxesOn で座標軸表示を On にする以外は全て Off にし、最後に 座標 (2, 2) に点を描画します。

座標系とグラフ設定は、指定された通りで、座標 (2, 2) に点が描画されています。
この座標系設定とグラフ設定は保存されていて、グラフィックス画面もこの状態で保存されているはずです。そこで、続いて CLRGRPH2 を実行すると、ClrGraph が実行され、再び座標 (2, 2) に点を描画するはずです。実行画面は以下のようになりました。

ClrGraph コマンドは、グラフィックス画面を消去するだけでなく、座標系をデフォルトの論理座標系に変更することが確認できました。
さらによく見てみると、目盛間隔が指定通りになっていません。
1つめのプログラム CLRGRPH1 で目盛間隔を 2 に指定しているのに、CLRGRPH2 を実行した結果、目盛間隔(スケール)が 1 に変更されています。つまり、ClrGraph は目盛間隔(スケール)も変更することが分かりました。
ここで、消去や設定について、まとめます。
コマンドの機能 - グラフィックス画面の消去と座標系の設定について
コマンド | 描画の消去 | 座標系 | グラフ設定 |
ViewWindow | 消去する※1) | 再設定 | 現状設定を維持 |
ClrGraph | 消去する | 論理座標系に変更※2) | 現状設定を維持 |
Cls | 消去する | 現状設定を維持 | 現状設定を維持 |
※2) ClrGraph は、論理座標系に変更し、さらにスケールを 1 に設定する。
ViewWindow
このコマンドで座標系を設定すると、グラフィックス画面は、クリア(消去)されます。但し1つだけ例外として、Plot コマンドでクリア直前に描画された点には適用されません [2017/09/25 追記修正]。Plot コマンドは特殊で面白いコマンドなので、後で別に取り上げます。
ViewWindow 設定は、このコマンドで明示的に設定するか、あるいは ClrGraph を実行する以外は、設定は保存され、グラフィックス画面に反映されます。
ClrGraph
グラフィックス画面をクリア(消去)するだけでなく、座標系を論理座標系に設定、スケールを1に設定します。
Cls
グラフィックス画面をクリア(消去)します [2015/7/30 修正]。座標系は現在の設定が維持されます。
CLRGRPH2 の ClrGraph を Cls に置き換えて実験してみると、確認できます。
グラフ 設定コマンド
4種類の設定の On /Off を行うもので、これら4つのコマンドの設定内容は、ViewWindow, ClrGraph, Cls の影響を受けません。
1) CoordOn / CoordOff : カーソル位置の座標値出力を On / Off する、Plot コマンドを使う時のみ意味があります。
2) GridOn / GridOff : グリッドの表示を On / Off する
3) AxesOn / AxesOff : 座標軸の表示を On / Off する
4) LabelOn / LabelOff : 座標軸の X、Y ラベル表示を On / Off する
グラフィックス画面とテキスト画面の切り替え
以下のプログラムを実行してみます。
ファイル名: PLOT1.1
ClrGraph
CoordOff
GridOff
AxesOff
LabelOff
PlotOn 1,0
グラフィックス画面を消去し、論理座標系が設定され、座標値表示 / グリッド表示 / 座標軸表示 / 軸ラベル表示 を全て Off にした上で、PlotOn コマンドで、(x, y) = (1, 0) に点を描画します。
グラフィックスコマンド PlotOn が実行されると、グラフィックス画面に点を1つ描画します。

この表示のままプログラムが終了します。
ここで、[EXE] [EXIT] [AC] のいずれかのキーを押すと、画面右上に Done と表示されます。

さらに [EXE] [EXIT] [AC] のいずれかのキーを押すと、Program List へ戻ります。

もう一度、このプログラムを起動します。

そして、点が1つ描画されているグラフィックス画面が表示されている時、[SHIFT] [F6] (G↔T) を押してください。これは、グラフィックス画面とテキスト画面の表示を切り替える操作です。1回押せばテキスト画面 (Done と表示) になり、もう一度このキー操作を行うと、グラフィックス画面に戻ります。

Done と表示されているのは、テキスト画面であることが分かります。
そして、グラフィックス画面を表示してプログラムが終了した場合、Program List へ戻るには、テキスト画面へ一旦遷移することも分かります。fx-9860GII OS 2.04 ~ OS 2.09 では、このような仕様になっているようです。
==========
それでは、次のプログラムを実行してみます。
ファイル名: PLOT1.2
CllrGraph
CoordOff
GridOff
AxesOff
LabelOff
PlotOn 1,0
Locate 1,1,"Text"
このプログラムを起動すると、Locate 1,1,"Text" の結果として、画面左上に Text と表示しますが、PlotOn 1,0 の結果は表示されていません。

プログラムの最後に、テキスト画面に表示するコマンドが実行されたので、自動的にグラフィックス画面からテキスト画面に切り替わっていることが分かります。これで正常なのでしょう。
ここで、[SHIFT] [F6] (G↔T) を押すと、グラフィックス画面に切り替わり、点が描画されていることが確認できます。

グラフィックス画面への描画は行われたが、裏に回って表示されないということです。
==========
グラフィックス画面には、Locate コマンドや出力命令 " " で出力ができません。fx-9860GII OC2.04 ~ OS 2.09 の Casio Basic の仕様です。
グラフィックスと文字を同時に表示するには、グラフィックス画面で文字表示を行うコマンドが必要で、そのために Text コマンドが用意されています。
Text コマンド
書式: Text [y],[x],[出力内容]
- [y], [x] は物理座標系での座標で、物理的なピクセル位置を指定する。y座標(縦方向) の [y] を先に指定する。Locate とは [x], [y] の指定順序が異なる
- [出力内容] は、"文字列" 、変数、数値、Getkeyコマンドが使える。これは Locate と同様。
[SHIFT] [F4] (Sketch) [F6] (▷) [F6] (▷) [F2] (Text)
Text コマンドは、現在選択されている座標系に関係無く、物理座標系を用いる仕様です。物理座標系での位置指定で、縦方向つまり y 座標を先に指定するのは、慣れるまでは分かりにくいと思います。物理座標系を使う PxlOn などの位置指定も同じです。
では、上で作ったプログラムに、Text コマンドの行を追加してみます。
ファイル名: PLOT1.3
ClrGraph
CoordOff
GridOff
AxesOff
LabelOff
PlotOn 1,0
Locate 1,1,"Text"
Text 1,1,"Graphic"
実行してみると、

点が1つ描画され、さらに文字列 Graphic も表示されました。
ちなみに、Text コマンドで描画されるフォントは テキスト画面のフォントよりも小さくなっています。そのため、見た目が貧弱で見づらいのですが、LCDの解像度が低いので仕方ないですね。古い機種との互換性を考え、このようなフォントをそのまま使っているのでしょう。Text コマンドで表示されるフォントは、プログラム編集画面に入ったところで、[F6] (CHAR) を押すと一覧が現れます。
さて、ここで [SHIFT] [F6] (G↔T) を押すと、裏に回っていたテキスト画面が表示されますね。

ただ、本来 Text と表示されるべきですが、Done としか表示されません。そこで、Locate コマンドで表示する位置を1行下へずらしてみます(以下の赤文字に注目)。
ファイル名: PLOT1.4
CllrGraph
CoordOff
GridOff
AxesOff
LabelOff
PlotOn 1,0
Locate 1,2,"Text"
Text 1,1,"Graphic"
これを実行し、裏へ回っているテキスト画面に切り替えると、今度は文字列 Text が出てきました。

Done という表示は、テキスト画面の内部カーソル行に表示され、丸々1行を上書きしているようです。そのため、1行目に Text と表示した場合は、上書きされて消えたのですが、Locate コマンドで2行目に表示すると、カーソル行が1行目のままなので、2行目の文字列 Text が見えたわけです。
テキスト画面の内部カーソル行は、出力命令 " " を1回実行すると1行下がり、ClrText や Cls を実行するとリセットされて1行目に戻ります。
⇒ Casio Basic コマンドリファレンス - 出力命令 " "
グラフィックス描画の際に、テキスト画面に表示される Done が出現するのは、テキスト画面に出力するコマンド/命令が実行されるタイミングだということは分かっていますが、完全な法則性はまだ確認できていません。いずれはっきりと分かったら、紹介したいと思います。
ViewWindow の性質
ViewWindow コマンドは、座標系を設定します。直交座標系と極座標系の設定ができますが、当面直交座標系の設定について紹介します。
直交座標系 での書式
ViewWindow [Xmin],[Xmax],[Xscale],[Ymin],[Ymax],[Yscale]
- Xmin: X軸(横方向)の左端の値
- Xmax: X軸(横方向)の右端の値
- Xscale: X軸(横方向)の目盛間隔
- Ymin: Y軸(縦方向)の下端の値
- Ymax: Y軸(縦方向)の上端の値
- Yscale: Y軸(縦方向)の目盛間隔
例えは、Xmin = 63、Xmax = -63 と設定することもできます。この時は、X軸(横方向)は、右が小さく、左にゆくほど値が大きくなり、座標軸の方向を逆に設定できるわけです。
ここで、Xmin や Xmax などと紛らわしい表現をしたのには、理由があります。
例えば、
ViewWindow -10,30,5,-5,15,5
と記述する代わりに、
-10→Xmin
30→Xmax
5→Xscl
-5→Ymin
15→Ymax
5→Yscl
と記述することもできます。Xmin、Xmax、Xscl、Ymin、Ymax、Yscl は、Casio Basic で予め予約された変数で、これに値を代入することで座標系を設定できます。或いは、現在の座標系で設定されている各値を知ることもでき、プログラムを書く時役立つことがあります。
これら2つの異なる記法の整合性をとるために、紛らわしい表現になってしまっています。
==========
では、プログラムの中で ViewWindow で座標系の設定を変えると、どうなるのかを調べてみます。
先ずは、次のプログラムを入力してください。
ファイル名:VW.PCL.1
ClrGraph
CoordOn
GridOff
AxesOn
LabelOn
ViewWindow -20,20,5,-5,15,5
Text 7,1,"[EXE]"
PxlOn 20,30
Text 1,1,"PxlOn 20,30"◢
PlotOn 10,10
Text 1,1,"PlotOn 10,10"◢
Circle 0,0,15
Text 1,1,"Circle 0,0,15"◢
F-Line 0,0,10,10
Text 1,1,"F-Line 0,0,10,10"◢
以下からダウンロードして、fx-9860GII へ転送もできます。
⇒ Casio Basic プログラムファイル VW.PCL.1.g1m のダウンロード
これを起動すると、以下の画面になります。

テキスト表示は、PxlOn 20,30 を実行したことを示していて、物理座標の (y, x) = (20, 30) に点が描画されています。
[EXE] キーを押すと、

PlotOn 10,10 により、ViewWindow -20,20,5,-5,15,5 で設定された座標系で (x, y) = (10, 10) に点が追加されます。
さらに、[EXE] キーを押すと、

Circle 0,0,15 により、原点 (0, 0) を中心にして、半径 15 の円が描画されます。既に描画した2つの点も見えます。
続いて、[EXE] キーを押すと、

F-Line 0,0,10,10 により、座標 (0, 0) から (10, 10) へ直線が描画されます。
ここでは、以下の描画コマンドを使いました;
- PxlOn: 指定した座標のピクセルを On にする。物理座標系を使う
- PlotOn: 点を描画する。論理座標系か ViewWindow 座標系を使う
- Circle: 円を描画する。論理座標系か ViewWindow 座標系を使う
- F-Line: 線を描画する。論理座標系か ViewWindow 座標系を使う
書式: PxlOn [y],[x]
- y と x で指定した座標のピクセルを On にする。
- 物理座標系のみを使うコマンド。y = 1, 2, 3...63 の整数値、x = 1, 2, 3...127 の整数値。
- y 座標(縦方向) を先に設定する。
PlotOn
書式: PlotOn [x],[y]
- 座標 (x, y) に点を描画する。
- 論理座標系 あるいは ViewWindow 座標系を使うコマンド。x, y は、小数でも良い。
Circle
書式: Circle [x],[y],[r]
- 座標 (x, y) を中心として、半径 r の円を描画する。
- 論理座標系 あるいは ViewWindow 座標系を使うコマンド。x, y, r は小数でも良い。
F-Line
書式: F-Line [x1],[y1],[x2],[y2]
- 座標 (x1, y1) と (x2, y2) を両端とした直線を描画する。
- 論理座標系 あるいは ViewWindow 座標系を使うコマンド。x, y は小数でも良い。
==========
さて、ここまで描画したところで、座標系を左へ10シフトしてみます。つまり、
座標系指定: ViewWindow -20,20,5,-5,15,5
を
座標系指定: ViewWindow -10,30,5,-5,15,5
に、変更します。
ファイル名:VW.PCL.1に1行追加
ClrGraph
CoordOn
GridOff
AxesOn
LabelOn
ViewWindow -20,20,5,-5,15,5
Text 7,1,"[EXE]"
PxlOn 20,30
Text 1,1,"PxlOn 20,30"◢
PlotOn 10,10
Text 1,1,"PlotOn 10,10"◢
Circle 0,0,15
Text 1,1,"Circle 0,0,15"◢
F-Line 0,0,10,10
Text 1,1,"F-Line 0,0,10,10"◢
ViewWindow -10,30,5,-5,15,5
これを実行すると、

と、テキスト画面が表示されます。
ここで [SHIFT] [F6] (G↔T) で、裏に回ったグラフィックス画面を表示させると、

座標軸とラベル X と Y 以外、何もありません。ViewWindow を実行すると、グラフィックス画面を消去することが分かります。
但し、グラフ設定はそのまま維持され、座標軸とラベルはグラフィックス画面の背景として表示されたままです。
ViewWindow はグラフィックス描画コマンドでないので、グラフィックス画面が裏へ回っています。
そこで、プログラムの最後に PlotOn を実行させると、グラフィックス画面を表示したままプログラムが終了するはずです。
ファイル名:VW.PCL.2
ClrGraph
CoordOn
GridOff
AxesOn
LabelOn
ViewWindow -20,20,5,-5,15,5
Text 7,1,"[EXE]"
PxlOn 20,30
Text 1,1,"PxlOn 20,30"◢
PlotOn 10,10
Text 1,1,"PlotOn 10,10"◢
Circle 0,0,15
Text 1,1,"Circle 0,0,15"◢
F-Line 0,0,10,10
Text 1,1,"F-Line 0,0,10,10"◢
ViewWindow -10,30,5,-5,15,5
PlotOn 10,10
以下からダウンロードして、fx-9860GII へ転送しても使えます。
⇒ Casio Basic プログラムファイル VW.PCL.2.g1m のダウンロード
これを起動して、[EXE] を4回か押すと、以下の画面になります。

全てのグラフィックス描画が消去された後、PlotOn コマンドで1つだけ点が描画されていて、グラフィックス画面が表に表示されています。
ClrGraph とグラフ設定 / ViewWindow 以外の座標系設定法
ClrGraph コマンドを実行すると、グラフィックス画面が消去されるだけでなく、論理座標系に設定されます。
例えば、以下のような ViewWindow 座標系を指定します。これは、論理座標系と同じです。
ViewWindow -6.3,6.3,0,-3.1,3.1,0
また、以下のような別の表記で同じ設定ができます。
-6.3→Xmin:6.3→Xmax:0→Xscl
-3.1→Ymin:3.1→Ymax:0→Yscl
但し、赤文字で示した3番目と6番目のパラメータは、座標軸と一緒に表示される目盛の間隔を設定するものです。座標軸を On にする時(AxesOn) に意味があります。これはグラフ設定の1つですが、4つのグラフ設定コマンドでは指定できません。
ClrGraph を実行すると目盛間隔が 1 に設定されることを、別の方法で確認してみます。
ファイル名:CLRGRPH3
AxesOn
0→Xscl:0→Yscl
"Set Scale to 0."◢
ClrText
ClrGraph
Locate 1,1,"Xmin:"
Locate 6,1,Xmin
Locate 12,1,"Xmax:"
Locate 17,1,Xmax
Locate 1,2,"Xscl:"
Locate 6,2,Xscl
Locate 1,3,"Xfct:"
Locate 6,3,Xfct
Locate 12,3,"Xdot:"
Locate 17,3,Xdot
Locate 1,5,"Ymin:"
Locate 6,5,Ymin
Locate 12,5,"Ymax:"
Locate 17,5,Ymax
Locate 1,6,"Yscl:"
Locate 6,6,Yscl
Locate 1,7,"Yfct:"
Locate 6,7,Yfct
入力が面倒な場合は、以下からダウンロードして、fx-9860GII へ転送できます。
⇒ Casio Basic ファイル CLRGRPH3.g1m のダウンロード
Xmin, Xmax, Xscl, Xfct, Xdot, Ymin, Ymax, Yscl, Yfct の入力は、ショートカットが分からない時は [SHIFT] [4] (CATALOG) で現れるコマンドリストから探せます。
Xmin の入力
[VARS] [F1] (V・WIN) [F1] (X) [F1] (min)
Xmax の入力
[VARS] [F1] (V・WIN) [F1] (X) [F2] (max)
Xscl の入力
[VARS] [F1] (V・WIN) [F1] (X) [F3] (scal)
Xdot の入力
[VARS] [F1] (V・WIN) [F1] (X) [F4] (dot)
Ymin の入力
[VARS] [F1] (V・WIN) [F2] (Y) [F1] (min)
Ymax の入力
[VARS] [F1] (V・WIN) [F2] (X) [F2] (max)
Yscl の入力
[VARS] [F1] (V・WIN) [F2] (Y) [F3] (scal)
Xfct の入力
[VARS] [F2] (FACT) [F1] (Xfct)
Yfct の入力
[VARS] [F2] (FACT) [F2] (Yfct)
なお、このプログラムでは、Xscl と Yscl 以外に、Xfct, Xdot, Yfct についても値を調表示します。
先ず最初に、AxesOn で座標軸を表示させる設定にし、X と Y 座標軸の目盛間隔を 0 に設定。これで、座標軸を表示するが目盛は表示しないようになります。この設定を行ったところで、出力命令◢ で一旦実行を止めて、Set Scale to 0. (目盛に 0 をセット)と表示させます。

ここで、グラフィックス画面を確認するために、[SHIFT] [F6] (G↔T) で裏に回っているグラフィックス画面を表示してみると、

座標軸は表示されているが、目盛は表示されていない、つまりプログラムコード通りに表示されていることが確認できます。
出力命令◢ で一旦停止しているプログラムを、[EXE] キーを押して停止解除すると、残りの処理を最後まで実行して、各変数の値を表示します。

Xscl と Yscl が共に 1 になっています。ClrGraph を実行すると、スケールが 1 に設定されるようです。
再び裏に回っているグラフィックス画面を確認するために、[SHIFT] [F6] (G↔T) を押すと、

目盛が間隔 1表示されていることが、再度確認できました。ここで、例えば PlotOn 1,1 を実行すると、目盛間隔が 1 になっていることも確認できます。
なお、Xdot は1ピクセルの値を示したり、設定する変数です。Ydot は準備されていないようです。1→Xdot とするとピクセルあたり 1 に設定できることは、簡単に確かめられます。
Xfct と Yfct は拡大率を示していて、共に 2 に設定されるようです。
これは、0→Xscl:0→Yscl の下に、1→Xfct:1→Yfct を追加して、プログラムを実行すると、これがの値が 2 に変更されることが確認できます。是非やってみてください。
fx-9860GII OS 2.04 では、グラフ機能の1つにデュアルグラフといって、1画面に2つのグラフを表示する機能があります。ここからは推測ですが、デュアルグラフ機能を前提にして、ClrGraph で拡大率を 2 に設定するのではないかと思われます。
以上の実験から、ClrGraph の動作内容が詳しくわかりました。
ClrGraph の動作
- グラフィックス画面を消去すると同時に、座標標系を論理座標に設定する。
- 再設定の内容は、ViewWindow -6.3,6.3,1,-3.1,3.1,1 と同じで、X、Y 軸の目盛間隔を 1 に設定する。
- 併せてグラフの拡大率を X、Y 軸共に 2 に設定する。
Casio Basic プログラムのファイル名について
fx-9860GII OS 2.04 の Casio Basic では、電卓上ではプログラムファイル名に - や . の文字が使えます。
これらの文字を使ったプログラムファイルを PCリンクソフト FA-124 Ver 2.04 を使ってPCへ転送・保存できます。
ところが、ファイル名に- を含んだファイル、例えば TEST-1 を FA-124 で 別のフォルダへ Export しようとすると、This file nmae is invalid. (このファイル名は無効です.) とエラー表示が出て、保存ができないことを見つけました。ファイル名に . が含まれたもの、例えば TEST.1 はエラーが出ません。
TEST-1 を別のフォルダで Export しようとして、ファイルダイアログで上のエラーが出たとき、ファイル名を TEST.1.G1M に変更すると、保存できます。そして、今度は逆に 今保存した TEST.1.G1M を FA-124 で Import すると、TEST-1 へ上書きされ、TEST.1 として保存されません。
Casio ファイル、g1m ファイルは、ファイル先頭部分でファイル名情報を保持しています。そして、FA-124 では、ファイル名自体をチェックせず、ファイルの先頭部にあるファイル名情報をみでチェックしているため、実際のファイル名とファイル名情報に矛盾が発生していることになります。
FA-124 は基本的に古いソフトなので、以前のグラフ関数電卓では、- 文字をファイル名に使えなかった時の仕様を引きずっているのではないかと思われます。
実際のファイル名と内部で保持しているファイル名情報に矛盾があるのは、あまり良いことでないので、プログラムファイル名に - 文字を使わないほうが良いでしょう。
今回のまとめ
- ClrGraph コマンドは、グラフィックス画面の消去だけでなく、座標系を論理座標系に変更する。
- ClrGraph コマンドは、スケールを 1 に変更する。
- Cls コマンドは、テキスト画面とグラフィックス画面の両方を消去するのみ。座標系の変更は行わない。
- テキスト画面に表示するコマンドは、グラフィックス画面への出力には使えない。
- グラフィックス画面に文字列を描画するには、Text コマンドを使う。
- 明示的な消去を行うコマンドを使わない限り、グラフィックス画面の描画はそのまま残る。
- [SHIFT] [F6] (CHAR) で、グラフィックス画面とテキスト画面の表示を切り替える。
- ViewWindow コマンドは、グラフィックス画面の描画を消去する。但し Plot コマンドによる描画は例外(次回紹介する)。
- Casio Basic ファイル名には、- 文字を使わないほうが良いと思われる。
今回使ったグラフィックス コマンド
- ClrGraph
- CoordOff
- GridOff
- AxesOff
- LabelOff
- ViewWindow
- Text
- PlotOn
- PxlOn
- Circle
- F-Line
- 座標系設定やグラフ設定で使える変数: Xmin, Xmax, Xscl, Xfct, Xdot, Ymin, Ymax, Tscl, Yfct
つづく...
⇒ Casio Basic入門G04 / 目次
応援クリックをお願いします。励みになるので...