要件
2つのベジェ曲線 があり、曲線
の終点と曲線
の始点が等しいとします。
曲線 の制御点は
とし、位置ベクトルは
とし、
曲線 の制御点は
とし、位置ベクトルは
とします。
曲線 の終点と曲線
の始点が等しいので、以下が成り立ちます。
制御点間の長さ を以下のように定義します。
曲線 が
でG1連続である時、
に平行なベクトルを
とおくと、
が成り立ちます。
要件は「曲線 のG1連続維持(式
を満たす)しつつ、曲線
が
の移動量を最小にするような
を見つけること」です。
と
を別々に最適化する
まずは を最適化します。
目的関数 を定義します。
を
で微分して
とおきます。
次に を最適化します。
目的関数 を定義します。
を
で微分して
とおきます。
最後に を最適化します。
目的関数 を定義します。
を
で微分して
とおきます。
と
を別々に最適化する場合、要件を満たしていませんが、制御点があまり動かないのでとりあえずG1連続にしたいときにおすすめのアルゴリズムです。
と
を同時に最適化する
以下は書き直す可能性が大いにあります。読まないでください。
ニュートン法で最適化します。
パラメータをまとめて とおきます。
まずは勾配ベクトルを成分を計算します。
式 より以下が成り立ちます。
式 より以下が成り立ちます。
以上より、勾配ベクトルは以下のようになります。
次にヘッセ行列を計算します。
先に要素を計算します。
以上より、ヘッセ行列は以下のようになります。