a common solution for NURBS-intersection

Dear All,

I guess some of you may feel interested about this solution, and some may ask about, does the intersection points locating problem really so important? Yes, without knowing the exact X points in between two NURBS, the NURBS boolean operation can not work, the CSG calculation of curved objects can not be reached. It is the key to evolve modern CAD software into the real automatic-CAD of tomorrow. Without it the dream will never be achieved. Welcome to visit my NURBS site to find out the reason why?

Btw, if you need to understand more about the insight of NURBS, welcome to take a review on my Demo Prograsm, it may offer you a full view of NURBS outline.

This solution is a sequel of my Bezier-X solution which I posted here before. I wish my solution can be put into real application soon, but it still depends on can I catch the eye of the modern CAD tycoon. Enclosed is a sample piece of data that shows the NURBS-intersection for your review.

Blue NURBS -- Nonuniform, degree: 4,  Ring-mode: OFF;
  Control points:  7;
  P00(327.00, 185.00),  P01(256.00, 110.00),  P02(182.00, 272.00),  P03(369.00, 436.00),  P04(529.00, 274.00),  P05(463.00, 104.00),
  P06(398.00, 188.00)
  Knots vector:  12;
  {    0.00,    3.00,    7.00,   16.00,   20.00,   20.00,   27.00,   35.00,   44.00,   48.00,   50.00,   50.00 }
  Control points of poly-Bezier:  13;
  VALID   (212.797607655502360, 248.473205741626770),  (212.797607655502360, 248.473205741626770),  (212.797607655502360, 248.473205741626770),  (212.797607655502360, 248.473205741626770),
  VALID   (212.797607655502360, 248.473205741626770),  (221.368421052631560, 306.526315789473640),  (290.263157894736820, 366.947368421052600),  (348.784795321637490, 377.121929824561330),
  VALID   (393.176427875243690, 361.144890350877120),  (443.909722222222170, 342.885416666666630),  (476.187499999999940, 290.468750000000000),  (484.401785714285670, 239.861607142857170),
   (479.204028350470590, 204.157782134592990)

Red NURBS -- Nonuniform, degree: 3,  Ring-mode: ON;
  Control points:  7;
  P00(261.00, 374.00),  P01(189.00, 203.00),  P02(494.00, 161.00),  P03(446.00, 360.00),  P04(261.00, 374.00),  P05(189.00, 203.00),
  P06(494.00, 161.00)
  Knots vector:  11;
  {    0.00,    2.00,    2.00,   10.00,   18.00,   23.00,   23.00,   31.00,   39.00,   44.00,   44.00 }
  Control points of poly-Bezier:  13;
  VALID   (265.095238095238070, 237.750000000000000),  (305.190476190476150, 187.000000000000000),  (421.380952380952350, 171.000000000000000),
  VALID   (447.892082276697690, 240.207100591715970),  (464.461538461538450, 283.461538461538450),  (446.000000000000000, 360.000000000000000),
  VALID   (374.846153846153810, 365.384615384615360),  (374.846153846153810, 365.384615384615360),  (374.846153846153810, 365.384615384615360),
  VALID   (374.846153846153810, 365.384615384615360),  (261.000000000000000, 374.000000000000000),  (225.000000000000000, 288.500000000000000),
   (265.095238095238070, 237.750000000000000)

The intersection point(s) of above two NURBS:  4;
  X00(380.370074818105370, 364.811515523455000),  X01(270.666118697363630, 334.165771586616930),  X02(331.272303716507390, 363.767635566008550),
  X03(431.743577052791240, 337.122326037161430)
  The t value(s) of X point(s) of Blue NURBS:  4;
  t00 =  26.511183184541540,  t01 =  22.889199062891056,  t02 =  24.837166471044373,
  t03 =  28.732752313820260
  The t value(s) of X point(s) of Red NURBS:  4;
  t00 =  22.868039368492923,  t01 =  26.460445679206501,  t02 =  24.129595627167884,
  t03 =  21.213377363825987

Enjoy,

Hunt Chang

SolidworksGeneral