0

(PDF) グラフィックスから曲線を再構築しようとしています。これらは、曲線の輪郭 (「ストローク」) で構成されます。典型的な例 (X が単調、Y がハンプを超えて増加し、その後低下する) が示されています。元のストローク幅は約 1.0 のように見えますが、これは二次的な問題です。

ストロークアウトライン

以下に SVG 表現を含めます。現在、私のかなり粗雑な試みは、曲線を塗りつぶし、正中線が得られるまで細くしようとすることです. しかし、これは壊れやすいようです。分析的なアウトラインがあることを考えると、より良いアルゴリズムはありますか (線と 3 次ベジエとして?)

<svg xmlns="http://www.w3.org/2000/svg" >
  <g transform="scale(25., 25.)">
    <g transform="translate(-110., -235.)">
      <path fill="none" stroke="red" stroke-width=".05" 
        d="M114.06 242.46 L114.12 242.28 L114.18 242.16 L114.3 242.04 C114.36 241.98 114.36 241.92 114.42 241.92 
L114.48 241.86 C114.54 241.8 114.66 241.74 114.72 241.74 L114.78 241.74 C114.9 241.68 115.02 241.68 115.08 241.74 
L115.2 241.8 C115.26 241.8 115.32 241.8 115.38 241.86 L115.44 241.92 L115.5 241.92 L115.2 241.86 L115.38 241.86 
C115.44 241.86 115.5 241.86 115.56 241.86 L115.62 241.92 C115.74 241.92 115.8 241.92 115.86 241.98 L115.92 242.04 
C115.98 242.04 116.04 242.1 116.1 242.22 L116.16 242.22 C116.16 242.28 116.16 242.34 116.22 242.4 L116.28 242.52 
L116.34 242.7 L116.34 242.94 L116.4 243.18 L116.52 243.66 C116.58 244.02 116.34 244.32 116.04 244.44 
C115.68 244.5 115.32 244.26 115.26 243.9 L115.2 243.48 L115.14 243.24 L115.08 243.06 L115.08 242.94 
L115.02 242.82 L115.08 242.94 L115.02 242.88 L115.2 243.06 L115.14 243.0 L115.38 243.12 L115.26 243.12 
L115.5 243.12 L115.2 243.12 C115.08 243.12 115.02 243.12 114.9 243.06 L114.78 242.94 L114.66 242.88 
L114.84 243.0 L114.72 242.94 L115.08 242.94 L115.02 242.94 L115.26 242.88 L115.2 242.88 L115.32 242.76 
L115.32 242.82 L115.2 243.0 C115.08 243.3 114.72 243.42 114.36 243.3 C114.06 243.18 113.94 242.82 114.06 242.46 Z
      "/>
    </g>
  </g>
</svg>
4

1 に答える 1

0

[コメントや回答がないので、自分の質問に答える]

私の推測では、この曲線は、基本曲線の方向に常に垂直な「イタリック」ペンで「描画」されたと思います。これがinkscapeのroundedcapsバージョンです

ライン上の丸いキャップ

私の戦略は今です:

  1. 方向を180だけ変更する2つのカーブセグメントを見つける(これを行うためのコードがあります)
  2. 直径を計算し、それを元の曲線のストローク幅として使用します
  3. 1つの半円から開始し、両方の線に沿って伸びます。
  4. 線を(i)長方形(ii)円弧-左(iii)円弧-右または(iv)両方の線上の円弧として解釈します(トリッキー)
  5. すべてのコンポーネントが分析されるまで繰り返します

それがうまくいくかどうかはわかりませんが、かなり自信があります。私は楽しみのために飛行機の旅でこれを書きます。

于 2013-02-14T23:49:40.833 に答える