Casio Basic入門G12

Casio Basic入門
<目次>

誤字脱字・記載ミスや分かりにくい表現は随時追記・修正します

修正 2015/11/03

 5. Casio Basic でグラフィックス

前回: Casio Basic入門G11

Chapter G12
PxlOff コマンド


前回 ViewWindow による座標系設定で動作確認した以下のグラフィックス描画を行うコマンドは、[SHIFT] [F4] (Sketch) に続くメニューの中にあり、これらをSketch描画コマンドと呼ぶことにします。
  • Plot
  • PlotOn
  • PlotOff
  • PlotChg
  • Line
  • F-Line
  • Circle
  • Vertical
  • Horizontal
  • Text
  • PxlOn
  • PxlOff
  • PxlChg
  • PxlTest( )
今回は、PxlOff について、詳細動作を調べます。このコマンドは PxlOn とほぼ同じです。


PxlOff コマンド

fx-9860GII Ver 2.04 のソフトウェアマニュアル の 8-24 ページには、以下の PxlOff コマンドの説明があります。

PxlOff <行番号>,<列番号>

説明はこれだけです。

ここで、行番号は縦方向、列番号は横方向です。これだけでは、原点がどこにあるか分かりません。

PxlOff コマンドは、物理座標系で位置を設定し、その位置のピクセルを消灯(OFFに)します。
座標系とピクセル位置2 
原点は、左上で (1, 1) です。このコマンドを記述すると、例えば、

PxlOff y,x

となります。1つめのパラメータを y 、2つめのパラメータを x としてみます。

通常、x を横方向の座標値、y を縦方向の座標値にするので、このようにしてみました。多くのコマンドでは 横方向 (x) が1つめのパラメータに来るのですが、PxlOff の1つめのパラメータは縦方向の y であり、2つめのパラメータが横方向の x で、違和感があります。仕様なので、しかたありません。


PxlOff は、指定された位置のピクセルを消灯(OFFに)するするコマンドで、

PxlOff y,x

は、

ViewWindow 1,127,0,1,63,0
PlotOff x,y

と同じ位置で点描画を消去することになります(なる筈です)。

ところが、

実際に

PxlOff Y,X 

と、1行だけのプログラムを書いて、実行するとエラーになります。

PxlOff の入力方法[SHIFT] [F4] (Sketch) [F6] (▷) [F6] (▷) [F3] (PIXL) [F2] (Off)

Argument_ERROR  

[2015/10/28] 訂正
変数 Y に 1 ~ 63 以外の整数、変数 X に 1 ~ 127 以外の整数が格納されていると、Argument ERROR となります。
PxlTest() を使う際には、変数 X と Y の初期値に留意する必要があり、必要に応じてエラーが出ないように初期化する必要があります。
===== 訂正ここまで =====


PxlOff コマンドを使う時、変数 XY は、描画した点の位置をデフォルトの論理座標系に換算した座標 (X, Y) の値に自動的に更新されることが確認できます。

例えは、PxlOff A,B を実行すると、物理座標系での点(B, A) を描画し、この点の位置がデフォルトの論理座標系へ変換された座標 (X, Y) へ自動計算され、X と Y がその値で自動的に更新されるわけです。そして、変数 X と Y は使ってはいけない予約変数として扱われます。


以上を確認するために、以下のプログラムを実行してみます。

ファイル名: PXLOFF1
ClrGraph
CoordOff
GridOff
AxesOff
LabelOff

SketchNormal Horizontal 0

Text 1,1,"PxlOff A,B"
Text 13,6,"(B,A)"
Text 13,35,"(X,Y)"
Text 19,6,"B="
Text 19,35,"X="
Text 25,6,"A="
Text 25,35,"Y="
Text 49,6,"Any KEY DOWN: Continue"

32→A:0→X:0→Y
For 1→B To 127
PxlOff A,B
Text 19,16,"  "  (スペース3個)
Text 19,45,"   " (スペース5個)
Text 19,16,B
Text 19,45,X
Text 25,16,"  "  (スペース3個)
Text 25,45,"   " (スペース5個)
Text 25,16,A
Text 25,45,Y
While Getkey=0
WhileEnd

Next

ダウンロード: PXLOFF1 


このプログラムは、先ず画面中央に水平線を描画します。この描画には SketchNormal Horizontal 0 と記述しています。

SketchNormal は、後に続く Sketch描画コマンドの線のスタイルを標準に設定するものです。
Casio Basic入門G06 参照

Horizontal 0 は、Y 座標値 0 の位置に水平線を描画します。上のプログラムでは ClrGraph を実行し、その後 ViewWindow で座標系の設定を行っていないので、デフォルトの論理座標系が指定されているので、Y 座標値 0 は画面の上下方向の中央を示します。
座標系とピクセル位置4 

このプログラムでは、この水平線上で、左から順に1ピクセルごとに PxlOff を実行してゆきます。PxlOff コマンドは物理座標系で位置を指定するので、Y 座標軸の中央の位置を物理座標系に換算すると、Y = 32 になります。

但し、位置指定のためのパラメータには 変数 X と Y を使えない(使うと Argument ERRORになる)ので、32→A で A に 32 を格納しておいてから、For 文を利用して B を 1 から 127 まで1つづつ変化させながら、PxlOff A,B を実行しています。

For 文の後には、

While Getkey=0
WhileEnd


があります。この2行の While ループ は、何もキーが押されない限りループを回り、何かキーが押されたらループを抜けて処理を下へ進めます。つまり、何かキーが押されるまでプログラムをそこで止める働きをします。

