【发布时间】:2019-06-11 15:55:53
【问题描述】:
我正在尝试使用 Matlab 从 .svg 文件中绘制贝塞尔曲线。
我在文本编辑器中打开了 .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画的点正确,我检查过了(轴可能看起来有点怪,但是是正确的)
我正在使用来自 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 的新手
【问题讨论】:
-
我不小心给出了错误的 matlab 图,所以起点和终点与我帖子中的不匹配。对此感到抱歉。
-
Matlab 图形图像已更新。但问题仍然存在。
-
我很抱歉对你有点暴躁,但我们看到很多这样的问题。在您开始制作屏幕截图和编译这篇文章之前,您是否考虑过阅读 SVG 规范?如果你有,你会节省很多时间。它有很大一部分是关于 path definitions 如何工作的。当您阅读该部分时,您的贝塞尔曲线为什么不起作用的答案几乎立即显而易见。
标签: matlab svg bezier curve adobe-illustrator