廉价的方法计算立方贝塞尔长度

一种立方贝塞尔长度分析解决方
似乎不存在,但并不意味着
编码便宜的解决方案不存在.我的意思是在50-100 ns(或更少)的范围内.

有人知道这样吗?也许分为两类:

1)较少的错误,如1%,但更慢的代码.
2)更多错误如20%但更快?

我扫描谷歌有点,但它没有
找到任何看起来像一个很好的解决方案.只有N个细分的细分
并且总和N sqrt – 太慢以获得更高的精度,
并且对于2或3段可能太不准确.

有更好的吗?

解决方法

一个选择是将弧长估计为和弦和控制网之间的平均值.在实践中:
Bezier bezier = Bezier (p0,p1,p2,p3);

chord = (p3-p0).Length;
cont_net = (p0 - p1).Length + (p2 - p1).Length + (p3 - p2).Length;

app_arc_length = (cont_net + chord) / 2;

然后,您可以将样条曲线段递归分割成两段,并计算弧长达到收敛.我测试了自己,实际上收敛得很快.我从forum获得了这个想法.

相关文章

本程序的编译和运行环境如下(如果有运行方面的问题欢迎在评...
水了一学期的院选修,万万没想到期末考试还有比较硬核的编程...
补充一下,先前文章末尾给出的下载链接的完整代码含有部分C&...
思路如标题所说采用模N取余法,难点是这个除法过程如何实现。...
本篇博客有更新!!!更新后效果图如下: 文章末尾的完整代码...
刚开始学习模块化程序设计时,估计大家都被形参和实参搞迷糊...