1

このコードを使用して、[0, 1] の s の 3 次ベジエ曲線を計算しています。幾何学的な連続性に基づいて曲線のベースを拡張したいと考えています。[0, 1] 以外のセットを試してみましたが、結果は正しくありません。ベジェポイントを計算するための可能なアルゴリズムは実際にありますか?

pb、pbh、peh、pe は、3 次ベジエの制御点のベクトルです。

*pq = pb*powf(1-s, 3) + pbh*(3*s*(powf(1-s, 2))) + peh*(3*powf(s, 2)*(1-s)) + pe*powf(s,3);

http://imageshack.us/photo/my-images/217/37013437.jpg/

これは私が得たイメージです。白い曲線は私が取得したいものです。相互にリンクされた 3 つの白いベジエ曲線があります。中央のものは、私のコードに基づく曲線です。延長された曲線 (中央の曲線の約 2 倍の長さの白い曲線全体) は、私が望んでいたものです。ただし、s の範囲が [-0.5, 1.5] のコードでベジエ曲線を作成すると、元の 2 つの制御点を通過することさえできない緑色の曲線が得られます。

緑色の線のハンドルには、次のコードを使用しました。これは、[0, 1] の s でも正常に動作します。p123 は緑色の新しい左ハンドルで、p234 は新しい右ハンドルです。

p12 = (pbh-pb)*s+pb;
p23 = (peh-pbh)*s+pbh;
p34 = (pe-peh)*s+peh;

p123 = (p23-p12)*s+p12;
p234 = (p34-p23)*s+p23;

前もって感謝します

4

1 に答える 1

1

追加情報がない場合、取得できる最も妥当な種類の拡張は、実際には、[0,1]の範囲外の引数sを渡すことによって取得する拡張です。明らかに、この方法で拡張された曲線には元の曲線が含まれるため、緑色の曲線には含まれないため、制御点の計算に欠陥がある必要があります。その計算の式を別の答えに追加しました; 彼らはあなたのためにも働くはずです。

3セグメントの白い曲線では、コントロールポイントはジャンクションの周りで対称ではありません。これは、曲線が(線上にあるのと同じように)同じ方向に進み続けますが、速度が(時間として解釈されて)非常に突然変化することを意味します。スムーズな継続でその形を実現することはできません。したがって、上記の方法では白い形は得られず、何らかの詳細情報を提供しない限り、その形を取得することはできません。

于 2012-07-29T00:09:30.893 に答える