Casio Basic入門G10

Casio Basic入門
<目次>

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

2015/09/22

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

前回: 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 について、詳細動作を調べます。


Circle コマンド

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

Circle <中心のX座表値>,<中心のY座標値>,<半径Rの値>

説明はこれだけです。


では、実際に円の描画を行ってみます。

まず、座標軸とスケール(座標の目盛)を設定し、円の中心に点をプロット後、円を描画します。
座標軸は、
  • 左端: -63
  • 右端: 63
  • X軸目盛: 10
  • 下端: -31
  • 上端: 31
  • Y軸目盛: 1
を設定し、円は、中心座標(-10, 20)、半径 30 とします。

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


これを実行すると、以下のようになります。

Circle1 

座標(-10, 20)に点がプロットされ、この点を中心として半径 30 の円が描画されていることが確認できます。

ところで、PlotOn は、点が描画されると、その点の座標値が (A, B) とすると、変数 X に A が、変数 Y に B が自動的に代入される仕様です。
楽屋裏 - 酔っ払いの虫

そこで、Circle でも同様な詳細動作があるかどうかを調べるために、変数 XY の値を確認するプログラムを 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

円を描画する前に、変数 XY をそれぞれ 0 で初期化した上で、円の中心座標 (-10, 20)PlotOn で点を描画し、XY の値を Text コマンドで表示し、 命令でプログラムの実行を一旦停止しています。

Circle2-1 

座標 (-10, 20) に点が描画され、左上に x 座標値とy 座標値が表示されています。PlotOn で座標 (-10, 20) に点が描画されると、描画点の x 座表値と y 座標値がそれぞれ変数 XY に自動的に代入される仕様が、ここでも確認できます。

[EXE] キーで一旦停止を解除して続く処理を実行させると、左上の -1020 をスペースで上書きして表示を消去した上で、Circle -10,20,30 を実行し、再び 変数 XY の値を Text コマンドで表示します。最後に、Plot X,Y で、座標 (X, Y) に十字カーソルを表示します。

Circle2-2 

この結果から、変数 X には 20 、変数 Y には 20 が代入されていて、カーソルが円の右端に表示されています。
この結果から、Circle x,y,r が実行されると、変数 XY には、以下の値が自動的に代入されていると推測できます。
  • X = x + r
  • Y = y
変数 XY への自動代入の仕様を確認するために、変数 A を 1 から 10 まで変化させながら Circle 10A,5A,2A を実行して、円の座標と半径を次々に変化させて描画し、その時の中心座標の座標値 x (=10A) と y (=5A)、そして半径 r (=2A) の値を表示し、さらに x + r の値を表示させるような以下のプログラムを作ります。このプログラムでは、円描画の後に変数 XY を使って Plot X,Y で十字カーソルを表示させ、XY の値の表示も行います。


ファイル名: 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 に注目してください。rx の値を表示した上で、x + r の値として 変数 X の値を表示しています。
もし、X = x + r が正しいなら、表示された xr の値の和が、x + r の値として正しく表示されることが確認できます。

CIRCLE3 を実行すると、

Circle3-1 

左上に、r=2, X=10, y=5 と表示されます。そして、x+r= 12 となっていますが、この 12 は変数 X の値を表示しています。つまり、X = x + r および Y = y が成立しています。右下には、変数 XY の値が、それぞれ X= 12, Y=5 と表示され、十字カーソルが座標 (12, 5) に表示されています。

この画面は、Plot X,Y◢ で実行が一旦停止した状態なので、[EXE] キーで一旦停止を解除すると、

Circle3-2 

左上に、
r=4
x=20
y=10
x+r=24


右下に、
Plot X,Y
X= 24   Y= 10


と表示され、十字カーソルが (24, 10) に有ることが確認できます。

ここでも、X = x + r と Y = y が成立しています。

さらに、[EXE] でプログラムを進めると、

Circle3-3 

左上に、
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] を押してゆくと、

Circle3-4 

Circle3-5 

Circle3-6 

Circle3-7 

Circle3-8 

Circle3-9 

Circle3-10 

ここまでは、いずれも X = x + rY = y が成立していて、Plot X,Y によりカーソルが円の右端(外接垂直線と円の接点)に表示されています。もう一度 [EXE] を押すと、プログラムが終了します。

以上から、Circle x,y,r を実行すると、変数 XY には、X = x + rY = y となるように、自動的に値が代入されることが確認できました。



変数 XY に、自動的に値が代入されることが分かったので、XY 以外の変数はどうなっているのか、調べるために、先ず変数 AZ を 0 で初期化し、次にCIRCLE3 を実行・終了させ、最後に変数 AZ の値を確認します。


変数の初期化

[MENU]
MAIN MENU を表示して、

MENU 

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

Memory 

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

Mainmemory_AlphaMem 

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

MainMemorySelected

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

MainMemoryPopup 

Delete All The
  Selected Data?
  Yes:[F1]
  No :[F6]


と表示されるので、ここで [F1] を押してアルファベットメモリ、つまり変数 AZ を初期化して、値を全て 0 にします。

[MENU] キーで MAIN MENU に戻ります。


CIRCLE3 の実行

プログラムモードへ移行して、CIRCLE3 を実行・終了させます。


各変数の確認

