================ BEZIER1 ================ Mathematicaを用いた練習を行います。 Mathematica は毎回使いますから、GNOMEパネルの ランチャーに登録しておきましょう。 Mathematica は 「センターメニュー」-「アプリケーション」-「Mathematic数式処理」 にあります。 適当にプログラムの中の数字などを変更して試してみてください。 以下の説明の中で*****ではさまれた部分は Mathematica に入力する文字列です。自分で入力し Shift+Enter(Return) キーで実行します。 上から順に,すべて実行するようにしてください。 上で定義した関数を後で利用すること があります。 関数のグラフを描くにはPlotを用います。 ****** Plot[Sin[x], {x, 0, 2 Pi}]; ****** ベジエ曲線を描くには、ParametricPlotを用います。 これは、y=f(x)の形になるもの以外も描く必要があるためです。 ParametricPlotを用いて放物線を描いてみましょう。 ****** ParametricPlot[{-1 + 2*t, (-1 + 2*t)^2}, {t, 0,1}, AspectRatio->Automatic,Axes -> True, PlotRange->All] ****** 平面上にベジエ曲線を描くための準備として、まず次ぎを入力してください。 ***** 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}] L[n_]:=Table[(1-t)*b[i]+t*b[i+1], {i,0,n-1}] BezierCurve2:=ParametricPlot[Evaluate[SS[n]],{t,0,1}, AspectRatio->Automatic,Axes -> True, PlotRange->All] B2Poly:=ParametricPlot[Evaluate[L[n]],{t,0,1}, AspectRatio->Automatic,Axes -> True] BezPloy2:=Show[BezierCurve2, B2Poly] BCurve2[a_, b_]:=ParametricPlot[Evaluate[SS[n]],{t,a,b}, AspectRatio->Automatic,Axes -> True, PlotRange->All] ***** では、放物線の例から始めましょう。 例1 ***** n=2 b[0] = {-1, 1}; b[1] = { 0,-1}; b[2] = { 1, 1}; BezierCurve2 ***** 例2 ***** b[0] = {-1,0}; b[1] = {0,2}; b[2] = {1,0}; BezierCurve2 ***** 例3 ***** b[0] = {0,-1}; b[1] = {2,0}; b[2] = {0,1}; BezierCurve2 ***** 例4 ***** n=2 b[0] = {0, 1}; b[1] = { 1,1}; b[2] = { 1, 0}; BezPloy2 ***** 例5 ***** n=2 b[0] = {0, 1}; b[1] = { 1,1}; b[2] = { 1, 0}; BCurve2[0,1] Show[BCurve2[0,1], B2Poly] ***** 次に3次曲線を描きましょう。 例6 ***** n=3 b[0] = {2, 3}; b[1] = {0,2}; b[2] = {0, 0}; b[3] = {2, -1}; BezPloy2 ***** 例7 少し曲線をのばしてみましょう。 ***** n=3 b[0] = {2, 3}; b[1] = {0,2}; b[2] = {0, 0}; b[3] = {2, -1}; BCurve2[-1,2] ***** 例8 もっとのばしてみましょう。 ***** n=3 b[0] = {2, 3}; b[1] = {0,2}; b[2] = {0, 0}; b[3] = {2, -1}; BCurve2[-2,3] ***** 例9 ***** n=3 b[0] = {0, 0}; b[1] = {1,2}; b[2] = {3, -2}; b[3] = {4, 0}; BezPloy2 ***** 例10 ***** n=3 b[0] = {0, 0}; b[1] = {1,2}; b[2] = {3, -2}; b[3] = {4, 0}; Show[BCurve2[-1/2,3/2], B2Poly] ***** ベジエ曲線を理解するために描いて見ましょう。 ***** b[0] = {-1,0}; b[1] = {-1,2}; b[2] = {1, 0}; b[3] = {1, 2}; b[4] = {0, 3}; b[5] = {-1,2}; b[6] = {1, 2}; b[7] = {-1, 0}; ***** ***** n=7 BHouse=B2Poly ***** ***** n=2 Show[BezierCurve2, BHouse] ***** ***** b[0] = {-1,0}; b[1] = {-1,2}; b[2] = {1, 0}; b[3] = {1, 2}; b[4] = {0, 3}; b[5] = {-1,2}; b[6] = {1, 2}; b[7] = {-1, 0}; ***** ***** n=7 BHouse=B2Poly ***** ***** n=2 Show[BezierCurve2, BHouse] ***** ***** n=3 Show[BezierCurve2, BHouse] ***** ***** n=4 Show[BezierCurve2, BHouse] ***** ***** n=5 Show[BezierCurve2, BHouse] ***** ***** n=6 Show[BezierCurve2, BHouse] ***** ***** n=7 Show[BezierCurve2, BHouse] ***** では、n とb[0], .b[1], ..., b[n] を与えて、ベジエ曲線を作って見ましょう。 何かおもしろそうなものができたら、教えて下さい。