algorithm - Find all non-overlapping regions from a graph of connected bezier paths -


i have this: set of edges, edge contains:

  • a vector of conected bezier curves (the geometry)
  • a set of pointers neihboor edges on each end
  • pointers 2 regions adjacent edge ( null @ begining)

    class edge{ vector neighbors[2]; region* regions[2]; bezierpath geometry; }

there no intersecting edges in plane want find non-overlapping regions on plane surrounded edges

example: http://i.stack.imgur.com/s31qg.png

do know algorithm doing that?

i'll assume "bezier curve" mean "cubic bezier curve."

the parameter equation cubic bezier curve follows.

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] 

the 4 column vectors of u 4 consecutive points on 1 of cubic bezier curves.

given 2 cubic bezier curves b(u, t) , b(v, t), want determine whether there exist t0 , t1 in [0,1] such b(u, t0) = b(v, t1). intersection points.

to solve equation, you'll need solve roots of system of 2 3rd-degree, 2-variable polynomials. if @ distinct t0 values among roots, tell intersection points cubic bezier curves b(u, t) , b(v, t).


Comments

Popular posts from this blog

javascript - RequestAnimationFrame not working when exiting fullscreen switching space on Safari -

Python ctypes access violation with const pointer arguments -