29

「平行な」ベジエ曲線を作成しようとしています。私の試みでは、私は近づいてきましたが、葉巻はありません. 2 つの曲線 (赤、青) の間に 1 ピクセルのオフセットを維持しようとしています。

現在の試み

私の主な目標は、エッジ オフセット アルゴリズムを使用して SVG パスを拡大/縮小することです。


解決

解決策を探している他の人のために、AS3 バージョンを作成しました。

http://seant23.wordpress.com/2010/11/12/offset-bezier-curves/

4

4 に答える 4

11

ウィキペディアから: ( http://en.wikipedia.org/wiki/B%C3%A9zier_curve )

特定のベジエ曲線からの固定オフセットにある曲線は、しばしばオフセット曲線 (鉄道線路のレール間のオフセットのように、元の曲線に「平行」にある) と呼ばれますが、ベジエ曲線によって正確に形成することはできません (一部の曲線を除く)。些細なケース)。ただし、通常、実用的な目的に適した近似値を提供するヒューリスティックな方法があります。

ここに示されている論文も表示される場合があります: 3 次ベジエ曲線ストロークの概要

于 2010-11-10T20:48:47.350 に答える
8

あなたが求めるものは、数学では平行曲線またはオフセット曲線と呼ばれます。ベジエ曲線に関するウィキペディアの記事 (他の人が引用) は、「オフセット曲線」の正しい記事にリンクできませんでしたが、数秒前に修正しました。ベクター グラフィックスの世界では、同じ概念をパスのストロークと呼びます。

一般に、3 次/ベジエ曲線の場合、オフセット曲線は 10 次多項式です! 出典:キルガード、p. 28

分析形式を計算するのではなく、そのようなオフセット カーブをラスタライズするだけの場合は、たとえば、ghostscript のソースを見ることができます。この特許出願を見て、NV_path_rendering がどのようにそれを行うかを確認することもできます。

オフセット曲線を変換/近似したい場合は、METAFONT を PostScript フォントにカバーするためのMetaFogの TUG ペーパーが良い読み物です。PostScript よりも前の METAFONT システムでは、ストロークの (より数学的に複雑な) 操作によってフォントを記述することができましたが、PostScript Type 1 フォントでは、速度の理由から (一般的な PostScript 描画とは異なり) 塗りつぶしのみを使用できます。

PostScript のコードを使用して、オフセットを (2 つのみの) ベジエ (両側に 1 つ) として近似する別のアルゴリズムは、この論文のセクション 7 で Gernot Hoffmann によって提供されています。(それを見つけるための OpenGL フォーラムの誰かへのヒント。)

実際、そのようなアルゴリズムはたくさんあります。オフセット曲線を近似するためのさまざまなアルゴリズムに関する1997 年の調査を見つけました。彼らは、元の曲線がベジエまたは NURBS であると想定しています。

于 2014-08-14T16:30:23.503 に答える
7

一般に、3 次ベジエ曲線のオフセットを 3 次ベジエ曲線として表現することはできません (具体的には、尖点または曲率半径がオフセット距離に近い場合に問題になります)。ただし、任意の精度レベルでオフセットを概算できます。

これを試して:

  • 問題のベジエをオフセットします(すでにかなりまともなものに見えます)
  • 各元のカーブと対応するオフセット カーブの差を測定します。10サンプル程度試してみて、うまくいくかどうかを確認します。
  • 許容範囲外のオフセットについては、(ベジエに deCastlejau アルゴリズムを使用して) 細分化して反復します。

私はオフセットを実装していません (私が使用しているカーネルには既にオフセットがあるため)。

于 2010-11-12T05:06:05.363 に答える