[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