==================================== kyokumen ==================================== Mathematicaを用いた練習を行います。 まず、Mathematica を使えるようにしてください。 プログラムの中の数字などを適当に変更してプログラムがうまく動くか試してみてください。 以下の説明の中で*****ではさまれた部分は Mathematica に入力する文字列です。 コピーするか、自分で入力して、 Shift+Enter(Return) キーで実行します。 上から順に,すべて実行するようにしてください。 上で定義した関数を後で利用すること があります。 ----------------------------------- 空間の曲面を描くには、ParametricPlot3D を用います。 また、曲面を動かすには、パッケージ Graphics`Animation` を用います。 また、色をつけるためにパッケージ Graphics`Colors` を 使います。これらを最初に読み込んでおきましょう。 ***** <Identity, opts]; grtmp = plottmp/. (Polygon[pts_] :> Line[Append[pts, First[pts]]]); Show[grtmp, DisplayFunction->$DisplayFunction]] ***** 双曲放物面を描きましょう。 ***** ParametricPlot3D[{u, v, u*v} // Evaluate, {u, -1, 1}, {v, -1, 1}, PlotRange -> {{-1, 1}, {-1, 1}, {-1, 1}}] ***** ***** ParametricPlot3D[{u, v, u*v} // Evaluate, {u, -1, 1}, {v, -1, 1}, PlotRange -> {{-1, 1}, {-1, 1}, {-1, 1}}, ViewPoint -> {1, 2, 1}] ***** ***** wireframe[{u, v, u*v}, {u, -1, 1}, {v, -1, 1}, PlotRange -> {{-1, 1}, {-1, 1}, {-1, 1}}] ***** 一葉の双曲面を描きましょう。 ***** ParametricPlot3D[{Cos[u] - 3/2*v*Sin[u], 3/2*v*Cos[u] + Sin[u], 2*v} // Evaluate, {u, 0, 2*Pi}, {v, -1.5, 1.5}, PlotRange -> {{-3, 3}, {-3, 3}, {-4, 4}}] ***** ***** ParametricPlot3D[Append[{Cos[u] - 3/2*v*Sin[u], 3/2*v*Cos[u] + Sin[u], 2*v}, FaceForm[RGBColor[1, 0.4, 0.3], RGBColor[0.91, 0.91, 0.1]]] // Evaluate, {u, 0, 2*Pi}, {v, -1.5, 1.5}, PlotRange -> {{-3, 3}, {-3, 3}, {-4, 4}}, Lighting -> False] ***** ***** wireframe[ {Cos[u]-3/2*v*Sin[u],3/2*v*Cos[u]+Sin[u],2*v},{u,0,2*Pi}, {v,-1.5,1.5}, PlotRange -> {{-3,3},{-3,3},{-4,4}}] ***** メービスの帯を描きましょう。 ***** moebiusstrip[a_][u_,v_]:= {a (Cos[u]+ v Cos[u/2] Cos[u]),a (Sin[u]+ v Cos[u/2] Sin[u]), a v Sin[u/2]} ***** ***** ParametricPlot3D[moebiusstrip[1][u, v] // Evaluate, {u, 0, 2*Pi}, {v, -0.3, .3}, PlotPoints -> {80, 8}] ***** ***** ParametricPlot3D[Append[moebiusstrip[1][u, v], FaceForm[RGBColor[1, 0.5, 0.5], RGBColor[0.99, 0.99, 0.2]]] // Evaluate, {u, 0, 2Pi}, {v, -0.3, 0.3}, PlotPoints -> {40, 5}, Lighting -> False] ***** ***** wireframe[moebiusstrip[1][u, v], {u, 0, 2*Pi}, {v, -0.3, 0.3}, PlotPoints -> {40, 5}] *** 2回ひねったメービスの帯を描きましょう。 ***** moebiusstrip2[a_][u_, v_] := {a (Cos[u] + v Cos[u] Cos[u]), a (Sin[u] + v Cos[u] Sin[u]), a v Sin[u]} ***** ***** ParametricPlot3D[moebiusstrip2[1][u, v] // Evaluate, {u, 0, 2*Pi}, {v, -0.3, .3}, PlotPoints -> {80, 8}] ***** ***** ParametricPlot3D[Append[moebiusstrip2[1][u, v], FaceForm[Blue, Yellow]] // Evaluate, {u, -Pi, Pi}, {v, -0.3, 0.3}, PlotPoints -> {40, 5}, ViewPoint -> {1, -1.968, 1.108}, Lighting -> False] ************* ************* アニメーションを描きましょう。 ***** Animate[wireframe[{1/2*(1*Cos[u-Pi/2]-v*2*Sin[u-Pi/2]), 1/2*(v*2*Cos[-Pi/2+u]+1*Sin[-Pi/2+u]), v}//Evaluate, {u,-n,n}, {v,-1.5,1.5}, PlotRange->{{-2,2},{-2,2},{-2,2}},PlotPoints->{IntegerPart[IntegerPart[64*n]/4]+2,20}, Lighting-> False, ViewPoint->{2, 0, 0}], {n,1/10^3,Pi+1/126, 1/63.4}] ***** ***** Animate[ ParametricPlot3D[Append[{Cos[u]-3/2*v*Sin[u], 3/2*v*Cos[u]+Sin[u], 2*v}, FaceForm[Red,Yellow]]//Evaluate, {u,0,n},{v,-1.5,1.5}, PlotRange->{{-2,2},{-2,2},{-2,2}}, PlotPoints->{IntegerPart[IntegerPart[64*n]/16]+2,20}, Lighting-> False, ViewPoint->{1.538, -2.457, 1.62}], {n,1/32, 2*Pi+1/16, 1/8}] ************* ************* Animate[ ParametricPlot3D[Append[3*{Cos[u]+v*Cos[u]*Cos[u/2], Sin[u]+v*Cos[u/2]*Sin[u], v*Sin[u/2]}, FaceForm[Red,Yellow]]//Evaluate, {u,0,n}, {v,-0.3,0.3}, PlotRange->{{-4,4},{-4,4},{-2,2}}, PlotPoints->{IntegerPart[IntegerPart[64*n]/8]+2,10}, Lighting-> False, ViewPoint->{2,-1, 1}], {n,1/10^8,2*Pi+1/8, 1/8}] ***** ***** Animate[ParametricPlot3D[Append[3*{Cos[u] + v*Cos[u]*Cos[u], Sin[u] + v*Cos[u]*Sin[u], v*Sin[u]}, FaceForm[Red, Yellow]] // Evaluate, {u, 0, n}, {v, -0.3, 0.3}, PlotRange -> {{-4, 4}, {-4, 4}, {-2, 2}}, PlotPoints -> {IntegerPart[IntegerPart[64*n]/8] + 2, 10}, Lighting -> False, ViewPoint -> {2, -1, 1}], {n, 1/10^3, 2*Pi + 1/8, 1/8}] ***** ***** Animate[ ParametricPlot3D[Append[3*{Cos[u]+v*Cos[u]*Cos[u 3/2], Sin[u]+v*Cos[u 3/2]*Sin[u], v*Sin[u 3/2]}, FaceForm[Red,Yellow]]//Evaluate, {u,0,n}, {v,-0.3,0.3}, PlotRange->{{-4,4},{-4,4},{-2,2}}, PlotPoints->{IntegerPart[IntegerPart[64*n]/8]+2,10}, Lighting-> False, ViewPoint->{2,-1, 1}], {n,1/10^3,2*Pi+1/8, 1/8}] ***** ************* Animate[wireframe[ Append[{u, v, u*v}, FaceForm[Red,Yellow]]//Evaluate, {u,1/128,n}, {v,0,1}, PlotRange->{{0,1},{0,1},{0,1}}, PlotPoints->{IntegerPart[IntegerPart[64*n]/4]+2,20}, Lighting-> False, ViewPoint->{8, -5, 2}], {n,1/64,1, 1/128}] ***** ***** Animate[Show[{wireframe[{u, v, u*v}, {u,-1,1},{v,-1,1},PlotRange->{{-1,1},{-1,1},{-1,1}},PlotPoints->{8,8}], ParametricPlot3D[ Append[{u, v, u*v}, FaceForm[Red,Yellow]]//Evaluate, {u,-1+1/256,-1+2*n}, {v,-1,1}, PlotRange->{{-1,1},{-1,1},{-1,1}}, PlotPoints->{IntegerPart[IntegerPart[64*n]/4]+2,20}]}, Lighting-> False,ViewPoint->{6, -3, 1}], {n,1/256,1+1/256, 1/128}] *************