Cubic Bezier curve has been invented over fifty years, but its usage was serious limited as there is no effective way to solve its intersection points problem either in between curve-to-curve or within a curve itself.

I have worked out a fast, precise and by theory solution to find out all of the INTERSECTION points. I wonder if AMD is interested to license this solution to enlarge her code library.

Enclosed are a picture of cubic Bezier curves’ intersection points and certain data related with the two curves for any person who feels interested to verify their corectness.

Hunt Chang

Ps. my solution is direct and by theory, not an approach of approximation like bisection or bez-clipping or others.

Blue Curve control points: P0 (504.000000, 360.000000), P1 (111.000000, 282.000000), P2 (753.000000, 368.000000), P3 (414.000000, 288.000000);

Inflection point(s) at (436.247939291, 324.686418634); t[0] = 0.493948130;

Red Curve control points: P0 (434.000000, 410.000000), P1 (662.000000, 60.000000), P2 (175.000000, 558.000000), P3 (523.000000, 263.000000);

Self Intersection point at (497.178713708, 284.716993708); t[1] = 0.219641391, t[2] = 0.973625079;

The Intersection point(s) of those two curves:

(469.284632332, 352.984190733), (484.205333013, 325.417398792), (491.920199738, 308.486201692), (455.137674488, 298.118444831);

(424.123514673, 324.385358688), (408.647917012, 339.640827151), (447.698139089, 324.971794242), (423.836163179, 343.202129023);

(474.615957980, 303.350537381);

Blue Curve's t value(s):

t[0] = 0.032102241, t[1] = 0.614547187, t[2] = 0.892283373, t[3] = 0.953489452;

t[4] = 0.464196010, t[5] = 0.110969242, t[6] = 0.521571699, t[7] = 0.086657188;

t[8] = 0.924926429;

Red Curve's t value(s):

t[0] = 0.063739442, t[1] = 0.105845537, t[2] = 0.139708529, t[3] = 0.428695394;

t[4] = 0.532211221, t[5] = 0.592534208, t[6] = 0.909201381, t[7] = 0.864858712;

t[8] = 0.947179525;

Guess I might be jumping too fast to cubic intersection points directly. Here is another quadratic Bezier curves' intersection example. Anyone feel interested may use Excel spreadsheet for verification, it is quick and easy to do than the other tool.

Hunt Chang

Blue Curve control points: P0 (459.000000, 478.000000), P1 (238.000000, 211.000000), P2 (449.000000, 356.000000);

Red Curve control points: P0 (435.000000, 226.000000), P1 (271.000000, 522.000000), P2 (466.000000, 444.000000);

The Intersection point(s) of those two curves:

(438.959511410, 453.539658178), (370.941994513, 363.539928912), (388.652300986, 318.014288962);

Blue Curve's t value(s):

t[0] = 0.047550353, t[1] = 0.271012112, t[2] = 0.826003935;

Red Curve's t value(s):

t[0] = 0.925565288, t[1] = 0.282887514, t[2] = 0.174713879;