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

前端之家收集整理的这篇文章主要介绍了廉价的方法计算立方贝塞尔长度前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
一种立方贝塞尔长度分析解决方
似乎不存在,但并不意味着
编码便宜的解决方案不存在.我的意思是在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&C++相关文章