任意の数のポイント(位置と制御)を取り、与えられた情報に基づいてキャットマルロムスプラインを作成するクラスを作成しようとしています。
私がしていること-そしてこれがそれを行う正しい方法であるかどうかは本当にわかりません-は、次のようなクラスに個々のポイントを格納することです:
class Point
{
public:
Vector3 position;
Vector3 control;
}
明らかに位置はポイントの位置であり、コントロールはコントロールポイントです。
私の問題はスプラインを接続することです-スプライン配列にポイントを保持する上記のクラスを考えると、特定の位置には1つのコントロールポイントしか持てないことを示しています。したがって、catmull romスプラインに3つ以上のポイントがある場合、接続されているさまざまな個々のcatmull-romスプラインは、1つの位置と1つのコントロールを別のそのようなスプラインと共有します。
位置が同じである必要があります-それらの間で連続するスプラインを作成したいので。しかし、私は本当に疑問に思います。コントロールポイントも2つのスプライン間で同じである必要がありますか?コントロールポイントを少しいじると、あるスプラインから別のスプラインにスムーズに移行しているように見せることができますが、それらの移行方法がキャットマルロムスプラインの形状と一致しているかどうかはわかりません。 。私は自分の手に座ってそれで十分だと合理化するよりも、正しくそれをしたいのです。
明らかに、私の質問の2番目の部分は自明です。2つの制御点と位置点が与えられた場合、キャットマルロムスプラインの長さを計算するにはどうすればよいですか?