[vtkusers] Curve / Equal Subdivision

Jean-Hugues Royer jhroyer at joher.com
Thu Jul 12 11:32:40 EDT 2012


Yes this was a problem in my C# translation, I confirm that it fixes the 
issue and I get a perfect equally subdivided spline.

Thanks !

On 12/07/2012 16:53, Jerome Velut wrote:
> Hi,
>
> Bill, your script solved Jean-Hugues' issue with vtk-5.10 and vtk-6.0.
> Jean-Hugues, could it be a mistake in your c# translation?
>
> Jerome
>
> Le 12/07/2012 15:09, Jean-Hugues Royer a écrit :
>> Hi,
>>
>> I converted it to Activiz/C#, I will let Jerome try exactly your code 
>> (since I can't).
>>
>> Regards.
>>
>> On 12/07/2012 14:49, Bill Lorensen wrote:
>>> In the example I sent? I happen to be running VTK6, but there should 
>>> not have been changes.
>>>
>>> On Thu, Jul 12, 2012 at 8:35 AM, Jean-Hugues Royer 
>>> <jhroyer at joher.com <mailto:jhroyer at joher.com>> wrote:
>>>
>>>     Hi,
>>>
>>>     If I do that, the first ~30 points have a distance of 1 and the
>>>     rest 0.18648.
>>>
>>>     Regards.
>>>
>>>
>>>     On 12/07/2012 14:12, Bill Lorensen wrote:
>>>>     The splines are parameterized by an approximation to the arc
>>>>     length. Also, the boundary conditions of the splines can affect
>>>>     the shape of the spline. Try this version of the script:
>>>>
>>>>     #!/usr/bin/python
>>>>     import vtk
>>>>
>>>>     lineSource = vtk.vtkLineSource( )
>>>>     lineSource.SetPoint1( 0, 0, 0 )
>>>>     lineSource.SetPoint2( 95, 0 ,0 )
>>>>     lineSource.Update( )
>>>>
>>>>     mySpline = vtk.vtkCardinalSpline( )
>>>>     mySpline.SetLeftConstraint(2)
>>>>     mySpline.SetLeftValue(0.0)
>>>>     mySpline.SetRightConstraint(2)
>>>>     mySpline.SetRightValue(0.0)
>>>>
>>>>     spline = vtk.vtkSplineFilter( )
>>>>     spline.SetSpline(mySpline)
>>>>     spline.SetInputConnection( lineSource.GetOutputPort( ))
>>>>     spline.SetSubdivideToLength( )
>>>>     spline.SetLength( 0.18648 )
>>>>     spline.Update( )
>>>>
>>>>     points = spline.GetOutput().GetPoints()
>>>>
>>>>     meanDist = 0
>>>>
>>>>     for i in range( 1, points.GetNumberOfPoints() ):
>>>>       pt = points.GetPoint(i)
>>>>       ptPrec = points.GetPoint(i-1)
>>>>       meanDist += pt[0] - ptPrec[0]
>>>>       print 'pt[',i,'] X: ',pt[0],' | Distance with previous
>>>>     point:',pt[0] - ptPrec[0]
>>>>
>>>>     print 'Mean distance: ', meanDist / points.GetNumberOfPoints()
>>>>     print 'Expected number of points: ', 95./0.18648
>>>>     print 'Effective number of points: ', points.GetNumberOfPoints()
>>>>
>>>>
>>>>
>>>>     On Thu, Jul 12, 2012 at 3:06 AM, Jerome Velut
>>>>     <jerome.velut at kitware.com <mailto:jerome.velut at kitware.com>> wrote:
>>>>
>>>>         Hi Bill and Jean-Hugues,
>>>>
>>>>         I was able to reproduce the bug for a straight line with
>>>>         vtk-5.10 python (script attached). I also get the same
>>>>         spline from paraview by exposing the vtkSplineFilter
>>>>         (hopefully!).
>>>>
>>>>         Jerome
>>>>
>>>>         Le 10/07/2012 19:09, Bill Lorensen a écrit :
>>>>>         It is always possible that there is a bug.
>>>>>
>>>>>         Can you provide a small, compilable example that
>>>>>         illustrates the problem?
>>>>>
>>>>>         On Tue, Jul 10, 2012 at 10:50 AM, Jean-Hugues Royer
>>>>>         <jhroyer at joher.com <mailto:jhroyer at joher.com>> wrote:
>>>>>
>>>>>             Hi,
>>>>>
>>>>>             I also tried vtkSplineFIlter using
>>>>>             SetSubdivideToLength() and SetLength(distance).
>>>>>
>>>>>             But the result is that the points are not equally
>>>>>             distributed.
>>>>>
>>>>>             When you provide a curve the beginning and ending
>>>>>             points are not equally distributed while the center
>>>>>             points are.
>>>>>
>>>>>             When you provide a straight line no points at all are
>>>>>             equally distributed.
>>>>>
>>>>>             I get exact same result when using
>>>>>             vtkSplineFIlter/SetSubdivideToLength/SetLength and
>>>>>             vtkParametricSpline/SetParametricFunction/SetUResolution.
>>>>>
>>>>>             May be I'm missing something ?
>>>>>
>>>>>
>>>>>             On 10/07/2012 16:21, Bill Lorensen wrote:
>>>>>>             Look at vtkSplineFIlter
>>>>>>             Here is one use:
>>>>>>             http://vtk.org/Wiki/VTK/Examples/Cxx/PolyData/FitSplineToCutterOutput
>>>>>>
>>>>>>
>>>>>>             On Tue, Jul 10, 2012 at 9:59 AM, Jean-Hugues Royer
>>>>>>             <jhroyer at joher.com <mailto:jhroyer at joher.com>> wrote:
>>>>>>
>>>>>>                 Hi,
>>>>>>
>>>>>>                 I have a curve which is a vtkPoints array.
>>>>>>
>>>>>>                 I would like to generate another vtkPoints array
>>>>>>                 where every consecutive points have the same
>>>>>>                 distance. (basically divide the curve to n equals
>>>>>>                 segments)
>>>>>>
>>>>>>                 I tried to use
>>>>>>                 vtkParametricSpline/vtkParametricFunctionSource
>>>>>>                 but I was only able to change the number of
>>>>>>                 points to another value but I didn't find how to
>>>>>>                 specify that these new points should be equally
>>>>>>                 distributed.
>>>>>>
>>>>>>                 Any idea ?
>>>>>>
>>>>>>                 _______________________________________________
>>>>>>                 Powered by www.kitware.com <http://www.kitware.com>
>>>>>>
>>>>>>                 Visit other Kitware open-source projects at
>>>>>>                 http://www.kitware.com/opensource/opensource.html
>>>>>>
>>>>>>                 Please keep messages on-topic and check the VTK
>>>>>>                 FAQ at: http://www.vtk.org/Wiki/VTK_FAQ
>>>>>>
>>>>>>                 Follow this link to subscribe/unsubscribe:
>>>>>>                 http://www.vtk.org/mailman/listinfo/vtkusers
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>             -- 
>>>>>>             Unpaid intern in BillsBasement at noware dot com
>>>>>>
>>>>>
>>>>>
>>>>>
>>>>>         -- 
>>>>>         Unpaid intern in BillsBasement at noware dot com
>>>>>
>>>>>
>>>>>
>>>>>         _______________________________________________
>>>>>         Powered bywww.kitware.com  <http://www.kitware.com>
>>>>>
>>>>>         Visit other Kitware open-source projects athttp://www.kitware.com/opensource/opensource.html
>>>>>
>>>>>         Please keep messages on-topic and check the VTK FAQ at:http://www.vtk.org/Wiki/VTK_FAQ
>>>>>
>>>>>         Follow this link to subscribe/unsubscribe:
>>>>>         http://www.vtk.org/mailman/listinfo/vtkusers
>>>>
>>>>
>>>>         -- 
>>>>         Jérôme Velut
>>>>         R&D Engineer
>>>>         Kitware SAS
>>>>         26 rue Louis Guérin
>>>>         69100 Villeurbanne, France
>>>>         F:+33 (0)4.37.45.04.15  <tel:%2B33%20%280%294.37.45.04.15>
>>>>         http://www.kitware.fr  
>>>>
>>>>
>>>>
>>>>
>>>>     -- 
>>>>     Unpaid intern in BillsBasement at noware dot com
>>>>
>>>
>>>
>>>
>>> -- 
>>> Unpaid intern in BillsBasement at noware dot com
>>>
>
>
> -- 
> Jérôme Velut
> R&D Engineer
> Kitware SAS
> 26 rue Louis Guérin
> 69100 Villeurbanne, France
> F: +33 (0)4.37.45.04.15
> http://www.kitware.fr  
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.vtk.org/pipermail/vtkusers/attachments/20120712/faa929dc/attachment.htm>


More information about the vtkusers mailing list