|
|
Bezier曲線、BSpline曲線を描画します。 BSpline曲線は3次のものを描画しています。 - 使い方 - アプレット上でマウスをクリックすることで制御点を指定します。 3つ以上制御点を打つと曲線が描画されます。 制御点はいくつでも指定できますが、 あまり多く指定すると誤差が累積し、 いびつな形となってしまいます(20個くらいまでがよい)。 また、一度指定した制御点をドラッグすることも可能です。 上のメニュー、ボタン等は以下の処理を行います。 メニュー:描画モード選択 "Bezier":Bezier曲線を描画する(青い線) "BSpline":3次のBSpline曲線を描画する(赤い線) "Bezier and BSpline":Bezier曲線、3次BSpline曲線両方を描画する "Only Control Points":制御点のみを描画する "init"ボタン:制御点をすべて消去する "raise Beizer Degree"ボタン:Bezier曲線の次数を1つ上げて、 まったく同じ曲線を描画する(Bezier描画モードのみ) Javaコード (アプレットが動作しない場合は、このコードをコンパイルしてください。 ただし、appletviewerでは動かない可能性があります。) |
![]() |
![]() |
![]() |
| Bezier曲線の描画結果。 | 3次のBSpline曲線の描画結果。 | BezierとBSplineの比較BSplineの方が制御点の近くを通っています。 |
![]() |
![]() |
![]() |
| Bezier曲線の描画結果2。 | 次数を1次あげた結果。まったく同じ曲線が描かれています。 | 次数をさらに2次あげた結果。前と同様に同じ曲線が描かれています。 |
| 3次のBezier曲線におけるdeCastljauの分割を行います。 - 使い方 - 制御点とBezier曲線が描画されています。 この制御点はドラッグして移動することができます。 アプレット上部のテキストボックスに(0,1)の範囲で数値を与えると、 その値に基づいてdeCastljauの分割を行い、 黄色い直線と赤、黄色、緑色の点がそれぞれ表示されます。 それぞれの意味は次のとおりです。 赤い点:Bezier曲線の関数にtを入れたときの点 黄色い点:各線分を1:(1-t)で内分する点 黄色い線:内分点間を結んだ直線 緑色の点:deCastljauの分割方法によって新たにできた制御点 アプレット上部の"init"ボタンをクリックすると それぞれの制御点が初期位置に戻ります。 Javaコード (アプレットが動作しない場合は、このコードをコンパイルしてください。 ただし、appletviewerでは動かない可能性があります。) |
![]() |
![]() |
![]() |
| t=0.2での分割結果。赤い点が黄色い直線上にあります。 | t=0.4での分割結果。同様に赤い点が黄色い直線上にあります。 | t=0.5での分割結果。tの値をどんなに変えても、赤い点が黄色い直線上にあります。 |
![]() |
![]() |
![]() |
| t=0.7での分割結果。 | 制御点の位置を変えて、t=0.7で分割。曲線が複雑になっても必ず赤い点が黄色い直線上にあります。 | さらに制御点の位置を変えて、t=0.7で分割。制御点の位置にかかわらず、必ず赤い点が黄色い上を通っています。 |