首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >计算Bezier AABB

计算Bezier AABB
EN

Stack Overflow用户
提问于 2011-03-27 17:14:32
回答 3查看 578关注 0票数 4

我想计算二次曲线或bezier曲线的AABB (轴对齐边界框)。

我知道的唯一方法是计算bezier曲线上的大量点,然后使用这些点来计算AABB。

有没有更好的方法?

EN

回答 3

Stack Overflow用户

发布于 2015-07-23 06:12:08

关于贝塞尔曲线的大量资源,以及用于二次曲线的AABB http://pomax.github.io/bezierinfo/#boundingbox的工作示例,如果你需要它,也可以使用导数计算它。

当封闭形式可用时,请始终避免使用迭代方法。

票数 2
EN

Stack Overflow用户

发布于 2011-03-27 17:22:25

这应该可以通过寻找参数形式的曲线的导数的最小值和最大值来实现。看看这篇文章:http://nishiohirokazu.blogspot.jp/2009/06/how-to-calculate-bezier-curves-bounding.html

票数 1
EN

Stack Overflow用户

发布于 2017-11-10 19:31:49

二次bezier曲线由两个坐标函数- x(t)和y(t)组成,其中。

这些函数可以有最大值或最小值( x'(t) =0和y'(t) =0的点),这些点是aabb的边界点。

假设x0,y0,x1,y1,x2,y2是已知的,当x'(t) =0和y'(t) =0时计算t(x0,x1,x2)和t(y0,y1,y2),并检查它们是否为>= 0和<= 1。如果它们是二次贝塞尔曲线的点。

  • 取第一个点和最后一个点。现在你有4个点(或者更少),用它们来计算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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5448271

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档