[vtkusers] Discovered And Fixed Bug In vtkDecimatePolylineFilter
    Donny 
    donnyz at charter.net
       
    Sat Dec  4 08:55:34 EST 2010
    
    
  
Hello. I have discovered and fixed a bug in vtkDecimatePolylineFilter. The
bug occurs if you have a mixture of lines with 3 or more points and also
lines that are only 2 points.
 
The following is in the RequestData function:
 
for (cellId=0, inputLines->InitTraversal();
inputLines->GetNextCell(npts,pts); cellId++)
    {
    if ( npts < 3 )
      {
      newId = newLines->InsertNextCell(npts,pts);
      outCD->CopyData(inCD,cellId,newId);
      for (i=0; i < npts; i++)
        {
        newId = newPts->InsertNextPoint(inputPoints->GetPoint(pts[i]));
        outPD->CopyData(inPD,pts[i],newId);
        }
      continue; //skip the rest
      }
The call to newLines->InsertNextCell(npts,pts); is the incorrect overload to
call since we are inserting new points in the loop that follows the call.
This would work ok if we only had lines that were 2 points, but since we are
also decimating and then inserting points for lines that have 3 or more
points the "pts" argument is incorrect for the new polydata.
 
I have tested the code that produced the bug with the following fixes and it
works as intended.
 
Here is the fixed code with modified lines commented with red:
 
for (cellId=0, inputLines->InitTraversal();
inputLines->GetNextCell(npts,pts); cellId++)
    {
    if ( npts < 3 )
      {
      newId = newLines->InsertNextCell(npts); // Modified to call different
overload
      outCD->CopyData(inCD,cellId,newId);
      for (i=0; i < npts; i++)
        {
        newId = newPts->InsertNextPoint(inputPoints->GetPoint(pts[i]));
        newLines->InsertCellPoint(newId); // Added to correctly assign ID's
        outPD->CopyData(inPD,pts[i],newId);
        }
      continue; //skip the rest
      }
I do not know how to submit this to git, or if this is the correct procedure
for submitting bugs, so if somebody could kindly make the changes and submit
I would be greatful.
 
Thanks.
 
Donny Zimmerman
donnyz at charter.net
 
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.vtk.org/pipermail/vtkusers/attachments/20101204/6dba4bbc/attachment.htm>
    
    
More information about the vtkusers
mailing list