関数 Moviedata(str1,str2,options) 機能 アニメーションデータを作る
説明 str1 はアニメーションを定義する関数名を文字列とする。str2 は定義域。
optionsは,Cut とDiv
Cut : 1秒のフレーム数。初期値は20。 Div : 全体のフレーム数。初期値は80。
したがって,初期値では4秒間のアニメーションとなる。
【例】定円上を動く点Pと,定点Aを結ぶ線分の中点をQとして動きを見る。
まず,定円を,原点中心、半径2として描いておく。
アニメーションを定義する関数は,時間を t とすれば,時刻 t における図(動くもの だけ)を定義する。時刻は単なる媒介変数であるので,t でなく s などでもよい。
Mf(t):=(
pt=2*[cos(t),sin(t)];
Listplot("2",[[4,0],pt]);
Pointdata("2",mid(pt,[4,0]));
Letter([[4,0],"s","A",pt,"en","P",mid(pt,[4,0]),"ne","Q"]);
);
ここで,Mf(t) の中で使っているユーザー定義関数mid() は,端点を引数として線分
の中点を返すもので,
mid(p1,p2):=(p1+p2)/2;
として定義しておく。
また,点の大きさを適宜設定しておく。
以上の準備の後,
Moviedata("Mf(t)","t=[0,2*pi]");
を実行する。
ここでは,角度を媒介変数としているので,時間のt でなくs として Moviedata("Mf(s)","s=[0,2*pi]");
としてもよい。
次のようにオプションを指定すると,5秒間のアニメーションとなる。
Moviedata("Mf(s)","s=[0,2*pi]",["Div=50","Cut=10"]);
["Div=150","Cut=30"]とすると,やはり5秒間のアニメーションとなるが,1秒間 のフレーム数が多いためなめらかな動きとなる。ビデオのフレームレートである。た
だし,ファイルサイズは約3倍となる。
Cinderellaの画面は次のようになる。
TexMvボタン または TexParaボタンを押すと画面上でもアニメーションが実行され
る。その後 Exekc ボタンを押すとファイルが作成される。
この図では,点が明示されるのは Q だけである。A,Pとも点を明示する場合のスクリ プトの全体を示しておく。
Fhead="mid";
Texparent="";
Ketinit();
Ketinitmv();
mid(p1,p2):=(p1+p2)/2;
Circledata("1",[[0,0],[2,0]]);
Ptsize(4);
Pointdata("1",[4,0]);
Mf(t):=(
pt=2*[cos(t),sin(t)];
Listplot("2",[[4,0],pt]);
Pointdata("2",pt);
Pointdata("3",mid(pt,[4,0]));
Letter([[4,0],"s","A",pt,"en","P",mid(pt,[4,0]),"ne","Q"]);
);
Moviedata("Mf(s)","s=[0,2*pi]",["Div=30","Cut=10"]);
Mvdispg();
⇒関数一覧
関数 Setpara(str)
機能 parapa のタイトルを指定する
説明 パラパラ動画のタイトルを str にする。デフォルトは Fhead。 ”” にした場合はタイトルを表示しない。
6 KETCindy3D
6.1 概要
KETCindy3Dの画面は次のように構成される。
Cinderellaの描画面に,白の矩形で囲んだ領域が2つできる。NE,SWを対角とする左側
の領域を主画面,右側の領域を副画面という。
主画面は平面の場合と同様,TeXに出力される範囲を示し,NE,SWの2点をドラッグす ることにより変更できる。
副画面は,Start3d()関数により作成される。座標軸は,Xyzax3data() 関数によって描く ことができる。主画面の下方のスライダで視点が移動でき,主画面上では軸が回転する。副 画面は,xy平面上に視点を置いたものと考えればよい。
主画面上にCinderellaの作図ツールで点や線分を作図すると,Start3d() 関数により副画 面に対応する点が作図される。主画面上の点をドラッグするとx,y座標を変更でき,副画面 上の点をドラッグするとz座標を変更できる。空間内の点は,Putpoint3d()関数によって座 標を指定して作成することもできる。次のような図はCinderellaの作図ツールだけでも作る ことができるし,Putpoint3d()関数を用いても作ることができる。
主画面と副画面の対応する点をドラッグすることにより,インタラクティブに図形を描く ことができるが、実際には描画関数を用いて図形を描き,スライダで視点を変えて見やすい 図をTeXに出力することになるだろう。
KeTCindy3Dでは,点・直線・曲線・面の描画を描画関数を用いて行うことができる。線
や面については陰線処理を行い,立体的な図を作成することができる。しかし,陰線処理は 処理にかなりの時間がかかるので,CindyscriptではなくScilabで行っているが,それでも 相当時間がかかることを覚悟しなければならない。Scilabでの計算は,バッチファイル/シェ ルファイルで行っているが,Cindyscript ではその計算結果が出るのを待つため一時的に反 応がなくなる。したがって,反応がなくなってもハングアップではないので,Cinderellaを 強制終了しないように。
一例を示すと,球面をメッシュ入りで座標軸とともに陰線処理して描いた場合,次のよう な図が画面に表示されるまでの時間は,MacBookPro13’ (Late 2013) Core i7 2.8GHz 8GB (OSX 10.11.6) の場合で約124秒であった。スクリプトは Wireparadata() の例を参 照されたい。
x
y z