================ Rotation Surface1 ================ Mathematicaを用いた練習を行います。 Mathematica は毎回使いますから、GNOMEパネルの ランチャーに登録しておきましょう。 Mathematica は 「センターメニュー」-「アプリケーション」-「Mathematic数式処理」 にあります。 適当にプログラムの中の数字などを変更して試してみてください。 以下の説明の中で*****ではさまれた部分は Mathematica に入力する文字列です。自分で入力し Shift+Enter(Return) キーで実行します。 上から順に,すべて実行するようにしてください。 上で定義した関数を後で利用すること があります。 ベジエ曲線を用いて、回転面をつくってみましょう。 ****** Needs["Graphics`Colors`"] Cn[s_] := n!/(s!*(n - s)!) Bn[s_, u_] := Cn[s]*(u^s)*((1 - u)^(n - s)) SS[n_] := Sum[b[j]*Bn[j, t], {j, 0, n}] AA[n_] := Sum[w[j]*b[j]*Bn[j, t], {j, 0, n}]/Sum[w[j]*Bn[j, t], {j, 0, n}] L[n_] := Table[(1 - t)*b[i] + t*b[i + 1], {i, 0, n - 1}] Bezier := ParametricPlot[Evaluate[SS[n]], {t, 0, 1}, AspectRatio -> Automatic, Axes -> True, PlotRange -> All] RatBezCurve:= ParametricPlot[Evaluate[AA[n]], {t, 0, 1}, AspectRatio -> Automatic, Axes -> True, PlotRange -> All] B2Poly := ParametricPlot[Evaluate[L[n]], {t, 0, 1}, AspectRatio -> Automatic, Axes -> True, PlotStyle -> {Thickness[0.005]}] ****** まず、直線 y=x を回転させてみましょう。 ****** n = 1 b[0] = {0,0} b[1] = {1, 1} Bezier F=SS[n] ****** ****** T1=ParametricPlot3D[{F[[1]]*Cos[v], F[[1]]*Sin[v], F[[2]]}, {t, 0, 1}, {v, 0, 2*Pi}, PlotRange -> All, PlotPoints -> {20, 30}] ****** ****** Show[T1, ViewPoint -> {2, 0, -1/2}] ****** 次に、放物線を回転してみましょう。 ****** n =2 b[0] = {0,0} b[1] = {1, 0} b[2] = {1, 1} Bezier F=SS[n] ****** ****** T2=ParametricPlot3D[{F[[1]]*Cos[v], F[[1]]*Sin[v], F[[2]]}, {t, 0, 1}, {v, 0, 2*Pi}, PlotRange -> All, PlotPoints -> {20, 30}] ****** ****** Show[T2, ViewPoint -> {2, 0, -1}] ****** ****** T3=ParametricPlot3D[{F[[1]]*Cos[v], F[[1]]*Sin[v], F[[2]]}, {t, 0, 1}, {v, 0, Pi}, PlotRange -> All, PlotPoints -> {20, 30}] ****** ****** n =2 b[0] = {0,0} b[1] = {1, 0} b[2] = {1, 1} w[0] = 1 w[1] = 1 w[2] = 2 RatBezCurve F=AA[n] ****** ****** T4=ParametricPlot3D[{F[[1]]*Cos[v], F[[1]]*Sin[v], F[[2]]}, {t, 0, 1}, {v, 0, Pi}, PlotRange -> All, PlotPoints -> {20, 30}] ****** ****** w[0] = 1 w[1] = 1 w[2] = 1/2 RatBezCurve F=AA[n] ****** ****** T5=ParametricPlot3D[{F[[1]]*Cos[v], F[[1]]*Sin[v], F[[2]]}, {t, 0, 1}, {v, 0, Pi}, PlotRange -> All, PlotPoints -> {20, 30}] ****** ****** Show[T3, T4, T5] ****** ハートから回転面を作ってみましょう。 ****** n=8 b[0]={0,1/2}; b[1]={0,0.7}; b[2]={2.5,3.5}; b[3]={2.5,4}; b[4]={2.5,4.7}; b[5]={2,5.5}; b[6]={1/2,5.5}; b[7]={0,5}; b[8]={0,4}; w[0]=5; w[1]=4; w[2]=3; w[3]=2; w[4]=1; w[5]=2; w[6]=3; w[7]=4; w[8]=5; RatBezCurve F=AA[n] ****** ****** T6=ParametricPlot3D[{F[[1]]*Cos[v], F[[1]]*Sin[v], F[[2]]}, {t, 0, 1}, {v, 0, Pi}, PlotRange -> All, PlotPoints -> {20, 30}] ****** ****** Show[T6, ViewPoint -> {0, -1, 0}] ****** 今日の課題 ベジエ曲線あるいは有理ベジエ曲線を描いて、これから回転面を作りましょう。