我想为二次曲线或贝塞尔曲线计算AABB(轴对齐边界框)。
我知道如何做到这一点的唯一方法是评估贝塞尔曲线上的大量点,然后使用这些点来计算AABB。
有更好的方法吗?
答案 0 :(得分:2)
贝塞尔曲线上的大量资源,以及AABB http://pomax.github.io/bezierinfo/#boundingbox的工作示例 对于二次曲线,如果需要,也可以使用导数进行计算。
当封闭形式可用时,始终避免使用迭代方法。
答案 1 :(得分:1)
应该可以通过查找参数形式的曲线导数来寻找最小值和最大值。看看这篇文章:http://nishiohirokazu.blogspot.jp/2009/06/how-to-calculate-bezier-curves-bounding.html
答案 2 :(得分:0)
二次贝塞尔曲线由2个坐标函数组成 - x(t)和y(t)其中。
这些函数可能有最大值或最小值(x'(t)= 0和y'(t)= 0的点),这些点是aabb的边界点。
所以算法是:
顺便说一下:
t(x0,x1,x2)=(x0 - x1)/(x2 - 2 * x1 + x0)
t(y0,y1,y2)=(y0 - y1)/(y2 - 2 * y1 + y0)
您可以在此处找到完整代码:https://github.com/keyten/Graphics2D/blob/Delta/Core/Curve.Math.js#L295