ベジェ曲線のパラメータ表示

今回の授業では、ベジェ曲線(Bezier curve)のパラメータ表示を学びます。

曲線のパラメータ表示

以下式を満たすを点が楕円を作ります。 $$ x^2+3y^2=1 $$ ただし、楕円上の点を定めるために、方程式を解くのは必要です。

上記の楕円を次の形で表すことが可能です。

$$ x(t) = \cos(2 \pi t), \quad y(t)= \sqrt{3}/3 \sin(2 \pi t), \quad (t \in [0,1]) $$

つまり、(媒介)変数$t$が変化するに従って点$(x(t),y(t))$は一つの曲線を描くことができます。上記の式は曲線のパラメータ表示と呼ばれます。

演習1:

  • 上記の楕円を描いてください。

  • 以下のパラメータ曲線を描いてみてください。ただし、$n=1,2,3,4$にすること。

$$ x(t) = \cos^n(2\pi t), \quad y(t) = \sin^n(2\pi t), \quad (t \in [0,1]) $$

また、$x(t)$, $y(t)$を自由に修正して、パラメータ曲線の形を確認してください。例えば、

$$ x(t) = \cos^5(5\pi t), \quad y(t) = \sin^2(2\pi t) $$
In [19]:
t=0:0.001:2;
x=cos(2*pi*t).^1;
y=sin(2*pi*t).^1;
plot(x,y,'-')
Gnuplot Produced by GNUPLOT 5.0 patchlevel 3 -1 -0.5 0 0.5 1 -1 -0.5 0 0.5 1 gnuplot_plot_1a

ベジェ曲線のパラメータ表示

実際の応用では、2次元平面上の曲線を自由に表現するために、以下のパラメータ曲線で現れるベジェ曲線が使用される。

$$ F(t) = (X(t), Y(t)) $$

ここで、 $$ X(t) = X_0 B_{0,n}(t) + X_1 B_{1,n}(t) + \cdots + X_n B_{n,n}(t) = \sum_{i=0}^n X_i B_{i,n}(t) $$ $$ Y(t) = Y_0 B_{0,n}(t) + Y_1 B_{1,n}(t) + \cdots + Y_n B_{n,n}(t) = \sum_{i=0}^n Y_i B_{i,n}(t) $$ また、制御点は $$ P_0=(X_0,Y_0), \quad P_1 = (X_1,Y_1),\quad \cdots, \quad P_n=(X_n,Y_n) $$ となる。

ホームページにあるBezier曲線の補足資料(3次ベジェ曲線の例)を参考してください。

2次元平面上のベジェ曲線の例

制御点は以下のようにとる。 $$ P_0 = (0,0), P_1 = (0,1), P_0 = (2,-1), P_3=(3,0) $$

In [65]:
P=[0,0;
   0,1;
   2,-1;
   3,0];
In [70]:
t=0:.001:1;
X=0;Y=0;
for k = 0:3
  X = X + P(k+1,1)*Bernstein(k,3,t);
  Y = Y + P(k+1,2)*Bernstein(k,3,t); 
end
hold on
plot(P(:,1), P(:,2),'r-o')
plot(X,Y,'b-')
grid on
Gnuplot Produced by GNUPLOT 5.0 patchlevel 3 -1 -0.5 0 0.5 1 0 0.5 1 1.5 2 2.5 3 gnuplot_plot_1a gnuplot_plot_2a

レポート課題2

Windowsのツール「ペイント」を使ってで絵を描いてください。また、コントロール点の座標を記録して、ここでプログラミングによって、絵を描いてください。

In [ ]: