Casio Basic入門G11

Casio Basic入門
<目次>

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

修正:2015/11/03

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

前回: Casio Basic入門G10

Chapter G11
PxlOn コマンド


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


PxlOn コマンド

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

PxlOn <行番号>,<列番号>

説明はこれだけです。

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

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

PxlOn y,x

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

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

物理座標系で位置を設定するコマンドは、PxlOn 以外も全てこのようになります。既に使ってきている Text コマンドも同様ですね。

PxlOn は指定されたピクセルを点灯(ONに)するコマンドで、

PxlOn y,x

は、

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

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

ところが、

実際に

PxlOn Y,X 

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

PxlOn の入力方法[SHIFT] [F4] (Sketch) [F6] (▷) [F6] (▷) [F3] (PIXL) [F1] (On)

Argument_ERROR  

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

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

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


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

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

Text 19,6,"PxlOn A,B"
Text 25,6,"(B,A)"
Text 25,35,"(X,Y)"
Text 31,6,"B="
Text 31,35,"X="
Text 37,6,"A="
Text 37,35,"Y="
Text 49,6,"Any KEY DOWN: Continue"

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

Next

Text 49,6,"            " (スペース23個)
Text 49,6,"EXE: Continue"◢

Text 49,6,"Any KEY DOWN: Continue"
1→B:0→X:0→Y
For 1→A To 63
PxlOn A,B
Text 31,16,"  "  (スペース3個)
Text 31,45,"   " (スペース5個)
Text 31,16,B
Text 31,45,X
Text 37,16,"  "  (スペース3個)
Text 37,45,"   " (スペース5個)
Text 37,16,A
Text 37,45,Y
While Getkey=0
WhileEnd

Next

Text 49,6,"            " 
(スペース23個)


ダウンロード: PXLON1 [2015/10/04: ダウンロードファイルの修正]

このプログラムは、一番上の行に左から順に点を1個づつプロットする前半部分(1つめの For 文のブロック)と、一番左の列に上から順に点を1個づつプロットする後半部分(2つめの For 文のブロック)から構成されています。

それぞれの For 文の最後には、

While Getkey=0
WhileEnd


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

Casio Basicコマンドリファレンス: While ループ

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


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

PxlOn A,B

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

Text 31,45,X



Text 37,45,Y

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

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

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

PxlOn1 

左上に点が描画されています。A と B は物理座標系での座標 (B, A) の値なので、ここでは B=1、A=1 となっていますね。
さて、この時の X と Y の値を見てみます。X = -6.3Y = 3.1 となっています。
これは、デフォルトの論理座標系での左上の点の座標値ですね。

座標系とピクセル位置4 
それでは、何かキー(但し [EXE] 以外)を押すと、

PxlOn2 

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

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

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

PxlOn3 

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

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

PxlOn4 

B = 127 で右端まで到達したことを示していて、その時 X = 6.3 になっています。A と Y の値は、変化せずそれぞれ 1 と 3.1 のままです。
ここで、前半の For 文が終わりました。

表示に従って、[EXE] を1回押すと、

PxlOn5 

さらに、何かキーを少しだけ長押しすると、

PxlOn6 

今度は、左上から順に下へ点が描画されてゆきます。そして、B と X の値へ変化せず、A と Y が変化してゆきます。Y の値は 0.1 づつ小さくなってゆきます。

PxlOn7 

縦方法の真ん中に点が描画され、A = 32、 Y = 0 になっています。論理座標系では、画面中央が原点 (0, 0) になるので、Y = 0 になっているわけです。

さらに、何かキーを長押しすると、画面の変化がなくなります。

PxlOn8 

画面の左下に点が描画され、A = 63、Y = -3.1 になっています。

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

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

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


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

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


PxlOn

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

PxlOn の入力方法[SHIFT] [F4] (Sketch) [F6] (▷) [F6] (▷) [F3] (PIXL) [F1] (On)





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


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

  • PxlOn



つづく...

Casio Basic入門 G12 / 目次




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

人気ブログランキングへ


FC2ブログランキングへ







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

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


関連記事

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

コメントの投稿

非公開コメント

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

やす (Krtyski)

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


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

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

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


人気ブログランキングへ


FC2ブログランキングへ


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

リンク
月別アーカイブ
Sitemap

全ての記事を表示する

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

この人とブロともになる

QRコード
QR