从中风重建曲线

时间:2013-02-12 10:31:49

标签: graphics

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

stroke outline

我在下面添加了SVG表示。目前我的相当粗暴的尝试将是填充曲线并试图变薄直到我得到一条中线。然而,这似乎很脆弱。是否有更好的算法,因为我们有分析轮廓(如线和立方贝塞尔?)

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

1 个答案:

答案 0 :(得分:0)

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

我最好的猜测是,这条曲线是用“斜体”笔“绘制”的,它始终垂直于基本曲线的方向。这是来自inkscape

的roundcaps版本

rounded caps on lines

我现在的策略是:

  1. 找到两个将方向改变180的曲线段(我有代码执行此操作)
  2. 计算直径并将其用作原始曲线的笔划宽度
  3. 从一个半圆开始,沿两条线延伸
  4. 将行解释为(i)矩形(ii)弧左(iii)弧右或(iv)两条线上的弧(更棘手)
  5. 重复直到分析所有组件
  6. 我不知道它是否会奏效,但我有理由相信。我将在飞机旅行中写这篇文章以获得乐趣。