Skip to main content

点・線

Pointdata3d(name, point_list, options)

点の3Dデータと2Dデータを作成し, 画面とTeX\TeXに出力する.

説明

optionsPointdata()と同様.

【例】

Pointdata3d("1", [[1, 1, 1], [0 ,1, 0]], ["Size=2", "Color=red"]);

Putpoint3d(list, option)

空間に幾何点を作図する.

説明

点の名称と座標を与えて点を作図する. 複数の点を一度に作図できる.

optionfix(初期設定)またはfree. リスト["free"]にしてもよい. fixでは, 固定点とする. 同じ名称の点が既に存在する場合は, 指定した位置に移動して固定点とする. freeでは, 自由点とする. 同じ名称の点が既に存在する場合は何もしない.

【例】いくつか記述例を示す.

Putpoint3d(["A",[2,1,3]]);
Putpoint3d(["A",[1,1,1],"C",[1,0,1]],"fix");
Putpoint3d(["A",[2,1,3]],"free");

なおこの関数は幾何点を作るものであり, TeX\TeXには出力されない. TeX\TeXに点を出力するにはPointdata() を併用する.

空間における店の座標は, 店名に3dを付加した名前の変数に代入される. 例えば点A\mathrm{A}の座標はA3dである. これにより, 点の座標を取得できる.

Putaxes3d([x, y, z])

軸上に幾何点を作る.

説明

引数のリスト[x, y, z]に対し, 点X(x,0,0)\mathrm{X}(x, 0, 0), Y(0,y,0)\mathrm{Y}(0, y, 0), Z(0,0,z)\mathrm{Z}(0, 0, z) 及び原点O\mathrm{O}を主画面上にとり, 副画面上に対応する点Xz\mathrm{Xz}, Yz\mathrm{Yz}, Zz\mathrm{Zz}, Oz\mathrm{Oz}を作る. 既に同じ名称の点がある場合, 指定された位置に移動する.

引数は実数にすることもでき, Putaxes3d(a), Putaxes3d([a, a, a])と同じになる.

【例】原点とx(5,0,0)x(5, 0, 0), y(0,5,0)y(0, 5, 0), z(0,0,5)z(0, 0, 5)を作る.

Putaxes3d(5);

原点とx(1,0,0)x(1, 0, 0), y(0,2,0)y(0, 2, 0), z(0,0,3)z(0, 0, 3)を作る.

Putaxes3d([1, 2, 3]);

Putoncurve3d(point_name, PD)

空間曲線上に点をとる.

説明

プロットデータPDの曲線上に点名の点をとる. 取った点を固定点ではなく, 曲線上にインシデントとなる. 従って, ドラッグして曲線上を動かすことができる.

例はPartcrv3d() を参照.

Putonseg3d(point_name, point1, point2)

線分上に点を作る.

説明

point1point2の中点に指定された名前の点をとる. point1point2が線分として結ばれていなくてもよい. とった点は線分にインシデントとなる(線分が描かれていなくても). point1point2はリストにすることもできる. 指定した点が既に存在する場合は動かさない.

point1, point2は幾何点の名称または座標が指定する.

【例】A(1,1,0)\mathrm{A}(1, -1, 0)B(0,2,2)\mathrm{B}(0, 2, 2)の中点に点C\mathrm{C}をとる. 次のいずれでもよい.

Putonseg3d("C", A, B);
Putonseg3d("C", [A, B]);
Putonseg3d("C", [[1, -1, 0], [0, 2, 2]]);

Spaceline(name, list)

折れ線を描く.

説明

点の名称または座標のリストを与えて折れ線を描く. 平面でのListplot() にあたる. optionsdr, da, doで線種を指定する.

点の名前が必要であれば以下のようにして名前リストを作ることができる.

pname=apply(1..6, "P"+text(#));

【例】指定された2点を結んだ線分を描く.

Spaceline("1", [[2, 5, 1], [4, 2, 3]]);

作図されている2点A,B,C\mathrm{A, B, C}を結んだ三角形を描く.

Spaceline("2", [A, B, C, A]); 

接点を表示する場合はPointdata3d()で描画する.

Spacecurve(name, formula, range, options)

空間曲線を描く.

説明

媒介変数で表された曲線を描く. optionは解像度Num.

【例】螺旋を描く.

Bezier3d(name, list_1, list_2)

空間ベジェ曲線を描く.

説明

引数はlist_1が端点リスト, list_2が制御点リスト. 1組の端点につき2つの制御点を使う.

【例】いくつかの点をベジェ曲線で結ぶ.

端点A,B\mathrm{A, B}に対し制御点をD,E\mathrm{D, E}とする.

Bezier3d("1", ["A", "B"], ["D", "E"]);

端点A,B\mathrm{A, B}に対し制御点をD,E\mathrm{D, E}とし, 端点B,C\mathrm{B, C}に対し制御点をE,F\mathrm{E, F}とする.

Bezier3d("1", ["A", "B", "C"], ["D", "E", "E", "F"]);

端点A,B\mathrm{A, B}に対し制御点をD,E\mathrm{D, E}とし, 端点B,C\mathrm{B, C}に対し制御点をF,G\mathrm{F, G}とする.

note

保留

Mkbezierptcrv3d(point_list)

制御点を自動的にとる空間ベジェ曲線.

説明

リストで与えた点に対し, 制御点を自動的に生成してベジェ曲線を描く. 制御点は2つの点に対して, その点を端点とする線分上に2つ作られる. これを移動して任意の曲線にすることができる.

【例】線分AB\mathrm{AB}上に2点a1p, a1q, 線分BC\mathrm{BC}上に2点a2p, a2q, 線分CD\mathrm{CD}上に2点a3p, a3qができる.

Mkbezierptcrv3d(["A","B","C","D"]);
note

保留

Skeletonparadata(name, list_PD, list_PD, option)

陰線処理を行う.

説明

描画されている線と軸について陰線処理を行う. 第2引数の線が第3引数の線によって隠される部分を消去する. それらを省略した場合は全ての線について互いの陰線処理を行う. optionは消去する部分の長さを指定できる.

他のオプションとして

  • No=point_list: 点リストの点が選ばれているときは実行しない.
  • File=y/m/n(n): データファイルを作るか.
  • Check=point_list: 点リストの点が変更されていたらファイルを作り直す.

【例】螺旋と線分, 座標軸の陰線処理. 次のように螺旋と線分座標軸を描いておく.

Xyzax3data("", "x=[-5, 5]", "y=[-5, 4]", "z=[-5, 3]");
Putpoint3d(["A", [0, -2, -2]]);
Putpoint3d(["B", [-1, 1, 3]]);
Spaceline([A, B]);
Spacecurve("1", "[2*cos(t), 2*sin(t), 0.2*t]", "t=[0, 4*pi]", ["Num=100"]);
note

保留

座標軸のプロットデータはax3d, 線分はAB3d, 螺旋はsc3d1である. これに対し, 描画されている線と軸について陰線処理を行うには以下のようにする.

Skeletonparadata("1");

重なった部分の消去する長さを2にするには

Skeletonparadata("1", [2]);

螺旋によって隠れる部分だけを消去するには,

Skeletonparadata("1", ["AB3d", "ax3d"], ["sc3d1"]);

この他にも以下のようなことも可能.

Skeletonparadata("1", ["AB3d", "ax3d"], ["sc3d1"], [2]);
Skeletonparadata("1", ["AB3d"], ["ax3d", "sc3d1"]);