NRBKNTINS: Insert a single or multiple knots into a NURBS curve,
surface or volume.
Calling Sequence:
icrv = nrbkntins(crv,iuknots);
isrf = nrbkntins(srf,{iuknots ivknots});
ivol = nrbkntins(vol,{iuknots ivknots iwknots});
INPUT:
crv : NURBS curve, see nrbmak.
srf : NURBS surface, see nrbmak.
srf : NURBS volume, see nrbmak.
iuknots : Knots to be inserted along U direction.
ivknots : Knots to be inserted along V direction.
iwknots : Knots to be inserted along W direction.
OUTPUT:
icrv : new NURBS structure for a curve with knots inserted.
isrf : new NURBS structure for a surface with knots inserted.
ivol : new NURBS structure for a volume with knots inserted.
Description:
Inserts knots into the NURBS data structure, these can be knots at
new positions or at the location of existing knots to increase the
multiplicity. The knot multiplicity can be increased up to the order of
the spline. Any further increase of the multiplicity will generate zero
basis functions, but not cause any error in the code.
This function use the B-Spline function bspkntins, which interfaces to
an internal 'C' routine.
Examples:
Insert two knots into a curve, one at 0.3 and another
twice at 0.4
icrv = nrbkntins(crv, [0.3 0.4 0.4])
Insert into a surface two knots as (1) into the U knot
sequence and one knot into the V knot sequence at 0.5.
isrf = nrbkntins(srf, {[0.3 0.4 0.4] [0.5]})
See also:
bspkntins
Note:
The knot multiplicty can be increased beyond the order of the spline
without causing errors, but the added basis functions will be equal to
zero.
Copyright (C) 2000 Mark Spink, 2010 Rafael Vazquez
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
The following code
crv = nrbtestcrv;
plot(crv.coefs(1,:),crv.coefs(2,:),'bo')
title('Knot insertion along test curve: curve and control polygons.');
hold on;
plot(crv.coefs(1,:),crv.coefs(2,:),'b--');
nrbplot(crv,48);
icrv = nrbkntins(crv,[0.125 0.375 0.625 0.875] );
plot(icrv.coefs(1,:),icrv.coefs(2,:),'ro')
plot(icrv.coefs(1,:),icrv.coefs(2,:),'r--');
hold off
Produces the following figure
| Figure 1 |
|---|
![]() |
Package: nurbs