[vtkusers] What to use: 'vtkDataArray' or 'vtkDoubleArray'?
Michael Jackson
mike.jackson at bluequartz.net
Mon Oct 27 11:15:04 EDT 2008
The values of the point are store in the pt variable which is really a
array of 3 doubles.
x = pt[0], y = pt[1], z=pt[2]
If you are wanting to remove points from the polydata based on the
value of their points being < 0 or any individual point being < 0 then
I would suggest the vtkClipPolyData filter and write a quick custom
vtkImplicitFunction to supply to that filter or look at using the
vtkBox (Read the documentation carefully for vtkBox) as the
implicitfunction.
_________________________________________________________
Mike Jackson mike.jackson at bluequartz.net
www.bluequartz.net
On Oct 27, 2008, at 10:43 AM, B. C. wrote:
> Thank you Michael for your help.
> Can you tell me if i want to store the value of 'myArray-
> >GetTuple(i,pt)' into a variable to make a test, waht type should i
> use?
>
> In fact, i want to do this:
> if (this_value<0) : delete the point(i) of the ploydata
>
>
> --- En date de : Lun 27.10.08, Michael Jackson <mike.jackson at bluequartz.net
> > a écrit :
> De: Michael Jackson <mike.jackson at bluequartz.net>
> Objet: Re: [vtkusers] What to use: 'vtkDataArray' or 'vtkDoubleArray'?
> À: butterfly.1688 at yahoo.fr, vtkusers at vtk.org
> Date: Lundi 27 Octobre 2008, 13h24
>
> vtkDoubleArray is a high level class that hides the actual array
> implementation.
>
> What you probably want to do is this:
> vtkDoubleArray* myArray=vtkDoubleArray::SafeDownCast(myPolyData-
> >GetPoints());
> if (NULL == myArray)
> {
> Error ....
> }
> vtkIdType nPoints = myArray->GetNumberOfTuples();
> double pt[3];
> for (vtkIdType i = 0; i < nPoints; ++i)
> {
> myArray->GetTuple(i,pt);
> // Do something with pt.
> }
>
>
> The above code is from memory but should be pretty close.
>
> If you really just want to access the data from the Data array then
> you can do the following:
>
> vtkDoubleArray* myArray=vtkDoubleArray::SafeDownCast(myPolyData-
> >GetPoints());
> if (NULL == myArray)
> {
> Error...
> }
> double* pts = static_cast<double*>(myArray->GetVoidPointer());
>
> That should get you a raw pointer to the data. So as long as you
> understand the how the data is stored in that pointer you can iterate
> over the pointer.
>
> _________________________________________________________
> Mike Jackson mike.jackson at bluequartz.net
> BlueQuartz Software www.bluequartz.net
> Principal Software Engineer Dayton, Ohio
>
>
>
> On Oct 27, 2008, at 6:41 AM, B. C. wrote:
>
> > Hi everyone.
> > I want to save the values of the points of a polydata in an array
> > and then access to each one. I used this:
> >
> > double curveValue;
> > vtkDoubleArray *myArray;
> > for (int i=0; i<myPolydata->GetNumberOfPoints(); i++)
> > {
> > myArray[i] = myPolyData->GetPoints()->GetPoint(i);
> > curveValue = myArray->GetValue(i);
> > }
> >
> > I have this error:
> > binary '=' : no operator defined which takes a right-hand operand
> of
> > type 'double *'
> >
> > When i change the array type to 'vtkDataArray', i have this code:
> > double *curveValue;
> > vtkDataArray *myArray = myPolyData->GetPoints()->GetData();
> > for (int i=0; i<myPolyData->GetNumberOfPoints(); i++)
> > {
> > curveValue = myArray->GetTuple(i);
> > }
> >
> > I have no more errors, but when i run the program, i have a bug and
> > the cursor indicates this line:
> > vtkDataArray *myArray = myPolyData->GetPoints()->GetData();
> >
> > I don't understand any one of the 2 error cases!!!
> > Please, can someone tell me what type of array should i use? and how
> > to rectify the code
> > to have no more errors?
> >
> > Thank you for you help
> >
> > _______________________________________________
> > This is the private VTK discussion list.
> > Please keep messages on-topic. Check the FAQ at:
> http://www.vtk.org/Wiki/VTK_FAQ
> > Follow this link to subscribe/unsubscribe:
> > http://www.vtk.org/mailman/listinfo/vtkusers
>
>
More information about the vtkusers
mailing list