Casio Basic入門G10
Casio Basic入門
誤字脱字・記載ミスや分かりにくい表現は随時追記・修正します
2015/09/22
5. Casio Basic でグラフィックス2015/09/22
前回: Casio Basic入門G09
Chapter G10
Circle コマンド
前回 ViewWindow による座標系設定で動作確認した以下のグラフィックス描画を行うコマンドは、[SHIFT] [F4] (Sketch) に続くメニューの中にあり、これらをSketch描画コマンドと呼ぶことにします。
- Plot
- PlotOn
- PlotOff
- PlotChg
- Line
- F-Line
- Circle
- Vertical
- Horizontal
- Text
- PxlOn
- PxlOff
- PxlChg
- PxlTest( )
Circle コマンド
fx-9860GII Ver 2.04 のソフトウェアマニュアル の 8-24 ページには、以下の Circle コマンドの説明があります。
Circle <中心のX座表値>,<中心のY座標値>,<半径Rの値>
説明はこれだけです。
では、実際に円の描画を行ってみます。
まず、座標軸とスケール(座標の目盛)を設定し、円の中心に点をプロット後、円を描画します。
座標軸は、
- 左端: -63
- 右端: 63
- X軸目盛: 10
- 下端: -31
- 上端: 31
- Y軸目盛: 1
Circle の入力方法: [SHIFT] [F4] (Sketch) [F6] (▷) [F3] (Crcl)
ファイル名: CIRCLE1
ClrGraph
CoordOff
GridOff
AxesOn
LabelOff
ViewWindow -63,63,10,-31,31,10
PlotOn -10,20
Circle -10,20,30
ダウンロード: CIRCLE1
これを実行すると、以下のようになります。

座標(-10, 20)に点がプロットされ、この点を中心として半径 30 の円が描画されていることが確認できます。
ところで、PlotOn は、点が描画されると、その点の座標値が (A, B) とすると、変数 X に A が、変数 Y に B が自動的に代入される仕様です。
⇒ 楽屋裏 - 酔っ払いの虫
そこで、Circle でも同様な詳細動作があるかどうかを調べるために、変数 X と Y の値を確認するプログラムを CIRCLE1 を改造して作ります。
ファイル名: CIRCLE2
ClrGraph
CoordOff
GridOff
AxesOn
LabelOff
ViewWindow -63,63,10,-31,31,10
PlotOn -10,20
0→X:0→Y
PlotOn -10,20
Text 1,1,X
Text 7,1,Y◢
Text 1,1," " (スペース3個)
Text 7,1," " (スペース3個)
Circle -10,20,30
Text 1,1,X
Text 7,1,Y
Plot X,Y
ダウンロード: CIRCLE2
円を描画する前に、変数 X と Y をそれぞれ 0 で初期化した上で、円の中心座標 (-10, 20) に PlotOn で点を描画し、X と Y の値を Text コマンドで表示し、◢ 命令でプログラムの実行を一旦停止しています。

座標 (-10, 20) に点が描画され、左上に x 座標値とy 座標値が表示されています。PlotOn で座標 (-10, 20) に点が描画されると、描画点の x 座表値と y 座標値がそれぞれ変数 X と Y に自動的に代入される仕様が、ここでも確認できます。
[EXE] キーで一旦停止を解除して続く処理を実行させると、左上の -10 と 20 をスペースで上書きして表示を消去した上で、Circle -10,20,30 を実行し、再び 変数 X と Y の値を Text コマンドで表示します。最後に、Plot X,Y で、座標 (X, Y) に十字カーソルを表示します。

この結果から、変数 X には 20 、変数 Y には 20 が代入されていて、カーソルが円の右端に表示されています。
この結果から、Circle x,y,r が実行されると、変数 X と Y には、以下の値が自動的に代入されていると推測できます。
- X = x + r
- Y = y
ファイル名: CIRCLE3
ClrGraph
CoordOff
GridOff
AxesOn
LabelOff
ViewWindow 0,126,10,0,62,10
For 1→A To 10
PlotOn 10A,5A
Circle 10A,5A,2A
Text 1,1,"r="
Text 1,10,2A
Text 7,1,"x= " (スペース1個)
Text 7,10,10A
Text 13,1,"y= " (スペース1個)
Text 13,10,5A
Text 19,1,"x+r= " (スペース1個)
Text 19,20,X
Text 48,71,"Plot X,Y"
Text 54,71,"X= " (スペース4個)
Text 54,105,"Y= " (スペース4個)
Text 54,81,X
Text 54,115,Y
Plot X,Y◢
Next
ダウンロード: CIRCLE3
ここで、赤文字で書いた Text 19,20,X に注目してください。r と x の値を表示した上で、x + r の値として 変数 X の値を表示しています。
もし、X = x + r が正しいなら、表示された x と r の値の和が、x + r の値として正しく表示されることが確認できます。
CIRCLE3 を実行すると、

