Casio Basic入門G13
Casio Basic入門
誤字脱字・記載ミスや分かりにくい表現は随時追記・修正します
修正 2015/11/03
5. Casio Basic でグラフィックス修正 2015/11/03
前回: Casio Basic入門G12
Chapter G13
PxlChg コマンド
前回 ViewWindow による座標系設定で動作確認した以下のグラフィックス描画を行うコマンドは、[SHIFT] [F4] (Sketch) に続くメニューの中にあり、これらをSketch描画コマンドと呼ぶことにします。
- Plot
- PlotOn
- PlotOff
- PlotChg
- Line
- F-Line
- Circle
- Vertical
- Horizontal
- Text
- PxlOn
- PxlOff
- PxlChg
- PxlTest( )
PxlChg コマンド
fx-9860GII Ver 2.04 のソフトウェアマニュアル の 8-24 ページには、以下の PxlCgf コマンドの説明があります。
PxlChg <行番号>,<列番号>
説明はこれだけです。
ここで、行番号は縦方向、列番号は横方向です。これだけでは、原点がどこにあるか分かりません。
PxlChg コマンドは、物理座標系で位置を設定し、その位置のピクセルが On なら Off に、Off なら On に切り替えます。

原点は、左上で (1, 1) です。このコマンドを記述すると、例えば、
PxlChg y,x
となり、y は縦方向、 x は横方向の位置です。
通常、x を横方向の座標値、y を縦方向の座標値にするので、このようにしてみました。多くのコマンドでは 横方向 (x) が1つめのパラメータに来るのですが、PxlChg の1つめのパラメータは縦方向の y であり、2つめのパラメータが横方向の x で、違和感があります。仕様なので、しかたありません。
物理座標系で位置を設定するコマンドは、PxlChg 以外も全てこのようになります。既に使ってきている Text コマンドも同様です。
さて実際に
PxlChg Y,X
と、1行だけのプログラムを書いて、実行するとエラーになります。
PxlChg の入力方法: [SHIFT] [F4] (Sketch) [F6] (▷) [F6] (▷) [F3] (PIXL) [F3] (Chg)

[2015/10/28] 訂正
変数 Y に 1 ~ 63 以外の整数、変数 X に 1 ~ 127 以外の整数が格納されていると、Argument ERROR となります。
PxlTest() を使う際には、変数 X と Y の初期値に留意する必要があり、必要に応じてエラーが出ないように初期化する必要があります。
===== 訂正ここまで =====
PxlChg コマンドを使う時、変数 X と Y は、描画した点の位置をデフォルトの論理座標系に換算した座標 (X, Y) の値に自動的に更新されることが確認できます。
例えは、PxlOff A,B を実行すると、物理座標系での点(B, A) を描画し、この点の位置がデフォルトの論理座標系へ変換された座標 (X, Y) へ自動計算され、X と Y がその値で自動的に更新されるわけです。そして、変数 X と Y は使う際には要注意となる予約変数です。変数 X と Y は使ってはいけないと解説している海外の個人ホームページがありますが、この仕様を理解して使うのは問題ありません。使わない方が妙なバグにならず確実だとは言えます。
PxlChg の動作を確認するため、以下のように点線を3本描いて、ピクセルが交互に On と Off になる状態を作り、それぞれのピクセル位置で PxlChg を実行して、ピクセルの On と Off が逆転することを確認します。

この準備には、PxlOn を使うことにします。
ClrGraph
CoordOff
GridOff
AxesOff
LabelOff
Text 1,1,"PxlOn"
For 31→A To 33
For 1→B To 127
MOD(A+B,2)⇒PxlOn A,B
Next
Next
ここで MOD 関数は A+B を 2 で割った時の余りが 1 の時のみ PxlOn A,B を実行するように使います。こうすることで、交互にピクセルを On にできます。
F-Line コマンドを使ってピクセルを交互に On にする方法は、以下で紹介しています。
⇒ Casio Basic入門G07
この方法でも良いのですが、今回は別の方法を紹介しました。
For 文が2重になっていますが、内側のFor 文では、A 行を左から右へ (B が 1 から 127 まで) 交互に点を描いています。外側は、A 行の A を 31 から 33 まで順に変化させています。
先ず、A が 31 になって、内側の For 文(内側の For と Next の間) が B が 1 から 127 になるまで、B の値を 1 づつ増やしながら繰り返します。内側の For 文が終わったら、外側の For 文で A を 1 増やして (A=32)、もう一度内側の For 文が繰り返しを行い、これが終わったら再度外側の For 文で A を 1 増やして (A=33) さらに内側の For 文が同じように繰り返しを行います。これが終わって外側の For 文に戻るわけですが、A が 33 まで繰り返すように書いてあるので、これ以上の繰り返しを行わずに、外側の Next へジャンプし、プログラムが終わります。
⇒ Casio Basicコマンドリファレンス: For 文
これで、準備が終わったので、PxlChg の動作を確認するために以下のプログラムに仕上げます。
ファイル名: PXLCHG1
ClrGraph
CoordOff
GridOff
AxesOff
LabelOff
Text 1,1,"PxlOn"
For 31→A To 33
For 1→B To 127
MOD(A+B,2)⇒PxlOn A,B
Next
Next
Text 1,1,"PxlChg"
Text 7,1,"X="
Text 13,1,"Y="
Text 45,1,"Hit Any Key: Do PxlChg"
0→X:0→Y
For 31→A To 33
For 1→B To 127
PxlChg A,B
Text 7,10,X
Text 13,10,Y
While Getley=0
WhileEnd
Text 7,10," " (スペース4個)
Text 13,10," " (スペース4個)
Next
Next
ダウンロード: PXLCHG1
青文字で示した2行の While ループは、何かキーが入力されるまでプログラムを一旦停止する働きをします。
よく使う方法なので、逆引き Casio Basic にも掲載しました。
⇒ キー押下でプログラムをコントロールしたい - 逆引き Casio Basic
プログラムを一旦停止するには、◢ 命令を使う方法もあり、これは簡単な方法です。一旦停止を解除するには [EXE] キーを押します。但し、今回のプログラムでは、プログラムを進めるには [EXE} キーを連打し続ける必要があり大変です。一方、上の方法だと 何かキー([AC] キー以外)を押し続けるだけでプログラムは進むので格段に操作が楽になるので、この方法を紹介しています。
For 文については、準備で PxlOn による点描画を行ったのと全く同じなので、ここでは割愛します。
赤文字で示したこのプログラムの肝心な部分では、PxlChg を実行し、その後に 変数 X と Y の値を確認しています。
X と Y は、PxlChg が On と Off を切り替えたピクセルの座標を示しますが、デフォルトの論理座標系での座標値を示します。
PxlChg A,B で示しているピクセルの位置 (A, B) は物理座標系での位置を示しますが、X と Y はその座標をデフォルトの論理座標系に変換した (X, Y) になっているわけです。

