[vtkusers] some queries with vtkcellarrays

Sankhesh Jhaveri sankhesh.jhaveri at kitware.com
Wed Jul 22 09:16:45 EDT 2015


Chiranjib,

The code segment adds 'count' number of cells with one point per cell.

This example
<http://www.vtk.org/Wiki/VTK/Examples/Cxx/PolyData/IterateOverLines>
creates a set of lines () with a bunch of points. That should give you some
idea about the data structures.

Some basic concepts are explained here:
http://www.vtk.org/Wiki/VTK/Tutorials

Other than that, you can refer to the VTK User's guide
<http://www.amazon.com/VTK-Users-Guide-Kitware/dp/1930934238/ref=as_sl_pc_tf_til?tag=kitinc-20&linkCode=w00&linkId=O634K4YN4IH7SJ6V&creativeASIN=1930934238>
or the VTK Textbook
<http://www.amazon.com/Visualization-Toolkit-Object-Oriented-Approach-Graphics/dp/193093419X/ref=as_sl_pc_tf_til?tag=kitinc-20&linkCode=w00&linkId=CZW6DJTGVZD3YQJP&creativeASIN=193093419X>
for more details.

You could also look at the API documentation
<http://www.vtk.org/doc/nightly/html/>.



Warm Regards,

Sankhesh Jhaveri
Research & Development Engineer
Kitware, Inc.
*Phone*: (518) 881 4417
*Fax*: (518) 371 4573



On Tue, Jul 21, 2015 at 1:24 PM, Chiranjib Sur <sur.chiranjib at gmail.com>
wrote:

> Hi Sankesh,
> Thanks for the pointers. If I change this to the following
>
>
>
>    for (vtkIdType i= 0; i < count; i++)
>    {
>        cell->InsertNextCell( i );
> cell->InsertCellPoint(i);
>    }
> will this mean the same what you are suggesting? In that case how the
> points are getting distributed ? I have been learning VTK by going through
> the examples. Indeed they are useful.
>
> I would really appreciate, if you can point me towards some "description"
> of VTK cells / normals /Tcoords etc that will be very helpful to understand
> the underlying concepts easily.
>
> Thanks,
> Chiranjib
>
> On Tue, Jul 21, 2015 at 8:27 PM, Sankhesh Jhaveri <
> sankhesh.jhaveri at kitware.com> wrote:
>
>> Hi Chiranjib,
>>
>> Your code calls InsertNextCell once and adds all points to that cell
>> using InsertCellPoint. Thats why you just end up with one cell.
>>
>> You can add more cells by calling InsertNextCell as many times as the
>> number of cells you want. You will have to distribute the points in the
>> resultant cells accordingly.
>>
>> Take a look at examples here: http://www.vtk.org/Wiki/VTK/Examples/Cxx
>>
>>
>>
>> Warm Regards,
>>
>> Sankhesh Jhaveri
>> Research & Development Engineer
>> Kitware, Inc.
>> *Phone*: (518) 881 4417
>> *Fax*: (518) 371 4573
>>
>>
>>
>> On Mon, Jul 20, 2015 at 5:48 AM, Chiranjib Sur <sur.chiranjib at gmail.com>
>> wrote:
>>
>>> Hi VTK experts,
>>> I am not an expert vtk programmers like many others in the forum. I have
>>> a confusion.
>>>
>>> I am creating a set of vtk points (and eventually a vtkpolydata) and
>>> want to create vtkcells for the associated points. I was looking at the
>>> examples and trying to implement this way (
>>> http://www.vtk.org/gitweb?p=VTK.git;a=blob;f=Examples/VisualizationAlgorithms/Cxx/TubesWithVaryingRadiusAndColors.cxx
>>> )
>>>
>>> What I am observing is that when I create vtkcells, I only create ONE
>>> cell. What is going wrong here and why not all vtkcells are created?
>>>
>>> Any suggestions ?
>>>
>>> Thanks in advance,
>>> Chiranjib
>>>
>>> Here is my code snippet
>>>
>>>
>>>
>>> // VTK points are defined here
>>>
>>>     vtkSmartPointer<vtkPoints> newPoints =
>>> vtkSmartPointer<vtkPoints>::New();
>>>
>>> // Set precision for the vtk points
>>>    newPoints->SetDataType( VTK_DOUBLE );
>>>
>>>     unsigned int count = 0;
>>>     double resolution = 0.1;
>>>
>>> // Create the points for the entire volume
>>>       for (unsigned int j = 0; j<10; j++)
>>>       {
>>>          for (unsigned int i = 0; i<10; i++)
>>>          {
>>>             for (unsigned int k = 0; k<10; k++)
>>>             {
>>>                newPoints->InsertNextPoint( x0[0]+ resolution*i, x0[1]+
>>> resolution*j, x0[2]+ resolution*k );
>>>                count++;
>>>             }
>>>          }
>>>       }
>>>
>>> std::cout << "length of mycube = " << xl << ","<<yl<<","<<zl <<
>>> std::endl;
>>> std::cout << "Number of points = " << count << std::endl;
>>>
>>>
>>>
>>>    // Insert vtk cell arrays
>>>    vtkSmartPointer<vtkCellArray> cell =
>>> vtkSmartPointer<vtkCellArray>::New();
>>>
>>>    cell->InsertNextCell( count);
>>>
>>>    for (vtkIdType i= 0; i < count; i++)
>>>    {
>>>    cell->InsertCellPoint(i);
>>>    }
>>>
>>> // Define the polydata for the cube
>>>       vtkSmartPointer<vtkPolyData> np =
>>> vtkSmartPointer<vtkPolyData>::New();
>>>       np->SetPoints( newPoints );
>>>       np->SetLines( cell);
>>>
>>>    std::cout << "Number of cells "<< np->GetNumberOfCells() << ":" <<
>>> count << std::endl;
>>>
>>>
>>> _______________________________________________
>>> Powered by www.kitware.com
>>>
>>> Visit other Kitware open-source projects at
>>> http://www.kitware.com/opensource/opensource.html
>>>
>>> Please keep messages on-topic and check the VTK FAQ at:
>>> http://www.vtk.org/Wiki/VTK_FAQ
>>>
>>> Search the list archives at: http://markmail.org/search/?q=vtkusers
>>>
>>> Follow this link to subscribe/unsubscribe:
>>> http://public.kitware.com/mailman/listinfo/vtkusers
>>>
>>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://public.kitware.com/pipermail/vtkusers/attachments/20150722/179b43b4/attachment.html>


More information about the vtkusers mailing list