[vtk-developers] Class design for spline visualizations

Lin M majcjc at gmail.com
Fri Jun 26 18:09:09 EDT 2015


What confuses me a lot is the different definition of the knot vector. As
in the wiki page "Some modelers that use older algorithms for NURBS
evaluation require two extra knot values for a total of (degree+N+1)
knots". But how can I get 3 2-degree B-spline basis functions N_{0,2},
N_{1,2} and N_{2,2} from the knot vector {0,1,2,3}? From the knot vector
{0,1,2,3}, we can get at most 3 zero-degree B-spline basis functions
N_{0,0}, N_{1,0} and N_{2,0} and then we can only get one 2-degree basis
function N_{0,2}.

The reason why I said the algorithm from the NURBS book would fail is
because it use a loop variable start from kSpan - sMult (kSpan is the id of
the knot span where the insert knot is, and sMult is the current
multiplicity of the insert knot). For the knot vector {0,1,2,3}, if we
insert a new knot 0, the kSpan = 0, sMult = 1 and kSpan - sMult = -1 which
is not correct.

On Fri, Jun 26, 2015 at 4:41 PM, David Thompson <david.thompson at kitware.com>
wrote:

> Hi Lin,
>
> Knot insertion should not fail when a knot is not repeated. Instead, by
> inserting the same knot value multiple times we can convert the control
> polygon to a series of Bézier patches. If you start with a knot vector of
> {0,1,2,3} for a degree 2 curve, then you can insert knots until the knot
> vector is {0,0,0,1,1,1,2,3}. The resulting control points for the knot
> interval [0,1] are a valid Bézier control polygon. You can do the same for
> other knot values to extract Bézier patches for the intervals [1,2] and
> [2,3].
>
>         David
>
>
> > On Jun 26, 2015, at 4:08 PM, Lin M <majcjc at gmail.com> wrote:
> >
> > Hi Dr. Thompson,
> >
> > I have a question about the knot vector and the knot insertion.
> > Currently the method for knot insertion is based on the algorithm from
> the NURBS book where it always assumes that the first value and last value
> in the knot vector repeat p+1 times. This makes the endpoints of the curve
> always coincide with the first and last control points. As you mentioned
> before, the knot vector may not always be like this and in such cases the
> algorithm will fail. Is there any method to deal with this?
> >
> > Best,
> > Lin
> >
> > On Fri, Jun 26, 2015 at 1:06 AM, Lin M <majcjc at gmail.com> wrote:
> > Hi Dr. Thompson,
> >
> > I have added a method in vtkPatchInterpolation to generate triangle
> strips for surfaces. I tested a cylindrical surface patch from the NURBS
> book and I think it's correct.
> >
> > Best,
> > Lin
> >
> > On Thu, Jun 25, 2015 at 7:32 PM, David Thompson <
> david.thompson at kitware.com> wrote:
> > Hi Lin,
> >
> > > Your last message is quite informative. I think it is mainly to
> implement a method in vtkPatchInterpolation which takes in a bezier patch,
> number of samples and ...
> >
> >
> > That would be a great start. Eventually it would be nice to have
> curvature-adapted surfaces, but just accepting a number of samples along
> each axis will be something we need in any event.
> >
> > > ... return a vtkUnstructuredGrid?
> >
> > I would accept a vtkUnstructuredGrid pointer as input and insert into it
> so that it is easy to create one grid with triangles from multiple patches.
> >
> >         David
> >
> >
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://public.kitware.com/pipermail/vtk-developers/attachments/20150626/49be12eb/attachment-0001.html>


More information about the vtk-developers mailing list