X of Rational NURBS

Since I was thinking to develop a way to simulate the complicate curves or curves with unknown formula by NURBS for a long time, but I never get it done for the reason that I was not ready yet. Till last year, I finally get most of things ready and the necessary functions done.

Through this demo, I am happily to show you this idea is really possible, and the only tool you need is a logical way to simulate those curves with NURBS.

Speak to the truth, currently I can use such a method to solve most of the case of Rational B-Spline that I generated randomly. But there are still two things need to be improved, one is the similarity of the simulating curve as I mentioned, and the other is how to simulate any curves with NURBS, cause I am actually using poly-Bezier now.

You may ask “what are you talking about, NURBS vs. poly-Bezier?

Instead of answer this question, let me draw you a puzzle below,

If you know how to fill the figures of k4(?), k5(?) and k6(n) correctly, then the Blue simulating curve is a NURBS. Otherwise, it is just a poly-Bezier.

Ex-01 degree 3 * degree 3

Blue Curve: degree 3, control points,

P0(265.00, 402.00), P1(205.00, 229.00), P2(551.00, 187.00), P3(423.00, 422.00);

Weight: W0(62.0), W1( 7.0), W2(97.0), W3(39.0);

Red Curve: degree 3, control points,

P0(312.00, 147.00), P1(167.00, 345.00), P2(647.00, 411.00), P3(352.00, 204.00);

Weight: W0(46.0), W1(15.0), W2(53.0), W3(51.0);

The Intersection point(s) of these two curves:

X00(407.149715643481040, 284.608376070819300), X01(474.371880960582640, 325.843679374461430),

X02(483.512800884379890, 307.786079817660380); X03(436.177642405001280, 266.051539973459400);

Blue Curve's t value(s):

t00 = 0.337843014608718, t01 = 0.915350193952074, t02 = 0.887853262250667;

t03 = 0.391914848435635;

Red Curve's t value(s):

t00 = 0.343398260819970, t01 = 0.501047244973449, t02 = 0.753345570366093;

t03 = 0.880990600832850;

Ex-02 degree 3 * degree 3

Blue Curve: degree 3, control points,

P0(193.00, 363.00), P1(531.00, 469.00), P2(364.00, 60.00), P3(584.00, 284.00);

Weight: W0(58.0), W1( 9.0), W2(51.0), W3(22.0);

Red Curve: degree 3, control points,

P0(245.00, 429.00), P1(244.00, 39.00), P2(609.00, 172.00), P3(394.00, 436.00);

Weight: W0(10.0), W1(63.0), W2(23.0), W3(43.0);

The Intersection point(s) of these two curves:

X00(245.293215125020570, 335.304661086141780), X01(374.049343230813920, 173.970650285494170);

Blue Curve's t value(s):

t00 = 0.194735763674917, t01 = 0.541835311036428;

Red Curve's t value(s):

t00 = 0.016401744585033, t01 = 0.593201883267881;

Ex-03 degree 3 * degree 3

Blue Curve: degree 3, control points,

P0(255.00, 116.00), P1(549.00, 441.00), P2(134.00, 373.00), P3(536.00, 105.00);

Weight: W0( 3.0), W1(59.0), W2(89.0), W3(61.0);

Red Curve: degree 3, control points,

P0(151.00, 406.00), P1(563.00, 331.00), P2(597.00, 131.00), P3(143.00, 134.00);

Weight: W0(93.0), W1(84.0), W2(65.0), W3(28.0);

The Intersection point(s) of these two curves:

X00(326.114096186509070, 361.360663276711650), X01(427.085725749782910, 315.463082374222950),

X02(274.021561563420280, 137.072013187546420); X03(446.081761200937650, 168.362233007690180);

Blue Curve's t value(s):

t00 = 0.507321663956033, t01 = 0.025774999588745, t02 = 0.001172134962433;

t03 = 0.937383231667710;

Red Curve's t value(s):

t00 = 0.185587233732824, t01 = 0.342278852058860, t02 = 0.948041317100675;

t03 = 0.804688102145506;