B オブジェクトの入力

GeoGebraでは入力バーに式などを記述してオブジェクトを入力します。

CinderellaではこれらをCindyscriptで行います。

ここでは,その対比をします。以下ではCinderellaについての解説を,「GeoGebra日本」の該当ページに合わせて記述します。該当ページを開いて比較するとよいでしょう。

CinderellaでCindyscriptを使うには,「スクリプト」メニューから「Cindyscript」を選びます。別ウィンドウが開きますが,これをスクリプトエディタといいます。

左側に並んでいるのが「スロット」で,実行タイミングにより分類されています。通常は,一番上の「Draw」をクリックし,右側の編集ウィンドウでクリックしてスクリプトを書きます。

createpoint("A",[2,1]);

で点Aが座標(2,1)に作成されます。すでに点Aがある場合は(2,1)に移動します。

ベクトル

ベクトルは1次元のリストです。「リスト」はいくつかの要素をコンマで区切って,[]でくくったものです。

Cinderella(Cindyscript)では

a=[1,2];

b=[1,2,3];

c=[1,2,3,4];

のいずれもベクトルです。各行末にはセミコロンが必要です。

このうち,aは平面上のベクトルと見なせますが,画面上に作図されるわけではありません。

すなわち,「a」はプログラミングにおける変数名であって,要素名ではありません。

変数名には大文字を使うこともできます。

ベクトル間の計算(和・差・実数倍・内積)が計算できます。

A.xy=[2,3];

とすると,点Aを座標 (2,3) に移動します。点の座標はベクトルで表されているのです。

複素数

GeoGebraでもCinderellaでも,座標平面を複素数平面とみなして処理することができます。

虚数単位 i は,どちらでも予約定数(組み込み定数)です。この i は線分などのオブジェクト名としても使われます。線分をどんどん描いていくと,GeoGebraでは名前が i の線分ができます。Cinderellaでは,i,j を飛ばして,hの次は k になります。しかし,その場合でも,あらためて i を虚数単位とすることができます。その方法はGeoGebraとCinderellaでは異なっています。

GeoGebra 入力バー右の特殊記号メニューの i を使って,3+i と入力すると,点 3+i ができます。

Cinderella Cindyscriptで,i=complex([0,1]); と i を再定義します。

GeoGebraでは,点を複素数と同一視しています。たとえば,2点A,Bを作図しておき,入力バーに A+B と書くと複素数の和となる点Cがとられます。A/Bとすると複素数としてA/Bの点をとります。ところが,積A*B(またはスペースを空けてA B)では,複素数の和ではなく,ベクトルの和が計算されるだけなので注意が必要です。

このあたり,Cinderellaでは区別が明確です。点の識別名そのままでは,点の同時座標が得られます。識別名に .xy をつけるとxy座標になります。たとえば,A.xy で 点Aのxy座標が取得でき,A.xy=[3,2] とすると点Aを座標(3,2) に置きます。

直交座標と複素数の変換は,直交座標から複素数が complex(),その逆が gauss() です。たとえば,点Aの座標が(3,2)のとき,z=complex(A) または z=complex(A.xy) とするとzは 3+2i になります。逆に A.xy=gauss(3+2i) とすると,A の座標は (3,2) になります。

では,2つの点 A,B をとり,B をAの周りに 60°回転した点をCとして作図してみましょう。GeoGebraにはこのような回転ツールがありますが,ここでは計算でやってみます。

GeoGebra : C=A+(B-A)*(cos(pi/3)+i*sin(pi/3))

Cinderella : z1=complex(A);

z2=complex(B);

createpoint("C",gauss(z1+(z2-z1)*(cos(pi/3)+i*sin(pi/3))));

これで,点Cがとられ,A,B,Cは正三角形の頂点となります。

GeoGebraの方が簡単に見えますが,B-Aはベクトルの差のはずなので奇妙ですね。そのあとに複素数をかけているので,全体が複素数の演算になるのでしょう。この点,Cindyscriptの方が論理が明確です。

直線・円・2次曲線・関数のグラフ・媒介変数表示

GeoGebraでは,入力バーに数式を書くことにより,これらの直線・曲線を描くことができます。関数は陰関数でもよく,円は x^2+y^2=4 のようにして描けます。

媒介変数表示の曲線は,Curve[ x座標, y座標, 媒介変数, 媒介変数の最小値, 媒介変数の最大値 ]

の書式で記述します。

Cinderellaでは,Cindyscript の plot() 関数で描きます。ただし,陰関数では表示できません。媒介変数表示は,plot([x(t),y(t)]) の書式です。定義域を指定するなら,start->a,stop->b というオプションをつけます。

さて,これらの曲線に関して,GeoGebraとCinderellaでは大きな違いがあります。GeoGebraでは,これらの曲線がオブジェクトとして,幾何要素と同じように扱えるのに対し,Cinderellaではそうではありません。

たとえば,GeoGebraではこれらの曲線の上に点をとり,曲線上だけを動くようにすることができますが,Cindyscriptで描いた曲線ではそのようにはできません。また,曲線外から接線を引く場合も,GeoGebraでは作図ツールの接線で引けますが,Cinderellaでは引けません。

Cinderellaで同じことをするにはスクリプトを書く必要があり,ものによってはかなり面倒になります。

関数の値,数値

GeoGebraでは,入力バーに計算式を書いて計算したり,定義した関数の値を求めることができます。

CinderellaではCindyscriptで同様に計算が行え,結果は print() でコンソールに表示したり,draw text()で描画面に表示することができます。

真偽値とチェックボックス

GeoGebraでもCinderellaでも,真偽を true/false で表します。

GeoGebraでは,右から2番目のツールボックスにある「表示/非表示のチェックボックス」ツールを用いて,オブジェクトの表示/非表示を制御するチェックボックスを作ることができます。

Cinderellaで同様のことを行うには,ボタンを作ってスクリプトを書きます。ボタンは文字ツールで作り,インスペクタでボタン化してスクリプトを書きます。

なお,次の図で,変数 DispAはInitializatinスロットで DispA=true; と初期化しています。

GeoGebraでは,真偽値変数を数値演算で用いると 1/0として解釈されますが,Cindyscriptではそのようなことはありません。

リスト

リストは,数,文字,オブジェクトなどを集めたものです。リストを作るには

GeoGebra : コンマで区切って,ブレース(波形かっこ)でくくります。{1,2,3}

Cinderella : コンマで区切って,ブラケット(角かっこ)でくくります。[1,2,3]

リストの扱いは似ていますが,実はかなり違います。

数のリストは,Cinderellaでは数ベクトルとして扱われます。その違いは,演算にあらわれます。

リストの和,差 : 両者同じで,同じ位置にある要素どうしの和,差のリストです。

ベクトルの和,差と同じです.

リストの積,商 : GeoGebraでは同じ位置にある要素どうしの積、商のリストです。

Cinderellaでは積はベクトルの内積です。商は定義されません。

数値とリストの和・差・積・商 : GeoGebraではリストの各要素と数値の和・差・積・商のリスト。

Cinderellaでは,和・差・商は定義されません。積は各要素との積・商のリスト。

さらに詳しいことは,実例のD以降で示します。

行列

2重にネストした数のリストは行列として解釈されます。演算も行列と同じです。行列に対し,行列式や逆行列,転置行列を求める関数があるのも両者共通です。