代码之家  ›  专栏  ›  技术社区  ›  drawnonward

从锚点到贝塞尔曲线的最大距离是多少?

  •  1
  • drawnonward  · 技术社区  · 14 年前

    给定具有以下特性的三次贝塞尔曲线p0、p1、p2、p3:

    p1和p2都在p0和p3形成的直线的同一侧。
    p2可以投影到由p0和p3形成的线段上,但p1不能。

    距离p3最远的曲线上的点的t值是多少?

    这是一张带有 example curve . 曲线在左侧凸起,因此曲线上有一个点距离p3远于p0。

    我找到了这个参考资料 minimum distance 从任意点到曲线。试错也是解决最大距离的唯一方法吗?点是曲线上的锚有什么区别吗?

    谢谢

    2 回复  |  直到 14 年前
        1
  •  2
  •   brainjam    14 年前

    本文给出了三次bezier曲线的公式 wiki article . 使用简单的微积分,你可以找到切线的公式 参数t处曲线的'(t)。

    曲线的最远点 以切线为特征 '(t)垂直于矢量 (t) .

    所以你需要找到点积的t值 t(t) (t) = 0。

    现在,你正在求解t中的一个五次方,所以准备做一些根查找。我通常希望在区间[0,1]中有一个根,但我假设 可能有多个根(在这种情况下,您可以选择距离最大的根)。

        2
  •  1
  •   tfinniga    14 年前

    好吧,界限很容易计算。只是到凸面外壳的最大距离。

    如果你在寻找一个精确的答案,那么你就必须做一个搜索。