キー押下でプログラムをコントロールしたい - 逆引き Casio Basic 参照



このプログラムのポイントは、

PxlOff A,B

を実行した時、変数 X と Y に格納されている値を表示するところにあります。

Text 19,45,X



Text 25,45,Y

で、X と Y の値を表示しています。

併せて、変数 B と A の値も同時に表示します。

このプログラムを起動すると、以下の画面表示になります。

PxlOff_1 

水平線の左端のピクセルが消去されています。A と B は物理座標系での座標 (B, A) の値なので、ここでは B=1、A=32 となっていますね。
さて、この時の X と Y の値を見てみます。X = -6.3Y = 0 となっています。
これは、デフォルトの論理座標系での左上の点の座標値ですね。

座標系とピクセル位置4 
それでは、何かキーを押すと、

PxlOff_2 

2つめの点が描画され、B=2、A=32 と表示されていて、X = -6.2Y = 0 となっています。
座標 (B, A) と (X, Y) がそれぞれ、物理座標系とデフォルトの論理座標系での点の位置を示していることが確認できます。

さらに、何かキーをしばらく長押ししてみると、X が負の値で、0.1 づつ大きくなっていることが分かります。

そして、例えば以下のような画面になる時、

PxlOff_3 

ここでは、X が、それまで負の値で、0.1 づつ大きくなってきて、ついに X = 0 になる時を示していて、デフォルトの論理座標系でのX の値だと分かります。

そのまま、何かキーを長押しすると、以下のようになって表示の変化が止まります。

PxlOff_4 

B = 127 で右端まで到達したことを示していて、その時 X = 6.3 になっています。A と Y の値は、変化せずそれぞれ 32 と 0 のままです。
ここで、プログラムが最後まで実行されました。


以上から、PxlOff では、パラメータに X と Y を使えないかわりに、X と Y には、デフォルトの論理座標系での座標値 (X, Y) の値が自動的に更新されることが確認できました。

PxlOff を使う時は、変数 X と Y の値が勝手に変更されることに留意し、プログラムを書く必要があります。単に点を描画するには、敢えて PxlOff を使う必要はなくて、PlotOff を使えば良いと思います。

逆に言えば、物理座標系からデフォルトの論理座標系への自動変換をする機能をうまく利用するとき、PxlOff コマンドの利用価値があると英増す。


なお、PxlOff コマンドで設定する値には制限があって、制限以外の値を設定すると Argument ERROR になります。
デフォルトおよび ViewWindow の論理座標系で使うコマンドでは、パラメータの値に制限はなくエラーにならないのに対して、物理座標系で使うコマンドは、制限外の値を設定するとエラーになることも留意する必要があります。

PxlOff A,B では、A = 1 ~ 63 の整数、B = 1 ~ 127 の整数に制限されます。実際に簡単に試せるので、ここでは確認プログラムの紹介は割愛します。


PxlOff

書式PxlOff A,B
  • パラメータ A と B で指定された位置のピクセルを消す(OFFにする)。
  • パラメータ A と B は、物理座標系での位置を示す。変数 X と Y を使う時は、その値に留意する。
  • このコマンドが実行されると、消去した点の物理座標系の位置がデフォルトの論理座標系での座標 (X, Y) に変換され、その値が変数 X と Y に自動的に代入・更新される。
  • A には、1 から 63 までの整数値を用い、それ以外の値を設定すると Argument ERROR になる。
  • B には、1 から 127 までの整数値を用い、それ以外の値を設定すると、Argument ERROR になる。

PxlOff の入力方法[SHIFT] [F4] (Sketch) [F6] (▷) [F6] (▷) [F3] (PIXL) [F2] (Off)





今回のまとめ
  • PxlOff A,B は、物理座標系で位置を設定し、その位置のピクセルを消す(OFFにする)。
  • A = 1 ~ 63、B = 1 ~ 127 の整数値に限定去れ、それ以外を設定すると Argument ERROR になる。
  • PxlOff のパラメータに X と Y を使う場合は、その値に留意する。
  • 変数 X と Y は、描画した点をデフォルト論理座標系に変換した座標値 (X, Y) が自動的に代入・更新される。PxlOff コマンド使用時には、変数 X と Y の利用には注意が必要である。


今回使ったグラフィックス コマンド

  • PxlOff



つづく...

Casio Basic入門 G13 / 目次




応援クリックをお願いします。励みになるので...

人気ブログランキングへ


FC2ブログランキングへ







keywords: fx-9860GIICasioBasic、プログラミング入門グラフィックスプログラム関数電卓

リンク集 | ブログ内マップ


関連記事

テーマ : プログラム関数電卓
ジャンル : コンピュータ

コメントの投稿

非公開コメント

最新記事
最新コメント
カテゴリ
C# (3)
検索フォーム
Visitors
Online Counter
現在の閲覧者数:
プロフィール

やす (Krtyski)

Author:やす (Krtyski)
since Oct 30, 2013


プログラム電卓は、プログラムを使ってナンボ!

実際に触って気づいたこと、自作プログラム、電卓プログラミングについて書いています

おもしろい・役に立つならクリックしてください。励みになります。
にほんブログ村 IT技術ブログ 開発言語へ
にほんブログ村


人気ブログランキングへ


FC2ブログランキングへ


写真: 「4駆で泥んこ遊び@オックスフォード郊外」

リンク
月別アーカイブ
Sitemap

全ての記事を表示する

RSSリンクの表示
最新トラックバック
ブロとも申請フォーム

この人とブロともになる

QRコード
QR