获得贝塞尔曲线的边界

时间:2017-02-08 10:34:24

标签: math language-agnostic bezier curve boundary

我有点列表和控制点列表来绘制贝塞尔曲线。 请让我知道如何计算贝塞尔曲线的边界矩形。

var pointsList = [CGPoint(34, 23), ... , CGPoint(23, 85)]
var controlPoints = [CGPoint(45, 34), ..., CGPoint(55, 99)]

enter image description here

1 个答案:

答案 0 :(得分:2)

通常不是真正的难题,涵盖在http://pomax.github.io/bezierinfo/#boundingbox

  1. Compute the x and y derivatives非常容易来做,
  2. 两个衍生品的
  3. Find all roots(衍生物= 0),让我们称之为集合r {x}和r {y},然后
  4. 为这些根计算相应的值集bezier {x}和bezier {y}。然后,
  5. 您的边界框的角由这些集中的最低和最高值min / max值定义。
  6. 在此,如果您使用高阶贝塞尔曲线,则只有第2步可能有点棘手。一旦你的曲线由四个以上的点组成,你就不能使用符号数学来找到根,并且它更容易通过衍生曲线运行并看到结果坐标的值接近于将它们视为近似根。

    你的图形看起来只是一系列连接的三次贝塞尔曲线,在这种情况下,根发现很容易(衍生物将是二次曲线,你学习如何找到高中使用的根) the quadratic equation),方框程序只是"计算每个三次曲线部分的边界框,当你完成时,完整的边界框只需使用所有单个框中的最小/最大值"。