[vtk-developers] Triangular patch interpolation

David Thompson david.thompson at kitware.com
Wed Aug 12 10:47:55 EDT 2015


Hi Lin,

> I have finished the point inversion and projection algorithm for both 1-d, 2-d and 3-d NURBS.
> We can turn to more dedicated algorithms now.

I think that a better use of the remaining time would be to clean up and merge your work into VTK. You have made great progress and it looks really good. It would be better to polish it so it is easy to maintain and get it accepted than to push for contouring and be left with something that is not tested well enough to be maintained as VTK changes. That way you or another GSoC student can continue things next summer.

It has been my experience that the only way to ensure it is maintained is to make sure it is extensively tested so that when a change to VTK is proposed, the developer making the change gets immediate feedback that the change requires work on the spline classes. So, I propose doing the following:

1. There are some style changes that need to be made. I'll push some changes off your branch to sampling/vtk, but to get started:
   a. There is trailing whitespace at the ends of lines in many files which are disallowed by our pre-merge scripts.
   b. Method names should be spelled out, so "Curv," "Surf," and "Volm" should become "Curve," "Surface," and "Volume." I know it is nice for names to have the same length, but it is nicer for other developers to be able to predict the names of methods across the entire toolkit. :-)

2. Testing should be more exhaustive testing to make sure that changes to VTK don't break things. Right now only interpolation is tested at all (and there is a lot of commented-out code in that test which should probably be removed). Other tests should include, for example,
  a. simplicial (triangular and tetrahedral) patch interpolation (you can do this with an image-based test and/or by checking that numeric values are within a tolerance of an analytical solution,
  b. point inversion for rectangular and simplicial patches
  c. derivative computation
  d. the NURBS adaptor should be tested with several shapes whose patches can be computed

3. Every class should have documentation that covers its purpose, its intended lifecycle (how should it be used, what methods must be called before others, etc.). The way field data is used to hold NURBS knot vectors should be documented and should have an example data file (which should be used in an image test to verify that it continues to work).

	Thanks,
	David

> On Sun, Aug 9, 2015 at 2:47 PM, Lin M <majcjc at gmail.com> wrote:
> Hi Dr. Thompson,
> 
> I have pushed new methods to compute point inversion and projection to gitlab.
> It took longer time than I expected. It would be really helpful if you could review the code a little bit. Thanks!
> 
> Best,
> Lin
> 
> On Mon, Aug 3, 2015 at 10:50 AM, David Thompson <david.thompson at kitware.com> wrote:
> Hi Lin,
> 
> Yes, that is correct. Inserting knot values does not change the polynomial degree or shape, it just adds control points so that the weights are uniform (as required by the Bézier basis). So, the underlying parameterization is unchanged... it just has more piecewise segments.
> 
>     David 
> 
> 
> 
> On Aug 2, 2015, at 22:38, Lin M <majcjc at gmail.com> wrote:
> 
>> Hi Dr. Thompson,
>> 
>> I have a question about the inversion and projection. Currently, we evaluate the NURBS by inserting knots and making it into Bezier forms. My question is that if I evaluate u = 0.2 in original knot vector [0,1,2,3], would it be the same to evaluate u = 0.2 in the new knot vector which is a bezier form?
>> 
>> Best,
>> Lin
>> 
>> On Mon, Jul 27, 2015 at 1:26 AM, Lin M <majcjc at gmail.com> wrote:
>> Hi Dr. Thompson,
>> 
>> I have added new method vtkPatachInterpolation::InterpolateOnSimplicialPatch() and pushed to gitlab.
>> 
>> I'm now working on the point inversion part.
>> 
>> Best,
>> Lin
>> 
>> On Sun, Jul 26, 2015 at 8:05 PM, David Thompson <david.thompson at kitware.com> wrote:
>> Hi Lin,
>> 
>> How is triangular/tetrahedral patch interpolation going? They will be a basic building block of the contouring and cutting algorithms. By identifying points on edges, edges on surfaces, and surfaces in volumes that take on a single value, a single patch can be decomposed into sections that are inside, outside, or on an isosurface. Not all of these pieces can be expressed as brick patches, but they can be expressed as simplicial patches.
>> 
>>     David
>> 
>> 
> 
> 



More information about the vtk-developers mailing list