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]"]);