[MENU] キーで MAIN MENU に戻り、[1] を押すか、RUN・MAT アイコンを選び [EXE] を押すかして、電卓モードへ移行します。

Menu[1] 

[ALPHA] [X,θ,T] (A) [EXE] で、変数A の値を確認します。A = 10 になっているのは、プログラム CIRCLE3 の動作通りで正しい値です。同様に、変数 BC の値を確認します。

Check_A-C 

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

Check_X-Z 

結果として、変数 AXY のみに値が代入されていることが分かります。 変数 A はプログラムで使ったので、For 文最後で代入される 10 になっているのは、正常です。それ以外は、XY のみの値が変更されているわけです。変数 R に半径の値が代入される可能性も考えられましたが、実際は R の値は更新されません。

円の中心座標は (10A, 5A)、半径は |2A| なので、A = 10 になっていることから中心座標 (x, y) = (100, 50)、半径 20 です。
従って変数 XY の値は、X = x + r = 120Y = y = 50 に従って自動更新されていることが確認できました。

つまり、Circle x,y,r  を実行すると、変数 XY のみに値が自動的に更新され、

X = x = r
Y = y 


となることが確実です。



上のプログラムでは、Circle x,y,rx, 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)=( "  (スペース個)
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=   "    (スペース個)
Text 13,10,X
Text 13,40,Y
Plot X,Y◢
Next


ダウンロード: CIRCLE4


これを起動すると、Plot X,Y◢ で実行が一旦停止し、[EXE] で解除し、それを繰り返すことで、位置と大きさの異なる円を次々に描画します。

Circle4-1 

Circle4-2 

Circle4-3 

Circle4-4 

Circle4-5 

Circle4-6 

Circle4-7 

Circle4-8 

Circle4-9 

Circle4-10 

Circle4-11 

以上から、Circle x,y,r で設定する半径 r が負の数でも、正の数に自動的に変換されて描画されることが分かります。

そして、X = x + r , Y = y が成立することも分かります。

そして、Circle 実行後の 変数 XY で決まる座標 (X, Y)、つまり Plot X,Y で表示されるカーソルの位置は、原点の左下に円がある時は、円の右端でなくて左端になっています。

X = x + r が成立していることは確認できているので、この計算の結果が反映されているだけのことですが、この式をよく見て考えると、r が負になっている時に、カーソルが円の左端に来ることが分かります。

x の値は円の中心の X 座標値です。
従って、r が正の時は、X = x + r によって、Xx よりも大きな値になるので、X から右へ 半径 r だけ進んだ位置、つまり円の右端になります。

一方、r が負の時は、X = x + r によって、Xx よりも小さな値になり、X から左へ(つまり負の方向へ) 半径 r だけ進んだ位置、つまり円の左端になります。



なんだかピンと来ないかも知れませんが、実際にプログラムを変更してみると、確認できます。CIRCLE4 の2カ所の 2A (= r) を Abs 2A ( = |r| )に変更して、r を常に正の値になるようにして、表示をみてみましょう。

ここで、Abs は絶対値を求める関数です。

Abs

書式Abs x
  • x の絶対値 ( |x| )を求める( | | は絶対値の数学的表現)。
入力方法[OPTN] [F6] (▷) [F4] (NUM) [F1] (Abs)



ファイル名: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)=( "  (スペース個)
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=   "    (スペース個)
Text 13,10,X
Text 13,40,Y
Plot X,Y◢
Next


ダウンロード: CIRCLE5

変更した2カ所を赤文字で示しています。

これを実行してみると、以下のようになります。

Circle5-1 

Circle5-2 

Circle5-3 

Circle5-4 

Circle5-5 

Circle5-6 

Circle5-7 

Circle5-8 

Circle5-9 

Circle5-10 

Circle5-11 

この描画結果から、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| の円を描画する。
  • 描画実行後、変数 XY には、X = x + rY = y の値が自動的に代入される。
入力方法[SHIFT] [F4] (Sketch) [F6] (▷) [F3] (Crcl)






今回のまとめ
  • Cirrcle x,t,r は、デフォルトの論理座標系或いはViewWindow座標系において、座標 (x, y) を中心とし、半径 |r| の円を描画する。ここで、x, y, r は任意の実数。
  • Circle x,y,r を実行すると、変数 XY は、X = x + rY = y となる値が自動的に代入される。


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

  • ClrGraph
  • CoordOff
  • GridOff
  • AxesOn
  • LabelOff
  • ViewWindow
  • Circle
  • PlotOn
  • Text
  • Plot
  • Text
  • Abs




つづく...

Casio Basic入門 G11 / 目次



応援クリックをお願いします。励みになるので...
にほんブログ村 IT技術ブログ 開発言語へ


 




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

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


関連記事

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

コメントの投稿

非公開コメント

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

やす (Krtyski)

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


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

プログラム電卓を実際に使って気づいたこと、自作プログラム、電卓での Casio Basic, C.Basic そして Casio Python プログラミングについて書いています。

なお管理人はカシオ計算機の関係者ではありません。いつでもどこでもプログラミングができるプログラム電卓が好きな1ユーザーです。


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

リンク
月別アーカイブ
Sitemap

全ての記事を表示する

ブロとも申請フォーム

この人とブロともになる

QRコード
QR