第8回 関数のグラフ CindyScriptを使う

いよいよCindyScriptを使った関数のグラフの描画です。

CindyScriptとは、Cinderella.2のためのプログラム言語です。書き方はMathematicaと似ているところがあります。CindyScriptを使うには、まず、スクリプトエディタの画面を開く必要があります。

メニューの「スクリプト」からCindyScriptを選びます。するとスクリプトエディタが開きます。

左側にフォルダのアイコンで並んでいるのを「スロット」といいます。プログラムの機能によって振り分けます。たとえば、プログラムの実行時に1度だけ実行すればよいものは Initializationに、内部時計を使うものはTimer Tickに、という具合です。主に使うのは一番上のDrawです。

Drawのフォルダアイコンをクリックして開きましょう。右側の広いところがメインウィンドウ。ここにスクリプト、つまりプログラムを書いていきます。

最初は、「クリックしてスクリプトを書き始めてください」と表示されているので、これをクリックしましょう。すると表示が消えて、カーソルが点滅します。

さっそく関数のグラフを表示します。まずは2次関数。

関数のグラフを表示するためには、CindyScriptの組み込み関数(あらかじめ用意されている関数)plot()を使います。plot()の括弧の中に式を書きます。書けたならば、実行ボタンを押します。実行ボタンは、歯車の形のアイコンです。

(図はMacintoshの画面ですが、Windowsでも同じようなものです)

放物線が描かれましたか。

画面下のツールから「座標軸を描く」と「グリッドを描く」をクリックして座標軸と方眼を表示しておくとよいでしょう。

三角関数などを描く場合は、第6回でやったのと同じようにします。plot(sin(x)) とすれば y=sinx のグラフが描かれます。

ここで、いろいろやってみる前に、ひとつ注意をしておきましょう。

CindyScriptでは、計算をするときに「実行変数」という内部変数を使うことができます。そうすると、変数xを別の用途に使えるからです。実行変数は#で表します。そこで、通常は plot(sin(x)) と書かずに、plot(sin(#))  と書くのです。先ほどのようにxでもいいのですが、おすすめは#です。よく意味がわからないと思いますが、今はそんなものだと思ってください。

では、三角関数や対数関数のグラフを描いてみましょう

plot(sin(#))   plot(cos(#)) plot(tan(#)) plot(log(#)) 

どうですか? 簡単ですね。

関数を定義して使う

今度は、関数を定義して、それを使います。今後は、これが普通のやり方になります。

関数の定義は f(x):=式 という形で行ないます。等号にコロンがついています。

数学で f(x)=2x^2-3x-1 と書き表す2次関数は、 f(x):=2*x^2-3*x-1 と書いて定義します。この書き方はMathematicaの場合とよく似ています。 (Mathematicaでは f(x_):=2*x^2-3*x-1 とします。アンダーバーのところだけが違います)

関数を定義したら、plot() の括弧の中でそれが使えます。

ここでもう一つ注意。

CindyScriptでは、1つの仕事を指定したら、区切り記号にセミコロンを必ず書きます。(Mathematicaもセミコロンを書くことがあります)それから、次の行(仕事)を書きます。

これだけでは、シンデレラの関数ツールを使うのと変わりませんね。では、CindyScriptならではのことをやってみましょう。

・線の色を変えるために、color->[r,g,b] というオプションをつけます。[r,g,b]は色指定。それぞれ0から1までの間の数で、赤、緑、青の順です。この3色が光の3原色であることはご存知ですね。color->[1,0,0]とすれば赤でグラフが描かれます。

・線の太さは、size->n というオプションです。nが太さ。点n個分の太さです。

・定義域を指定するには、start->r , stop->r というオプションを使います。rは実数。

  オプションについて、詳しくはユーザーズガイド(Cinderella.2の実行中なら、ヘルプメニューから)の「CindyScript」「関数プロット」を読んでください。

次の例は、原点中心、半径4の円をシンデレラの「半径つき円を加える」ツールで描いて、インスペクタで線の色を緑にしておき、CindyScriptで放物線と直線を色を変えて表示したものです。(色は指定しなければ青です) 直線は定義域を-5≦x≦5として描いています。

スクリプトを見るとわかると思いますが、途中で改行しても構いません。一つの仕事の区切りとして、セミコロン ; をきちんと書けば、途中は適当に改行してもいいのです。むしろ、オプションなどは改行して縦並びにすると読みやすくなります。

【練習問題】

第6回で描いた関数を定義して、色や太さ、定義域を変えて表示してみましょう。