[vtkusers] add/delete point from polydata

nnnn aaaa an.84 at hotmail.fr
Sat Feb 28 16:48:49 EST 2009


 



Hi;
 I use visual c++ and vtk as development tools, in my project. I work by the snake's method. I implemented functions to add or to remove points of snake is a polydata (it is a circle), after each iteration, I do not have any errors but l' posting of result it does not go (no posting, it posts dubug). Can someone help me  please 

Here is my code of function 

void vtkSnake::ResampleSnake(vtkPolyData *snake,int dmax,int dmin)
{
 
   
 int numberOfPoints=snake->GetNumberOfPoints();
            int nbInputPoint,*inputPointsId;
 
            vtkPoints* points = snake->GetPoints();
            // get the number of point of the unregularized snake
            snake->GetLines()->GetCell(0,nbInputPoint,inputPointsId);
    
            for(int i=0;i<numberOfPoints;i++) {
             double pti[3];
             points->GetPoint(inputPointsId[i],pti);
 
            for(int idp=(1+numberOfPoints)/2;idp>0;idp--)
            {
                 double ptiFlw[3];
               points->GetPoint(inputPointsId[(idp+i)%numberOfPoints],ptiFlw);
               points->GetPoint(inputPointsId[idp],pti);
            double dist = sqrt(pow(ptiFlw[0]-pti[0],2)+pow(ptiFlw[1]-pti[1],2));
                 if(dist>dmin) continue;
             for(int k=0;k<idp;k++) 
            removeSnake(snake,inputPointsId[(i+1)%numberOfPoints]);
            break;
            }
            }
 
            
            for(int idp=0;idp<numberOfPoints;idp++)
            {
                  
            double ptiFlw[3],pti[3];
            
           points->GetPoint(inputPointsId[(idp+1)%numberOfPoints],ptiFlw);
            points->GetPoint(inputPointsId[idp],pti);
          double dist = sqrt(pow(ptiFlw[0]-pti[0],2)+pow(ptiFlw[1]-pti[1],2));
            if(dist>dmax)
                        {
                                   addSnake(snake,idp);
                                   
                        }
            }
}
 
//-------------------------------------------------------------------------
void vtkSnake::addSnake(vtkPolyData *snake,int pos)
{
            int numberOfPoints=snake->GetNumberOfPoints();
            int nbInputPoint,*inputPointsId;
 
            vtkPoints* points = snake->GetPoints();
            // get the number of point of the unregularized snake
            snake->GetLines()->GetCell(0,nbInputPoint,inputPointsId);
           double ptiFlw[3],pti[3];
            points->GetPoint(inputPointsId[(pos+1)%numberOfPoints],ptiFlw);
            points->GetPoint(inputPointsId[pos],pti);
            double newX = (ptiFlw[0]+pti[0])/2.0;
            double newY = (ptiFlw[1]+pti[1])/2.0;
            
            int newId=points->InsertNextPoint(newX,newY,pti[2]);
            points->Modified();
            
            snake->GetLines()->InsertCellPoint(newId);
            snake->GetLines()->UpdateCellCount(numberOfPoints++);
            snake->Modified();
                                   
     numberOfPoints++;                                    
            
            
}
 
//-------------------------------------------------------------------------
void vtkSnake::removeSnake(vtkPolyData *snake,int pos)
{
    int numberOfPoints=snake->GetNumberOfPoints();
            int nbInputPoint,*inputPointsId;
 
            snake->GetLines()->GetCell(0,nbInputPoint,inputPointsId);
            snake->RemoveCellReference(inputPointsId[pos]);
             snake->DeleteCell(inputPointsId[pos]);
             snake->Modified();
     numberOfPoints--;
                        
}
_________________________________________________________________
Découvrez tout ce que Windows Live a à vous apporter !
http://www.microsoft.com/windows/windowslive/
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.vtk.org/pipermail/vtkusers/attachments/20090228/670c784d/attachment.htm>


More information about the vtkusers mailing list