ベジェ曲線の中心を見つけるアルゴリズム


8

ベジエ曲線の中心を見つけて回転させる必要があります。すべてのポイント(制御ポイント、開始と終了、カーブ自体のすべてのポイント)のリストがあります。それを中心に見つけるにはどうすればいいですか?


4
曲線は数学的な実体であり、それ自体には中心がありません。しかし、あなたはボックスセンター、最小バウンディングボックスの中心部、エンドポイントが接続されている曲線の基礎となる囲まれた領域の重心、平均など閉じpolybeziers、曲線の中点、制御点の重心boudingを探しているかもしれない
joojaa

1
@joojaa確かに私が考えることができる2つの自然の中心があります、1つはt=0.5ポイントです。2つは、線に沿った移動デカルト距離に関する幾何学的中点です。
v.oddou 2016年

1
@ v.oddouはい、実際には質問に説明が必要な理由はもっとたくさんあります。私が使用したすべてのベクターアプリケーション(Illustrator、xara、corel、sketchなど)。ローカルバウンディングボックスの中心を使用してオブジェクトを回転させるため、他の中心定義が使用されることはほとんどありません。
joojaa

回答:


14

ベジエ曲線は数学的実体であり、明確に定義された中心はありません。実際、ベジエ曲線の中心としてさまざまなものを定義できます。画像1で考えられる中心のいくつかを描こうとしましたが、これ以外にも存在します。

ここに画像の説明を入力してください

画像1:単一スパンのベジエ曲線の可能な中心のいくつか

実際には、描画用のほとんどすべてのグラフィックスアプリケーションは、ローカルバウンディングボックス(BB)の中心を中心として使用します。アニメーションソフトウェアには通常、ピボットの追加概念があるため、ユーザーに質問するアプローチを使用します。入力がない場合、BB中心または単にローカル座標中心に戻ることがよくあります。これはおそらく、BBを計算する必要があり、中心を取得するのが非常に簡単であるためです(ベジェ曲線の入門書を参照)。

重心のメトリックは、特にアニメーションのコンテキストではやや自然ですが、計算が面倒です。データを離散化し、離散入力で計算を行うのが最も簡単です。これは、いくつかの閉じた形の解が曲線の重心に対して可能であると言いましたが、定式化して単純化するのはあまり良い方程式ではありません。

次に、曲線上のポイントがあります。弧の長さによる中点と、パラメータが0.5 であるポイントです。私の考えでは、パラメータは計算が簡単ですが問題が多いことが多く、ポリベジエに対して複数のベジエを次々にチェーニングすると意味がなくなります。もちろん、カーブが閉じていない限り、長さの中心は自然です。tt

他の可能な中心も定義します。中心は、船体のカーブ重心、コントロールポイントの平均、またはコントロールケージのBBセンターになります。実際にはこれらはうまくいかないようですが。

注意:図1のカーブは、BBの中心をいくつかの自然な中心に非常に近く示していますが、これは、より複雑なカーブ、特にポリベジエの場合には常に当てはまるとは限りません。


3
私はこれをコメントとは呼びません。質問者の現在の知識レベルに対応し、質問が予想よりも広い理由を完全に説明し、新しい質問への道を開く優れた答えと思います。
trichoplax

@trichoplaxは、あまり礼儀正しくないため、「中心を定義する」と要約できます。
ラチェットフリーク2016年

@ratchetfreak私は、質問者が求めているトピックを完全に理解することを期待するのではなく、質問者の知識のギャップを特定しようとする回答を好みます。
trichoplax

四角形および三次ベジェ曲線の距離中間点を取得する方法を探しています。私はt値0.5を使用していましたが、あなたが言ったように、それは問題があることに気づきました。ベジェ計算で今やろうとしているのは、ボールを等速で動かすことです。しかし、t値を使用するのは非常に難しくなります。アークの長さに応じて適切なt値を見つける必要があると思います。何かリソースや小さなヒントを教えてください。
Jenix 16

2
残念ながらありませんsinple一般的な閉形式解は、ベジエのために存在しますが、カバーが数値的にこれを行うと、より見つけることができるという優れたリソースここで私が仕事でより良いリソースがそれにリンクする必要がありますが、私は自分の携帯電話上のリンクを得たhaventは今日読ん厳しいです。しかし、おそらくこれで十分です@Jenix
joojaa

1

使用する「中心」の定義がわからないため、最も簡単に使用することもできます。これは

Center=14(P0+P1+P2+P3)
どこ P0P1P2P3 曲線の制御点です。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.