Casio Basic入門G01
Casio Basic入門
誤字脱字・記載ミスや分かりにくい表現は随時追記・修正します
追記 2015/06/26
更新 2015/08/15
修正 2015/12/07
追記 2017/09/25
追記 2015/06/26
更新 2015/08/15
修正 2015/12/07
追記 2017/09/25
5. Casio Basic でグラフィックス
はじめに
グラフ描画機能を世界で初めて電卓に取り入れたのが、カシオの fx-7000G です。それ以来、カシオのグラフ関数電卓は、教育現場の意見や要望を取り入れながら、数学教育ツールとして開発が継続されています。その延長線上に fx-9860GII があります。
私自身は、これまで fx-5800P を使いこなしてきたので、fx-9860GII のグラフ機能やグラフィックス機能が、Casio Basic にどのように実装されているのかは殆ど知らず、カシオのグラフ関数電卓のグラフィックス描画速度が非常に遅いという感覚だけが有りました。
fx-9860GII やグラフ関数電卓の Casio Basic でグラフィックス プログラミングがどのようなものか知りたいと思っても、fx-9860GII の取扱説明書のプログラム機能の記述は、特にグラフィックスに関しては、fx-5800P 以上に不親切です。
そこで、入手できる情報を元にして、自分で色々と調べて、Casio Basic 入門として記録してゆこうと思います。
Chapter G01
LCDと3つの座標系
グラフィックス描画の単位は、LCD(液晶ディスプレイ)の1ピクセルです。
fx-9860GII はモノクロLCDを使っているので、必要なピクセルをOn / Off すれば、グラフィックス描画ができます。
ピクセル1つを On したり、Off したり、On と Off を切り替えるなどのコマンドがあり、線分、水平線や垂直線、円を描画するコマンドがあります。さらに、関数をグラフとして表示するための高度なコマンド もありそうです。
Casio Basic のグラフィックス描画エリア

