Cancel
Showing results for
Did you mean:
Highlighted

# A common solution of NURBS-Intersection

Experimenter

Dear All,

I believe many of you are familiar with NURBS, so you know there is only one known algorithm to calculate the point of NURBS curve, which is De Boor' algorithm or so called Basis function. But if I tell you I have developed the second algorithm, which is my Knots-Equation and it is easier to understand and faster in execution. May be you won't believe me, it is ok, I like skeptics. If you doubt about then welcome to visit my NURBS-X site to review the detail.

Enclosed is a sample piece of intersection data for two NURBS curves.

Blue NURBS -- Nonuniform, degree: 3,  Ring-mode: ON;
Control points:  10;
P00(157.00, 186.00),  P01(306.00, 326.00),  P02(484.00, 180.00),  P03(398.00, 113.00),  P04(350.00, 219.00),  P05(276.00, 219.00),
P06(234.00, 128.00),  P07(157.00, 186.00),  P08(306.00, 326.00),  P09(484.00, 180.00)
Knots vector:  14;
{    0.00,    1.00,    1.00,    4.00,   11.00,   18.00,   20.00,   25.00,   27.00,   27.00,   30.00,   37.00,   44.00,   46.00 }
Control points of poly-Bezier:  22;
VALID   (242.413529411764670, 249.670588235294080),  (337.411764705882380, 300.235294117647020),  (410.705882352941160, 240.117647058823540),
VALID   (428.540441176470610, 195.402573529411770),  (446.375000000000000, 150.687500000000000),  (408.750000000000000, 121.375000000000000),
VALID   (381.722222222222230, 156.083333333333340),  (374.000000000000000, 166.000000000000000),  (367.142857142857110, 181.142857142857140),
VALID   (357.546485260770960, 191.959183673469400),  (333.555555555555540, 219.000000000000000),  (292.444444444444460, 219.000000000000000),
VALID   (259.269841269841270, 172.571428571428560),  (246.000000000000000, 154.000000000000000),  (234.000000000000000, 128.000000000000000),
VALID   (203.200000000000020, 151.199999999999990),  (203.200000000000020, 151.199999999999990),  (203.200000000000020, 151.199999999999990),
VALID   (203.200000000000020, 151.199999999999990),  (157.000000000000000, 186.000000000000000),  (201.699999999999990, 228.000000000000000),
(242.413529411764670, 249.670588235294080)
Red NURBS -- Nonuniform, degree: 3,  Ring-mode: ON;
Control points:  8;
P00(227.00, 276.00),  P01(383.00, 275.00),  P02(416.00, 187.00),  P03(313.00, 102.00),  P04(226.00, 174.00),  P05(227.00, 276.00),
P06(383.00, 275.00),  P07(416.00, 187.00)
Knots vector:  12;
{    0.00,    5.00,    9.00,   16.00,   18.00,   25.00,   31.00,   35.00,   42.00,   44.00,   51.00,   57.00 }
Control points of poly-Bezier:  16;
VALID   (388.895833333333310, 245.089743589743590),  (397.437500000000000, 236.500000000000000),  (401.562500000000000, 225.500000000000000),
VALID   (401.718981481481480, 214.425925925925920),  (402.266666666666710, 175.666666666666660),  (354.199999999999990, 136.000000000000000),
VALID   (312.725791855203620, 133.656108597285050),  (277.176470588235300, 131.647058823529390),  (246.470588235294090, 157.058823529411770),
VALID   (234.399999999999980, 188.823529411764700),  (226.352941176470610, 210.000000000000000),  (226.588235294117620, 234.000000000000000),
VALID   (244.192513368983950, 249.160839160839150),  (275.000000000000000, 275.692307692307680),  (359.000000000000000, 275.153846153846130),
(388.895833333333310, 245.089743589743590)
The intersection point(s) of above two NURBS:  6;
X00(391.741065814759050, 241.945760041614790),  X01(250.238446689743630, 253.611509308257470),  X02(291.456015179508770, 266.961110455702620),
X03(337.581736798964930, 266.661100999969340),  X04(376.502361440088410, 163.615362333590720),  X05(251.275042101980320, 160.955053595450490),
The t value(s) of X point(s) of Blue NURBS:  6;
t00 =   8.588428315062398,  t01 =   4.193433226472892,  t02 =   5.261353630637577,
t03 =   6.600804048739494,  t04 =  18.458665946356437,  t05 =  25.401214603116742,
The t value(s) of X point(s) of Red NURBS:  6;
t00 =  16.236465420239810,  t01 =  35.416782725333483,  t02 =  37.448628671577254,
t03 =  39.353349148524508,  t04 =  21.254748614190085,  t05 =  29.078720860262891,

Hunt Chang