Graphics 从曲线的笔划重建曲线

Graphics 从曲线的笔划重建曲线,graphics,Graphics,我正在尝试从(PDF)图形重建曲线。这些包括曲线轮廓(“笔划”)。给出了一个典型示例(X、Y在驼峰上单调增加,然后下降)。原始笔划宽度似乎约为1.0,但这是次要的 我在下面介绍了SVG表示。目前,我相当粗糙的尝试是填满曲线,并尝试变薄,直到我得到一条中线。然而,这似乎很脆弱。如果我们有分析轮廓(如直线和三次贝塞尔曲线),是否有更好的算法 [回答自己的问题,因为没有评论或答案] 我最好的猜测是这条曲线是用斜体笔画的,斜体笔总是垂直于基本曲线的方向。这是inkscape的roundedcaps版本

我正在尝试从(PDF)图形重建曲线。这些包括曲线轮廓(“笔划”)。给出了一个典型示例(X、Y在驼峰上单调增加,然后下降)。原始笔划宽度似乎约为1.0,但这是次要的

我在下面介绍了SVG表示。目前,我相当粗糙的尝试是填满曲线,并尝试变薄,直到我得到一条中线。然而,这似乎很脆弱。如果我们有分析轮廓(如直线和三次贝塞尔曲线),是否有更好的算法


[回答自己的问题,因为没有评论或答案]

我最好的猜测是这条曲线是用斜体笔画的,斜体笔总是垂直于基本曲线的方向。这是inkscape的roundedcaps版本

我现在的策略是:

  • 找到两条改变方向180度的曲线段(我有这样做的代码)
  • 计算直径并将其用作原始曲线的笔划宽度
  • 从一个半圆开始,沿引出的两条线延伸
  • 将直线解释为(i)矩形(ii)弧左(iii)弧右或(iv)两条直线上的弧(更复杂)
  • 重复上述步骤,直到分析所有部件
  • 我不知道这是否有效,但我有相当的信心。为了好玩,我将在飞机旅行中写这篇文章

    <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>