我有这个: 一组边,边包含:
指向与边相邻的两个区域的指针(开始时为null)
Class Edge { 矢量邻居[2]; 地区*地区[2]; BezierPath几何; }
平面中没有相交的边 我想找到由边缘包围的平面上的所有非重叠区域
例如: http://i.stack.imgur.com/s31QG.png
你知道这样做的算法吗?
答案 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)
值,则会告诉您三次贝塞尔曲线t0
和B(U, t)
的所有交点。