从.svg

时间:2019-06-11 15:55:53

标签: matlab svg bezier curve adobe-illustrator

我正在尝试使用Matlab从.svg文件绘制Bezier曲线。

我已经在文本编辑器中打开了.svg。我要绘制的线条之一是:<path fill="none" stroke="#000000" stroke-miterlimit="10" d="M117.125,310.375c0-77.729,80.738-140.625,180.515-140.625"/>

如果我理解正确,则起点是(x,y)(117.125,310.375),第一个控制点是(0,-77.729),第二个控制点是(80.738,-140.625),终点是点是(180.515,-140.625)。但是,这似乎不正确,因为我得到的输出与实际曲线相差甚远。

外观: matlab output

外观如何:

Web browser output

起点和终点都没问题,但是控制点似乎不对... Matlab绘制了正确的点,我已经检查了它们(轴可能看起来有些怪异,但这是正确的)

我正在使用Mathworks(https://blogs.mathworks.com/graphics/2014/10/13/bezier-curves/)中的代码。它需要起点pt1,控制点pt2和pt3以及终点pt4。

代码有效,问题似乎出在点的坐标上。 我尝试在在线.svg编辑器中输入上面的坐标(它仅支持整数,因此此处的每个坐标都是正数,控制点不应“拉”太多曲线,但输出与通过MatLab):http://www.useragentman.com/tests/textpath/bezier-curve-construction-set.html#path=M%20297%2C%20169%20C%2058%2C%200%2C%2098%2C%2077%2C%2098%2C%20192&imageURL=http://www.useragentman.com/tests/textpath/images/grid.png

这是用Illustrator CS6创建的整个文件:

    <?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 16.0.4, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
     width="595.28px" height="841.89px" viewBox="0 0 595.28 841.89" enable-background="new 0 0 595.28 841.89" xml:space="preserve">
<line fill="none" stroke="#000000" stroke-miterlimit="10" x1="116.083" y1="608.292" x2="117.125" y2="310.375"/>
<path fill="none" stroke="#000000" stroke-miterlimit="10" d="M117.125,310.375c0-77.729,80.738-140.625,180.515-140.625"/>
<path fill="none" stroke="#000000" stroke-miterlimit="10" d="M297.64,169.75c58.959,0,98.652,77.535,98.652,192.708"/>
<line fill="none" stroke="#000000" stroke-miterlimit="10" x1="396.292" y1="362.458" x2="387.958" y2="653.083"/>
</svg>

我真的希望有人可以帮助我。我是.svg的新手

1 个答案:

答案 0 :(得分:0)

感谢@Paul LeBeau提供的链接。事实证明“ .svg”区分大小写,而C不是c ...您每天都在学习。在发布之前,我寻求帮助的网站没有提及这一点。

在这种情况下,

2、3和4都相对于1。我在脚本中添加了几行代码,以便2 = 1 + 2相对,3 = 1 + 3相对和4 = 1 + 4相对,并且有效!

Finished test piece

现在,我终于可以清理我的代码,以同时绘制线条和路径并绘制我的赛车线条。

注意:我知道紫色曲线的点是相反的。这是由于Illustrator无法在不切换点的情况下“沿相反方向”绘制曲线...