B 基本的な描画
SpaceCindyでは,すべての描画を関数で行います。といっても,Cinderellaの作図ツールがまったく使えないわけではありません。点を作図ツールでとっておいて,それを空間の点とすることができます。しかし,その点を空間内でインタラクティブに移動することはできません。点の位置はスクリプトで決めることしかできません。
この点,GeoGebraの3Dや,Cabri3Dとは異なります。
この節では,基本的な描画関数の使い方を例示します。
オプションについて
描画関数では,必要に応じ,オプションで描画色や線の太さなどを指定します。オプションには,線種,点の
大きさ・線の太さ,描画色,透明度,回転指定,平行移動量,などがあります。詳しくは,それぞれの関数について,マニュアルで確かめてください。
オプションは,リストで与えます。たとえば,線の太さと色を指定する場合は
["size=2",Red]
のようにします。色は,RGBコードで指定することもできますが,多くの色が名前で用意されています。また,オプションの記述順序は問いません。[Red,"size=2"] と書くこともできます。
点を描く
点を描く方法は2つあります。
(1) 作図ツールで点をとって,座標を指定する
作図ツールで点Aを取ったとします。
A.xy=map3d([1,2,1]);
とすると,座標(1,2,1) に点Aを置くことができます。点の大きさや色はインスペクタで変更できます。
(2) 指定した座標に点を描画する
drawpt3d([1,2,1]);
とすると,座標(1,2,1) に点を描画します。
pt=[1,2,1];
drawpt3d(pt,[Green,"size=4"]);
とすると,座標(1,2,1) に点を大きさ4,緑で表示します。
基本の色は,Red,Green,Blue,Cyan,Magenta,Yellow,Black ですが,これ以外にもあります。
線を描く
直線は line3d(),線分は segment3d() で,ともに通る2点(segment3d()は端点)を指定します。矢じりをつけた矢線は arrow3d() で描きます。ベクトル表示に使えます。
line3d([1,0,0],[1,1,1]);
segment3d([1,-1,0],[1,0,1],[Red,"size->2"]);
arrow3d([0,-1,0],[0,0,1],[Green,"size->3"]);
Cinderellaの作図ツールで線分,直線を描き,作図に使った点(通る点,端点)を map3d() で空間に置くこともできます。矢線はインスペクタで矢じりをつけます。
折れ線を描くには join3d(座標リスト,option) を用います。引数は点のリストです。
join3d([[1,1,1],[1,3,2],[-2,-1,-2]]);
曲線は,plot3d() を用いて媒介変数表示の式で描きます。x,y,z それぞれ文字列にしてリストにし,媒介変数の範囲をリストで与えます。
plot3d(["cos(t)","sin(t)","t/12"],[0,6*pi]);
文字を表示する
画面上に文字を表示するには,letter3d()を用います。引数は,位置,方向,文字 をセットとしてコンマ区切りで並べ,全体をリストにします。方向は,画面の上下左右を東西南北に見立て,ewsnで表します。ewsnのあとに数字を書いて微小位置を調整することができます。
arrow3d([1,-1,0],[0,1,1],["size=2"]);
letter3d([[1,-1,0],"nw2","A",[0,1,1],"ne2","B"]);
円・多角形を描く
空間に円,多角形を描きます。
円 circle3d(中心,法線ベクトル,半径,option)
中を塗った円 disc3d(中心,法線ベクトル,半径,option)
弧 arc3d(中心,法線ベクトル,半径,範囲,option)
多角形 poly3d(座標リスト,option)
中を塗った多角形 plate3d(座標リスト,option)
circle3d([1,-1,0],[1,0,0],1);
disc3d([0,1,0],[1,0,0],1,[Green]);
poly3d([[1,-1,0],[1,0,0],[-1,-1,1]],1);
plate3d([[1,1,0],[1,2,0],[-1,1,1]],[Cyan]);
多面体・円錐を描く
円錐・円錐台 frustum(半径1,半径2,高さ,option) 半径1は上面,半径2は底面
色塗りした円錐・円錐台 fillfrustum(半径1,半径2,高さ,option) 半径1は上面,半径2は底面
角錐 pyramid(数,半径1,半径2,高さ,option) 数は底面の頂点数
色塗りした角錐 fillpyramid(数,半径1,半径2,高さ,option) 数は底面の頂点数
正多面体 rpolyhedron(面数,半径,opton) 半径は外接する球面の半径
色塗りした正多面体 rfillpolyhedron(面数,半径,opton) 半径は外接する球面の半径
これらは,底面の中心を原点とし,底面をxy平面上に置いて描かれます。位置を移動するには Trans オプションを使います。
frustum(0,1,2,["Trans=[0,-3/2,0]"]);
fillfrustum(0.5,1,2,["Trans=[0,3/2,0]",Red]);
pyramid(5,0,1,2,["Trans=[0,-3/2,0]"]);
fillpyramid(5,0.5,1,2,["Trans=[0,3/2,0]",Red]);
rpolyhedron(8,2,["Trans=[-3,-3,0]"]);
rfillpolyhedron(8,2,["Trans=[3,3,1]",[Cyan]]);
多面体を描く方法はこの他にも,小林・鈴木・三谷による多面体データを用いるなど,いくつかあります。
球面を描く
球面は drawsphere(中心,半径,option)で描きます。地球儀のように経緯線の入った球面が描かれます。簡単なシェーディング(陰つけ)をします。
draw sphere([0,0,1],1);
曲面を描く
曲面は媒介変数表示の式で描きます。式の与え方により次の3つがあります。optionなど詳しくはマニュアルを参照してください。
(1) z=f(x,y)
関数は,surface1(式リスト, 範囲,option)
(2) z=f(x,y) x=x(r,t) y=y(r,t)
関数は,surface2(式リスト, 範囲,option)
(3) x=x(u,v) y=y(u,v), z=z(u,v)
関数は,surface3(式リスト, 範囲,option)
または,surface4(式リスト, 範囲,option)
surface1("x^2-y^2",[[-1,1],[-1,1]],["Surface=0"]);
surface1("x^2-y^2",[[-1,1],[-1,1]],[Green,"Mesh=[6,4]","Surface=1","Alpha=[1,0.1]"]);
surface4(["cos(u)*cos(v)","sin(u)*cos(v)","2*sin(v)"],[[0,2*pi],[-pi/2,pi/2]],["Mesh=[40,40]"]);