我有一些计算贝塞尔曲线长度的代码。我正在尝试为它编写单元测试。但除了琐碎的情况(直线贝塞尔曲线)之外,我不知道长度的任何实际正确值。我在网上查过,找不到任何。
有人有这个信息吗?我正在寻找一个表格的链接,该表格有几行包含四个贝塞尔控制点,然后是一个长度,或者可能在计算长度的绘图程序中创建几个贝塞尔曲线(我尝试使用 blender 和inkscape来获得这些信息,它们非常复杂)。
解决方案。 从 here 下载 pomax 的贝塞尔 javascript 代码,然后在 Web 浏览器中打开此 html:
<html>
<head>
<script src="bezier.js"></script>
</head>
<body>
<script>
curve = new Bezier([4.0, 0.0, 4.0,
4.0, 0.0, 12.0,
16.0, 0.0, 12.0,
16.0, 0.0, 4.0]);
document.write(curve.length());
</script>
</body>
</html>
最佳答案
如果您想要测试实际弧长,请实现 https://github.com/Pomax/bezierjs/blob/gh-pages/lib/bezier.js#L602-604 - 这将根据 Legendre-Gauss quadrature 评估为您提供任意准确的数字(您不必了解它是如何工作的,尽管视频链接向您显示它实际上非常简单。因此,实现它真的很容易)。
另一种选择是依赖于 wolframalpha.com 或 Mathematica ( which is free if you own a Raspberri PI ) 之类的东西:设置随机曲线,并让它们“正确”计算长度,然后将该结果用作单元测试中的引用值。
关于math - 贝塞尔曲线弧长,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31600441/