Accessing Geometric ElementsJ幾何学要素へのアクセスCindyScript とシンデレラの幾何学部分の間のコミュニケーションは、作成物の幾何学的な対象にアクセスすることによってなされます。幾何学要素へのアクセスには2つの異なる方法があります。ひとつは、要素のラベル名で、もう一つは CindyScript の特殊演算子によってです。基本的に、シンデレラの幾何学要素のパラメータはすべて CindyScript で読むことができますし、大部分のパラメータは CindyScript で設定することができます。以下では、まず、幾何学要素へのアクセスのしかたを述べ、その後パラメータの詳細なリストを示します。 要素にその名前でアクセスするすべての幾何学要素には個々の名前(ラベル)があります。この名前はCindyScriptへの「ハンドル」として取り扱うことができます。CindyScript において、要素はあらかじめ定義され他変数の役割を演じます。それぞれのパラメータは . (ドット)演算子によって読み書きできます。例えば、次のコードでは、点 Aの大きさを20に設定します。 A.size=20 もし、点や線がドット演算子ではなく算術演算子に含まれるときは、自動的にその位置を表すベクトルに変換されます。 したがって、点は2次元座標で表される [x,y] ベクトルに変換されます。直線は、同様に同次座標で表される [x,y,z] ベクトルに変換されます。しかし、座標を設定する場合は、ドット演算子を用いて明示的に設定されなければなりません。幾何学要素へのハンドルが算術演算子で使われないのであれば、依然として幾何学的要素として扱われます。この概念が微妙なので、少し例を挙げてはっきりさせましょう。A と B , C がシンデレラの点であると仮定します。 A.xy=(B+C)/2 は、 A を線分 BCの中点に設定します。この2点は算術演算子に含まれますので、すぐに [x,y] ベクトルとし処理されます。しかし、点 A の位置は .xy パラメータによって明示的に設定されなければなりません。次のプログラムでは3つの点の色をすべて緑色にします。 pts=[A,B,C]; forall(pts,p, p.color=[0,1,0]; ) このコードでは、点の名前はリスト pts へのハンドルとしてそのまま扱われます。 forall 演算子で走査されたハンドルは一度 p 変数に代入され、そこから色のパラメータにアクセスされます。要素のリストときには、それぞれの名前によって個々にアクセスする必要がないこともあります。特に、図面の全体に対して操作をしたい場合です。たとえば、点集合の凸包を計算する時などです。そのために、CindyScript は要素のリストを返すいくつかの演算子を用意しています。たとえば、 allpoints() 演算子はすべての点の リストを返します。例でこれを示しましょう。次のスクリプトは、位置を y軸 と比較して、点の色を変えます。pts=allpoints(); forall(pts,p, if(p.x<0, p.color=[1,1,0], p.color=[0,1,0]; ) ) 次の図は、ばらばらに置いた点にこのスクリプトを適用した結果を示します。 点のリストを処理する 幾何学要素のパラメータCindyScript でアクセスできるすべてのパラメータについて解説します。このリストは将来のシンデレラのリリース時に拡張されるかもしれません。各パラメータにおいて、読み出しのみか、読み書き可能かに関わらず、型と使用目的についての簡単な説明をします。パラメータの型は次の通りです。
パラメータの書き込みは、時には自由要素に限られることがあります。該当する項で "free" の語を使ってそれを表します すべての幾何学要素についてのパラメータ
それぞれの幾何学要素は個別の識別名を持ちます。識別名は .name パラメータによってアクセスできます。たとえば、 A.name は文字列 "A" を返します。その名前は、画面上に表示される ラベル(caption) とは異なる場合があります。ラベルが設定されていなければ A.caption は空の文字列です。また、ラベルはインスペクタで変更することができます。点のパラメータ
直線のパラメータ
円と円錐曲線(2次曲線)
テキストのパラメータ
アニメーションのパラメータ
変換のパラメータ
)) CindyLab((オブジェクトのパラメータCindyScript でアクセスできる幾何学要素以外のものとして、CindyLab のシミュレーション・パラメータがあり、 CindyScript によって読み書きができます。 すべての CindyLab 要素のパラメータ
質点のパラメータ
質点間に力を定義したい場合があります。そのときは Integeration Tick スロットにコードを書きます。質点の位置が内部的に通常の幾何学要素と異なるタイムスケールで動くときは pos , posx および posy によってその位置にアクセスする必要があります。バネとクーロン力のパラメータ
速度のパラメータ
重力のパラメータ
恒星のパラメータ
電磁場のパラメータ
床と反射壁のパラメータ
環境のパラメータ環境は内蔵演算子の simulation() によってアクセスできます。次の項目がアクセスできます。
インスペクタCindyScript の inspect( 関数を使えば、 インスペクタ で利用できるすべての属性にアクセスできます。たとえば、すでに描かれている点Aがあるとき、inspect(A) とすれば、 [name,definition,color,visibility,drawtrace,tracelength, traceskip,tracedim,render,isvisible,text.fontfamily, pinning,incidences,labeled,textsize,textbold,textitalics, ptsize,pointborder,printname,point.image, point.image.rotation,freept.pos] という文字列が返されます。 2つのパラメータを使う形式の inspect( を使えば、上のリストにあるもののどれかを読み出せます。たとえば、inspect(A,"text.fontfamily") とすれば SansSerif が返ってきます。 3つのパラメータを使う形式の inspect( を使えば、読み出しのみの属性(たとえば、要素の定義など)を除いて、その値を設定することができます。次の例は、Aのフォント Serif に設定します。inspect(A,"text.fontfamily","Serif") inspect 命令は非常に強力で、インスペクタでマウスを使ってやらなければならないようなことを自動化することができます。また、すぺてのパラメータのきめ細かいコントロールが可能になります。 ユーザー属性の設定:
|