3つの座標系 [2017/09/25 追記]
以下の3つの座標系を切り替えて使います。
・論理座標系
・デフォルトの論理座標系 (ClrGraph で設定)
・ViewWindow座標系 (ViewWindow で設定)
・物理座標系
設定コマンドはない。物理座標系専用コマンドを使えば自動的に物理座標で使える。
※物理座標系専用コマンド: PxlOn、PxlOff、PxlChg、PxlTest(、Text
デフォルトの論理座標系

Casio Basic で用いる座標系の1つに、描画エリア中央を原点にし、左の図のような論理座標系があります。1dot の値が 0.1 に固定されています。
例えば、座標 (5, -3) は、原点ピクセルから、右に50 dot、下に 30dot の位置になります。
この座標系で使えるコマンドには、Plot, PlotOn, PlotOff, PlotCng, Line, F-Line, Circle, Horizonal, Vertical などが挙げられます。
この座標系は、数学でグラフを書く時に分かりやすいのですが、1dot の値が 0.1 に固定されているので、この狭い範囲にグラフが収まりきらないことが多く発生します。そこで、1dot の値を自由に設定し、原点も自由に設定できれば、あらゆるグラフが書ける座標系を設定できるようになります。
ViewWindow 座標系
Casio Basic には、論理座標系を自由に設定するために、ViewWindow コマンドが用意されています。
ViewWindow 座標系設定の書式 (直行座標系の場合) [2015/06/27 更新]
ViewWindow [左端のxの値],[右端のxの値],0,[下端のyの値],[上端のyの値],0
- 3番目と6番目のパラメータは、座標軸を描画する際、AxesOn を指定した場合の目盛間隔(スケール)を指定する。座標軸と共にグラフを描画しない場合は、両方とも 0 としておけば良い。
- 例えば、ViewWindow 1,127,0,63,1,0 とすれば、物理座標系と同様になる(但し、小数値での座標設定ができる点が、物理座標とは異なる)。

例えば、
ViewWindow 0,126,0,0,62,0 [2015/08/15 訂正]
とすれば、左の図の座標系を設定できます。
この設定例は、1dot の値が 1 つまり、数値とピクセル数が一致するので、グラフィックス描画を行う時、分かりやすくなります。
プログラムのロジックや使う変数に応じて、処理速度を最適化するために、柔軟に座標系を設定できる点も、グラフィックス プログラミングに適しているかも知れません。
この座標系で使えるコマンドには、デフォルトの論理座標系と同じ Plot, PlotOn, PlotOff, PlotChg, Line, F-Line, Circle, Horizontal, Vertical などが挙げられます。
物理座標系
さて、Casio Basic には、もう一つの座標系があります。

LCDの左上隅のピクセルを原点とする座標系で、PCなどのグラフィックスで最も一般的な座標系です。
但し、原点は (0, 0) でなくて、(1, 1) で、x や y には 1以上の整数しか使えません。整数でないとエラーになります。
ちなみに、論理座標系や ViewWindow座標系では(x, y) に小数を使ってもエラーにならず、指定位置に最も近いピクセルが自動的に選ばれます。
さらに、物理座標系で使えるコマンドの座標値の記法は、x と y の順序を逆、つまり y の値を先に x の値を後にして (y, x) としなければなりません。
この座標系では、Text, PxlOn, PxlOff, PlxChg, PxlTest( ) が使えます。
[2015/12/07 修正]
さらに、X と Y には論理座標系での値が自動的に入るので、負の値や小数になることが多く、PxlOn B,A の実行直後に PxlOn Y,X を実行すると、X と Y に正の整数以外が入っている場合はエラーになります。Text を除く物理座標系で使うコマンドには、X と Y 以外の変数を座標指定に使った方が、このエラーに悩まされずに楽かも知れません。
====== 修正ここまで =====
これは、面白いので後で取り上げる予定ですが、確認するために作ったプログラムをダウンロードできます。興味のある方には、先行して遊んでみてください。
⇒ PxlOn の予約変数 X, Y を調べて見る
(上を左クリックして現れるポップアップウィンドウで、リンクを右クリックし、[名前を付けてリンク先を保存] を選択)
サンプルプログラムを作ってみる
fx-9860GII は、128 x 64 ドットのモノクロLCD(液晶ディスプレイ)を搭載していますが、Casio Basic でのグラフィックスエリアは 127 x 63 ドットです(上記参照)。
以下のプログラムを実行すると、LDCの上端の1ラインと左端の1ラインが、グラフィックスエリアに使われていないことが確認できます。(但し、グラフィックス描画以外には、使われるケースがあることも分かっています。今後紹介します)。
なお、プログラム実行中の方が視認性が良くなります。見づらい場合はLCDのコントラストを調整してみてください。
ClrGraph
LabelOff
For -3.1→Y To 3.1 Step 0.1
Horizontal Y
Next
(論理座標系)
プログラムの入力と実行の操作方法は、「ソフトウェア バージョン Ver 2.04 取扱説明書」の第8章 プログラム機能、8-1 ページにある 「1.プログラムの作成から実行までの流れ」 を参照してください。
fx-9860GII の取扱説明書は、製品に添付されているCDに PDF ファイルとしてあります。または、カシオのサイトからダウンロードできます。
⇒ fx-9860GII_Soft_J.pdf
fx-9860GII で入力するコマンドは、複数のメニューに分散していて、最初は探すのに苦労します。fx-5800P のようにスッキリとまとまっていないので、なんとかして欲しいと思います。
- ClrGraph の入力
[SHIFT] [VARS] (PRGM) [F6] (▷) [F1] (DLR) [F2] (Grph)
- LabelOff の入力
[SHIFT] [MENU] (SET UP) [F5] (LABL) [F2] (Off)
- For / To / Step / Next の入力
[SHIFT] [VARS] [F1] (COM) [F6] (▷)
とすると、[F1] ~ [F4] にそれぞれ、For、To、Step、Next が割り当てられている。
- Horizontal の入力
[SHIFT] [F4] (Skeych) [F6] (▷) [F5] (Hztl)
コマンド類は、おおよそ以下の場所に分散しています;
- プログラムの制御に関するもの:
[SHIFT] [VARS] から下位のメニュー
- グラフ機能(グラフィックス機能) の描画に関するもの;
[SHIFT] [F4] (Sketch) から下位のメニュー
-グラフ機能(グラフィックス機能)の設定に関するもの;
[SHIFT] [MENU] (SET UP) から下位のメニュー
- ViewWindowの設定に関するもの;
[SHIFT] [F3] (V-Window) から下位のメニュー
上記のプログラムは、グラフィックスエリアを塗りつぶしています。同様にエリアを塗りつぶすために、PxlOn コマンドでピクセルを順に塗りつぶすプログラムは以下になります。
ClrGraph
For 1→A To 63
For 1→B To 127
PxlOn A,B
Next
Next
(物理座標系)
描画速度を比較すると、Horizontal コマンドを用いる方が、圧倒的に速いことが分かります。
今回のまとめ
- fx-9860GII のLCDは 128 x 64 ピクセル
- fx-9860GII のグラフィックス描画エリアは 127 x 63 ピクセル
- fx-9860GII は3つの座標系を使い分ける
- デフォルトの論理座標系: LDC中央が原点、1dot = 0.1 で固定
- ViewWindow座標系: 自由に設定可能な座標系
- 物理座標系: LCDピクセルを直接指定する座標系、1 dot = 1、整数指定
- グラフィックス コマンドにより描画速度が大きく異なる
今回使ったグラフィックス コマンド
- ViewWindow
- ClrGraph
- Horizontal
- PxlOn
つづく...
⇒ Casio Basic入門G02 / 目次
応援クリックをお願いします。励みになるので...