「z軸のまわりに回転する線形変換」の編集履歴(バックアップ)一覧はこちら
z軸のまわりに回転する線形変換 - (2016/02/06 (土) 20:55:07) の1つ前との変更点
追加された行は緑色になります。
削除された行は赤色になります。
z軸のまわりに回転する図 16.02.06 rotation3
z軸のまわりに回転する図を描く.
&ref(rotation3.png,,title=完成図,width=400,)
&ref(rotation3.zip)
Start3d();
Ptseg3data();
Putaxes3d(5);
Xyzax3data("","x=[0,4]","y=[0,4]","z=[0,3]");
// 点Aを適当なところに打つ.以下,点Aの位置で円の高さと半径を決める.
Defvar("h",A3d.z);
Defvar("r",sqrt(A3d.x^2+A3d.y^2));
Defvar("r2",1);
// 右側副画面の Az の高さが点A の3次元空間内での高さであり,これを h とする.
// 点Aの3次元空間内での x 座標 A3d.x と y 座標 A3d.y を使って,
// z軸からの距離を計算し,これを r とする.
// 回転角を示すための弧の半径 r2 を決めておく.
Putpoint3d(["B",[0,0,h]],"fix");
// z 軸上の高さ h の点を B とする.
Spacecurve("1","[r*cos(t),r*sin(t),h]","t=[0,2*pi]",["notex"]);
// 高さ h のところの半径 r の円のデータを作る.
// 3次元データが "sc3d1",2次元データが "sc2d1" となる.
PutonCurve3d("C","sc3d1");
PutonCurve3d("D","sc3d1");
// 円上に点 C,D をとる.
Partcrv("1",C,D,"sc2d1",["do"]);
// 弧CD を点線で描く.
Spacecurve("2","[r*cos(t),r*sin(t),0]","t=[0,2*pi]",["notex"]);
// xy平面の半径 r の円のデータを作る.2次元データが "sc2d2" となる.
Putpoint3d(["E",[C3d.x,C3d.y,0]],"fix");
Putpoint3d(["F",[D3d.x,D3d.y,0]],"fix");
// C,D を xy 平面へ射影した点を E,F とする.
Setcolor([0,0,1]);
Spaceline("BC",[B3d,C3d]);
Spaceline("BD",[B3d,D3d]);
Spaceline("OE",[O3d,E3d],["do"]);
Spaceline("OF",[O3d,F3d],["do"]);
Spaceline("CE",[C3d,E3d],["do"]);
Spaceline("DF",[D3d,F3d],["do"]);
Partcrv("2",E,F,"sc2d2",["do"]);
Setcolor([0,0,0]);
// 線分BC,BD を青色実線で,線分OE,OF,CE,DF と弧EF を青色点線で描く.
Spacecurve("3","[r2*cos(t),r2*sin(t),h]","t=[0,2*pi]",["nodisp"]);
// 回転角を示す弧を描くための円データを作る.2次元データが "sc2d3" となる.
Putpoint("G",Intersectcrvs("sc2d3","sl2dBC")_1);
Putpoint("H",Intersectcrvs("sc2d3","sl2dBD")_1);
// この円とBCとの交点をG,BDとの交点を H とする.
Partcrv("3",G,H,"sc2d3");
// 弧GH を描く.
Arrowhead(D,D-part1_(length(part1)-1));
Arrowhead(H,H-part3_(length(part3)-1));
// 矢じりを描く.
Ptsize(5);
Drawpoint([C,D]);
// C,D のところに大きめの点を描く.
Letter([O,"nw","O",C,"s1e1","P",D,"e2","P$`$"]);
Expr([(G+H)/2,"s","\theta"]);
// 点の名前などを書く.
if(1==0,
Skeletonparadata("1",["ax3d"],["sl3dCE","sl3dDF"],["m"]);
);
// の 1==0 を 1==1 に変え,スケルトンをかける.
// 座標軸(ax3d)の線分CD(sl3dCE)と線分DF(sl3dDF)で隠れる部分を切る.
// 1回実行したら,"m" を "r" に変えて実行する.