では、プログラムを実行してみます。
このプログラムを起動すると、先ずは PxlOn でピクセルが交互に On になるように点線を3行描画します。

これは2行目を描画しているところです。描画は続きます。

3行目の描画がほぼ終わったところです。3行の範囲でピクセルが交互に On になっているのが分かります。
準備が完全に終わると、以下の表示でプログラムが一旦停止します。

1行目の左端は、既に PxlChg で Off だったピクセルが On になっているのがわかります。上のプログラムでは、PxlChg を1回実行した直後、プログラムが While ループに入って、それが回り続けるため、そこから先へプログラムが進みません(止まっているように見えます)。
では、何かキー(但し [AC] キー以外)を短く押すと PxlChg が1回づつ実行され、同時に X と Y の値が表示されます。
1行目の中央まで進んだところが下の画面です。

交互に On になっていたピクセルの On と Off が切り替わっていることが一目瞭然です。そして、X=0、Y=0.1 となっていて、デフォルトの論理座標系での値になっていることが確認できます。

さらに、何かキーを押します。押し続けるとプログラムは進むので、しばらく押し続けてみてください。

3行目まで進みました。X と Y の値もデフォルトの論理座標系に従っていることが分かります。

3行目の右端のピクセルで PxlChg が実行され、そのときの X と Y の値が表示されたところです。
以上から、PxlChg では、パラメータに X と Y を使えないかわりに、X と Y には、デフォルトの論理座標系での座標値 (X, Y) の値が自動的に更新されることが確認できました。
PxlChg を使う時は、変数 X と Y の値が勝手に変更されることに留意し、プログラムを書く必要があります。通常は、ピクセル位置の指定に X と Y が使え、さらに論理座標系で使える PlotChg を使う方が余計なことに留意する必要がありません。
逆に言えば、物理座標系からデフォルトの論理座標系への自動変換をする機能をうまく利用したいとき、物理座標系でピクセルの On Off を切り替えたいときは、PxlChg コマンドの利用価値があると英増す。
なお、PxlChg コマンドで設定する値には制限があって、制限以外の値を設定すると Argument ERROR になります。
デフォルトおよび ViewWindow の論理座標系で使うコマンドでは、パラメータの値に制限はなくエラーにならないのに対して、物理座標系で使うコマンドは、制限外の値を設定するとエラーになることも留意する必要があります。
PxlChg A,B では、A = 1 ~ 63 の整数、B = 1 ~ 127 の整数に制限されます。実際に簡単に試せるので、ここでは確認プログラムの紹介は割愛します。
PxlChg
書式: PxlChg A,B
- パラメータ A と B で指定された位置のピクセルの On と Off を切り替える。
- パラメータ A と B は、物理座標系での位置を示す。変数 X と Y を使う場合は、その値に留意する。
- このコマンドが実行されると、消去した点の物理座標系での位置をデフォルトの論理座標系での座標 (X, Y) に換算し、その値が変数 X と Y に自動的に代入・更新される。
- A には、1 から 63 までの整数値を用い、それ以外の値を設定すると Argument ERROR になる。
- B には、1 から 127 までの整数値を用い、それ以外の値を設定すると、Argument ERROR になる。
PxlChg の入力方法: [SHIFT] [F4] (Sketch) [F6] (▷) [F6] (▷) [F3] (PIXL) [F3] (Chg)
今回のまとめ
- PxlChg A,B は、物理座標系で位置を設定し、その位置のピクセルの On と Off を切り替える。
- A = 1 ~ 63、B = 1 ~ 127 の整数値に限定去れ、それ以外を設定すると Argument ERROR になる。
- PxlChg のパラメータに X と Y を使う時は、その値に留意する。
- 変数 X と Y は、描画した点をデフォルト論理座標系に変換した座標値 (X, Y) が自動的に代入・更新される。PxlChg コマンド使用時には、変数 X と Y の利用には注意が必要である。
今回使ったグラフィックス コマンド
- PxlChg
つづく...
⇒ Casio Basic入門 G14 / 目次
応援クリックをお願いします。励みになるので...