左上に、r=2, X=10, y=5 と表示されます。そして、x+r= 12 となっていますが、この 12 は変数 X の値を表示しています。つまり、X = x + r および Y = y が成立しています。右下には、変数 X と Y の値が、それぞれ X= 12, Y=5 と表示され、十字カーソルが座標 (12, 5) に表示されています。
この画面は、Plot X,Y◢ で実行が一旦停止した状態なので、[EXE] キーで一旦停止を解除すると、

左上に、
r=4
x=20
y=10
x+r=24
右下に、
Plot X,Y
X= 24 Y= 10
と表示され、十字カーソルが (24, 10) に有ることが確認できます。
ここでも、X = x + r と Y = y が成立しています。
さらに、[EXE] でプログラムを進めると、

左上に、
r=6
x=30
Y=15
x+r= 36
右下に、
Plot X,Y
X= 36 Y= 15
と表示され、X = x + r そして Y = y が成立していて、十字カーソルが座標 (36, 15) に表示されています。カーソルの位置 (36, 15) は円の外接垂直線と円との接点になっていることが分かります。そして、PlotOn 10A,5A で円の中心に点が描画されていることも確認できます。
さらに [EXE] を押してゆくと、







ここまでは、いずれも X = x + r と Y = y が成立していて、Plot X,Y によりカーソルが円の右端(外接垂直線と円の接点)に表示されています。もう一度 [EXE] を押すと、プログラムが終了します。
以上から、Circle x,y,r を実行すると、変数 X と Y には、X = x + r、Y = y となるように、自動的に値が代入されることが確認できました。
変数 X と Y に、自動的に値が代入されることが分かったので、X と Y 以外の変数はどうなっているのか、調べるために、先ず変数 A ~ Z を 0 で初期化し、次にCIRCLE3 を実行・終了させ、最後に変数 A ~ Z の値を確認します。
変数の初期化
[MENU] で MAIN MENU を表示して、

MEMORY を選んで [EXE] キーを押し、

[F1] (F1:Main Memory) を押し、ALPHA MEM にカーソルを合わせてから、

[F1] (SEL) で、ALPHA MEM の左端に▶ マークが付き、

[F6] (DEL) を押すと、ポップアップが現れ、

