从连接的贝塞尔曲线路径图中查找所有非重叠区域

时间:2014-06-27 17:10:54

标签: algorithm vector graph region bezier

我有这个: 一组边,边包含:

  • 锥形贝塞尔曲线矢量(几何)
  • 一组指向每端neihboor边缘的指针
  • 指向与边相邻的两个区域的指针(开始时为null)

    Class Edge {     矢量邻居[2];     地区*地区[2];     BezierPath几何; }

平面中没有相交的边 我想找到由边缘包围的平面上的所有非重叠区域

例如: http://i.stack.imgur.com/s31QG.png

你知道这样做的算法吗?

1 个答案:

答案 0 :(得分:0)

我假设通过" Bezier曲线"你的意思是"立方贝塞尔曲线。"

三次贝塞尔曲线的参数方程如下:

B(U, t) = U * w(t)           (2x1 column vector)

U = [U1 U2 U3 U4]            (2x4 matrix)

       [    (1-t)^3      ]
w(t) = [3 * (1-t)^2 * t  ]   (4x1 column vector)
       [3 * (1-t)   * t^2]
       [              t^3]

U的四个列向量是一条三次贝塞尔曲线上的四个连续点。

给定两个三次贝塞尔曲线B(U, t)B(V, t),您需要确定t0中是否存在t1[0,1],{{1} }}。那是你的交叉点。

要解决这个等式,您需要求解两个三次,二次变量多项式系统的根。如果您查看这些根中的所有不同B(U, t0) = B(V, t1)值,则会告诉您三次贝塞尔曲线t0B(U, t)的所有交点。