================ BEZIER4(双曲放物面) ================ Mathematicaを用いた練習を行います。 適当にプログラムの中の数字などを変更して試してみてください。 以下の説明の中で ***** ではさまれた部分を Mathematica に入力して下さい。自分で入力するか、コピー&ペーストして下さい。 ペーストしたものをShift+Enter(Return) キーで実行します。 上から順に,すべて実行するようにしてください。 上で定義した関数を後で利用すること があります。 双曲放物面を描くための準備として、まず次を入力してください。 ****** <Identity, opts]; grtmp = plottmp/. (Polygon[pts_] :> Line[Append[pts, First[pts]]]); Show[grtmp, DisplayFunction->$DisplayFunction]] ****** 双曲放物面を描いてみましょう。 ****** ParametricPlot3D[{u, v, u*v}//Evaluate, {u,0,1}, {v,0,1}, Lighting-> True, ViewPoint->{4, -2, 0.5}] ****** メッシュで描いてみましょう。 ****** wireframe[ {u, v, u*v},{u,0,1}, {v,0,1},ViewPoint->{1.534, -2.733, -0.962}] ****** 赤と黄で表と裏を塗り分けましょう。 ***** ParametricPlot3D[ Append[{u, v, u*v}, FaceForm[Red,Yellow]]//Evaluate, {u,0,1}, {v,0,1}, Lighting-> False, ViewPoint->{1.534, -2.733, -0.962}] ***** アニメーションにしてみましょう。 ***** Animate[ParametricPlot3D[ 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]/8]+2,16}, Lighting-> False, ViewPoint->{7, -4, 1}], {n,1/64,1, 1/64}] ***** 双曲放物面の名前の由来である方物線と双曲線が表れる様子を見ましょう。 放物線 ***** Animate[ParametricPlot3D[Append[{u, v, u*v}, FaceForm[Red, Yellow]] //Evaluate, {u, -2 + 1/128, -2 + 4*n}, {v, -2, 2}, PlotRange -> {{-2, 2}, {-2, 2}, {-4, 4}}, PlotPoints -> {IntegerPart[IntegerPart[64*n]/4] + 2, 20}, Lighting -> False, ViewPoint -> {1, 1, 0}], {n, 1/128, 1, 1/128}] ***** 双曲線 ***** kiritori=Table[ParametricPlot3D[ Append[{u, v, u*v}, FaceForm[Red,Yellow]]// Evaluate, {u,-2+1/128,2(-1+2*n)}, {v,-2,2}, PlotRange->{{-2,2},{-2,2},{-4,1/2}}, PlotPoints->{IntegerPart[IntegerPart[128*n]/4]+2,30}, Lighting-> False, ViewPoint->{2, 3, 2}], {n,1/128,1, 1/64}] ***** ***** n = 1 aaaa = ParametricPlot3D[Append[{u, v, u*v}, FaceForm[ Red, Yellow]] // Evaluate, {u, -2 + 1/ 128, 2(-1 + 2*n)}, {v, -2, 2}, PlotRange -> {{-2, 2}, {-2, 2}, {-4, 1/2}}, PlotPoints -> {IntegerPart[IntegerPart[128*n]/4] + 2, 30}, Lighting -> False, ViewPoint -> {2, 3, 2}, Ticks -> None] Clear[n] ***** 線分が他の線分上を動いていることを確認しましょう。 ***** Animate[Show[{wireframe[{u, v, u*v}, {u,-1,1},{v,-1,1},PlotRange->{{-1,1},{-1,1},{-1,1}}, PlotPoints->{24,24}],Graphics3D[{Blue,PointSize[0.02], Point[{-1+2*n,-1+2*1/4,(-1+2*n)*(-1+2*1/4)}]}], Graphics3D[{Red,Thickness[0.007], Line[{{-1+2*n,-1,-1*(-1+2*n)},{-1+2*n,1,-1+2*n}}]}]}, Ticks->{{-1,0,1},{-1,0,1},{-1,0,1}} , Lighting-> False, ViewPoint->{6, -3, 1}], {n,1/256,1+1/256, 1/128}] ***** もう一度、双曲放物面を描いてみましょう。 ***** Animate[ParametricPlot3D[ {u, v, u*v}, {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}, ViewPoint->{4, 2, 1}], {n,1/256,1, 1/64}] *****