Delete All The
Selected Data?
Yes:[F1]
No :[F6]
と表示されるので、ここで [F1] を押してアルファベットメモリ、つまり変数 A ~ Z を初期化して、値を全て 0 にします。
[MENU] キーで MAIN MENU に戻ります。
CIRCLE3 の実行
プログラムモードへ移行して、CIRCLE3 を実行・終了させます。
各変数の確認
[MENU] キーで MAIN MENU に戻り、[1] を押すか、RUN・MAT アイコンを選び [EXE] を押すかして、電卓モードへ移行します。
![Menu[1]](https://blog-imgs-82-origin.fc2.com/e/g/a/egadget/Menu-1_convert_20150922025315.jpg)
[ALPHA] [X,θ,T] (A) [EXE] で、変数A の値を確認します。A = 10 になっているのは、プログラム CIRCLE3 の動作通りで正しい値です。同様に、変数 B、C の値を確認します。

アルファベット順に、全ての変数の値を確認してゆき、最後の X から Z は、以下のようになります。

結果として、変数 A、X、Y のみに値が代入されていることが分かります。 変数 A はプログラムで使ったので、For 文最後で代入される 10 になっているのは、正常です。それ以外は、X と Y のみの値が変更されているわけです。変数 R に半径の値が代入される可能性も考えられましたが、実際は R の値は更新されません。
円の中心座標は (10A, 5A)、半径は |2A| なので、A = 10 になっていることから中心座標 (x, y) = (100, 50)、半径 20 です。
従って変数 X と Y の値は、X = x + r = 120、Y = y = 50 に従って自動更新されていることが確認できました。
つまり、Circle x,y,r を実行すると、変数 X と Y のみに値が自動的に更新され、
X = x = r
Y = y
となることが確実です。
上のプログラムでは、Circle x,y,r の x, y, r は全て正の値なので、これらが負の時は、どうなるのかを調べてみるために、次のプログラムを実行してみます。CIRCLE3 とは座標系を変更し、変数 A の値を -5 から 5 まで For文で変更して、CIRCLE3 と全く同様に
PlotOn 10A,5A
Circle 10A,5A,2A
Plot X,Y
を実行します。Text コマンドでの各変数表示は、少し変更します。
ファイル名:CIRCLE4
ClrGraph
CoordOff
GridOff
AxesOn
LabelOff
ViewWindow -63,63,10,-31,31,10
For -5→A To 5
PlotOn 10A,5A
Circle 10A,5A,2A
Text 1,1,"(x,y,r)=( " (スペース2個)
Text 1,35,10A
Text 1,50,", " (スペース4個)
Text 1,55,5A
Text 1,70," " (スペース4個)
Text 1,75,2A
Text 1,90,") " (スペース4個)
Text 7,1,"X=x+r, Y=y"
Text 13,1,"X= " (スペース4個)
Text 13,30,"Y= " (スペース5個)
Text 13,10,X
Text 13,40,Y
Plot X,Y◢
Next
ダウンロード: CIRCLE4
これを起動すると、Plot X,Y◢ で実行が一旦停止し、[EXE] で解除し、それを繰り返すことで、位置と大きさの異なる円を次々に描画します。











以上から、Circle x,y,r で設定する半径 r が負の数でも、正の数に自動的に変換されて描画されることが分かります。
そして、X = x + r , Y = y が成立することも分かります。
そして、Circle 実行後の 変数 X と Y で決まる座標 (X, Y)、つまり Plot X,Y で表示されるカーソルの位置は、原点の左下に円がある時は、円の右端でなくて左端になっています。
X = x + r が成立していることは確認できているので、この計算の結果が反映されているだけのことですが、この式をよく見て考えると、r が負になっている時に、カーソルが円の左端に来ることが分かります。
x の値は円の中心の X 座標値です。
従って、r が正の時は、X = x + r によって、X は x よりも大きな値になるので、X から右へ 半径 r だけ進んだ位置、つまり円の右端になります。
一方、r が負の時は、X = x + r によって、X は x よりも小さな値になり、X から左へ(つまり負の方向へ) 半径 r だけ進んだ位置、つまり円の左端になります。
なんだかピンと来ないかも知れませんが、実際にプログラムを変更してみると、確認できます。CIRCLE4 の2カ所の 2A (= r) を Abs 2A ( = |r| )に変更して、r を常に正の値になるようにして、表示をみてみましょう。
ここで、Abs は絶対値を求める関数です。
Abs
書式: Abs x
- x の絶対値 ( |x| )を求める( | | は絶対値の数学的表現)。
ファイル名:CIRCLE5
ClrGraph
CoordOff
GridOff
AxesOn
LabelOff
ViewWindow -63,63,10,-31,31,10
For -5→A To 5
PlotOn 10A,5A
Circle 10A,5A,Abs 2A
Text 1,1,"(x,y,r)=( " (スペース2個)
Text 1,35,10A
Text 1,50,", " (スペース4個)
Text 1,55,5A
Text 1,70," " (スペース4個)
Text 1,75,Abs 2A
Text 1,90,") " (スペース4個)
Text 7,1,"X=x+r, Y=y"
Text 13,1,"X= " (スペース4個)
Text 13,30,"Y= " (スペース5個)
Text 13,10,X
Text 13,40,Y
Plot X,Y◢
Next
ダウンロード: CIRCLE5
変更した2カ所を赤文字で示しています。
これを実行してみると、以下のようになります。











この描画結果から、Circle x,y,r のパラメータ x, y, r は正でも負でも良く、r に負を指定しても正の値として半径が設定されます。
変数 X と Y のみが、X = x + r、Y = y で算出される値が、自動更新されます。
その結果として、r が正の場合は、Plot X,Y は、円の右端にカーソル表示し、r が負の場合は左端にカーソル表示します(X = x + r が正しい証拠となります)。
今回明かになった、Circle コマンドの仕様は以下の通りです;
Circle コマンド
書式: Circle x,y,r
- x, y, r は任意の実数。
- デフォルトの論理座標系あるいはViewWindow座標系で使う。
- 座標 (x, y) を中心とし、半径 |r| の円を描画する。
- 描画実行後、変数 X と Y には、X = x + r、Y = y の値が自動的に代入される。
今回のまとめ
- Cirrcle x,t,r は、デフォルトの論理座標系或いはViewWindow座標系において、座標 (x, y) を中心とし、半径 |r| の円を描画する。ここで、x, y, r は任意の実数。
- Circle x,y,r を実行すると、変数 X と Y は、X = x + r、Y = y となる値が自動的に代入される。
今回使ったグラフィックス コマンド
- ClrGraph
- CoordOff
- GridOff
- AxesOn
- LabelOff
- ViewWindow
- Circle
- PlotOn
- Text
- Plot
- Text
- Abs
つづく...
⇒ Casio Basic入門 G11 / 目次
応援クリックをお願いします。励みになるので...