« プログラミング講座 (199) スーパー三角関数? | トップページ | プログラミング講座 (201) パラメーター »

2020/09/14

プログラミング講座 (200) 3次ベジエ曲線

2次ベジエ曲線は n = 0.5 のスーパー楕円や放物線が描けることが判りました。3次ベジエ曲線は両端と2つの制御点で描く曲線ですが、どんな曲線が描けるのでしょうか。

3次ベジエ曲線で描ける曲線

まず y = x3 - x が描けるかやってみました。

Cubicbezier_20200913235701

プログラムはこちらに公開しました。y = ax3 + bx2 + cx + d という形の3次曲線は描けそうです。その他に3次曲線の仲間がいろいろあるのですが、試してみたところ |x/a|1/3 + |y/b|1/3 = 1 という式のスーパー楕円、y2 = ax3 という式の半3次放物線、y2 = x3 +3x2 という式のチルンハウス3次曲線は描けることが判りました。

3次ベジエ曲線は2次ベジエ曲線を含む

なお、3次ベジエ曲線は2次ベジエ曲線を含んでいるので、制御点をうまく配置すれば2次ベジエ曲線と同じ曲線が描けます。

3次ベジエ曲線で描けない曲線

こちらも色々試しました。n = 1, n = 1/2, n = 1/3 以外のスーパー楕円は描けません。n = 2 のとき楕円(円)も近似するしかありません。双曲線 y = x-1 も描けません。デカルトの葉曲線 (folium of Descartes) x3 + y3 = 3axy も描けません。サイクロイド (cycloid) x = a(θ - sinθ), y = a(1 - cosθ) も描けませんでした。

あと、試していないのですが、描けなさそうなのが、シッソイド (cissoid of Diocles) (x2 + y2)x = 2ay2 や アーネシの曲線 (witch of Agnesi) (x2 +c2)y - c3 = 0 です。xy の項があると双曲線 (xy = 1) と同様描けないんだと思います。

関連項目

|

« プログラミング講座 (199) スーパー三角関数? | トップページ | プログラミング講座 (201) パラメーター »

Small Basic」カテゴリの記事

数学」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)




« プログラミング講座 (199) スーパー三角関数? | トップページ | プログラミング講座 (201) パラメーター »