[vtkusers] vtkApproximatingSubdivisionFilter::FindEdge

Dmitry Gurulev patalog at electropulse.tomsk.ru
Wed Nov 26 00:42:37 EST 2008


Hi All!

I have the same problem as http://www.vtk.org/pipermail/vtkusers/2001-September/057336.html.
In vtkLoopSubdivisionFilter::GenerateSubdivisionPoints for given points p1, p2 edgeTable returns
that this edge already added, but FindEdge return incorrect value since there is no such cell id 
in edgeData array. Mentioned message dated 2001 year, but all moder library code has the same thing.

Possible solution (is this correct?) -
function vtkLoopSubdivisionFilter::GenerateSubdivisionPoints
//...skip

edgeTable->InitEdgeInsertion(inputDS->GetNumberOfPoints(), 1); //initialize edgeTable for 
storing vtkIdType attribute

// Generate odd points loop...

//check we already add this edge, newId is -1 if not or prev. saved id
if ((newId = edgeTable->IsEdge (p1, p2)) == -1)
{
	//remove edgeTable->InsertEdge (p1, p2); from here and ...
	newId = this->InterpolatePosition (inputPts, outputPts,
                                            stencil, weights);
	//... add here when we have correct newId, put this edge in table with this id
	edgeTable->InsertEdge (p1, p2, newId);
}
else // we have already created a point on this edge. find it
{
	//we don't need this at all
         //newId = this->FindEdge (inputDS, cellId, p1, p2, edgeData, cellIds);
}



More information about the vtkusers mailing list