[vtkusers] PolyData and tensors

Darshan Pai darshanpai at gmail.com
Thu Mar 25 13:20:22 EDT 2010


So I figured out the problem . If I do InsetComponent instead of
SetComponent it works without crashing .

So I guess the problem was I did not Allocate the Space before doing
SetComponent .

Regards
Darshan

On Thu, Mar 25, 2010 at 1:19 AM, Darshan Pai <darshanpai at gmail.com> wrote:

> Added a compilable version here . Please check . I am clueless
>
> #include <vtkActor.h>
> #include <vtkRenderer.h>
> #include <vtkRenderWindow.h>
> #include <vtkRenderWindowInteractor.h>
> #include <vtkSmartPointer.h>
> #include <vtkDoubleArray.h>
> #include <vtkPoints.h>
> #include <vtkCellArray.h>
> #include <vtkPolyDataMapper.h>
> #include <vtkPolydata.h>
> #include <iostream>
> #include <fstream>
> #include <vtkProperty.h>
> #include <vtkPointData.h>
>
> int main()
> {
>     vtkPoints *points = vtkPoints::New();
>     vtkCellArray *lines = vtkCellArray::New();
>     vtkPolyData *indata = vtkPolyData::New();
>     vtkPolyDataMapper *mapper = vtkPolyDataMapper::New();
>     vtkActor* fiber_actor = vtkActor::New();
>     vtkDoubleArray *dbar = vtkDoubleArray::New();
>
>     dbar->SetNumberOfTuples(10);
>     dbar->SetNumberOfComponents(9);
>     points->SetNumberOfPoints(10);
>     lines->SetNumberOfCells(10);
>
>     points->InsertPoint(0,101.822,56.87,64.0516);
>     points->InsertPoint(1,101.844,57.7007,64.5);
>     points->InsertPoint(2,101.818,57.81,64.4116);
>     points->InsertPoint(3,101.497,58.75,63.6901);
>     points->InsertPoint(4,101.147,59.69,63.0351);
>     points->InsertPoint(5,101.05,60.0038,62.8423);
>     points->InsertPoint(6,100.88,60.63,62.4272);
>     points->InsertPoint(7,100.701,61.57,61.9138);
>     points->InsertPoint(8,100.609,62.3104,61.5);
>     points->InsertPoint(9,100.591,62.51,61.3388);
>     indata->SetPoints(points);
>
>     for (int j = 0; j < 10 - 1; j++)
>     {
>         lines->InsertNextCell(2);
>         lines->InsertCellPoint(j);
>         lines->InsertCellPoint(j+1);
>     }
>     indata->SetLines(lines);
>     for (int i = 0; i < 10; i++)
>
>     {
>         dbar->SetComponent(i,0,1);
>         dbar->SetComponent(i,1,1);
>         dbar->SetComponent(i,2,1);
>         dbar->SetComponent(i,3,1);
>         dbar->SetComponent(i,4,1);
>         dbar->SetComponent(i,5,1);
>         dbar->SetComponent(i,6,1);
>         dbar->SetComponent(i,7,1);
>         dbar->SetComponent(i,8,1);
>     }
>     indata->GetPointData()->SetTensors(dbar);
>     mapper->SetInput(indata);
>
>     fiber_actor->SetMapper(mapper);
>     fiber_actor->GetProperty()->SetLineWidth(3.0);
>     vtkSmartPointer<vtkRenderer> renderer =
> vtkSmartPointer<vtkRenderer>::New();
>     renderer->AddActor(fiber_actor);
>     vtkSmartPointer<vtkRenderWindow> renderWindow =
> vtkSmartPointer<vtkRenderWindow>::New();
>      renderWindow->AddRenderer( renderer );
>      renderWindow->SetSize(1000,1000);
>
>     vtkSmartPointer<vtkRenderWindowInteractor> interactor =
>         vtkSmartPointer<vtkRenderWindowInteractor>::New();
>      interactor->SetRenderWindow( renderWindow );
>
>   // Initialize the event loop and then start it
>     interactor->Initialize();
>      interactor->Start();
> }
>
> On Wed, Mar 24, 2010 at 7:25 PM, David Doria <daviddoria+vtk at gmail.com<daviddoria%2Bvtk at gmail.com>
> > wrote:
>
>> On Wed, Mar 24, 2010 at 6:46 PM, Darshan Pai <darshanpai at gmail.com>wrote:
>>
>>> I am trying to make a polydata composed of polylines , I am planning to
>>> add tensor information at each of the points .
>>> i want to make a EllipsoidTensorProbeRepresentation which will add this
>>> polyline as a trajectory so that I can get an
>>> ellipsoid representation across the polyline.
>>>
>>> My main problem is adding the tensor.
>>> I did the following
>>>
>>> vtkDoubleArray *dbar = vtkDoubleArray::New();
>>> dbar->SetNumberOfValues(size);
>>> dbar->SetNumberOfComponents(9);
>>>
>>> The for each point I add the 9 components using the following function
>>>
>>> dbar->SetComponent(i,0,1)
>>> dbar->SetComponent(i,1,1);
>>> .............. and so on
>>>
>>> When I try to add it to the polydata though
>>> indata->GetPointData()->SetTensors(dbar);
>>>
>>> It crashes .
>>>
>>> I am not sure where I am going wrong
>>>
>>> Please Help
>>>
>>> Darshan
>>>
>>>
>> Can you make the smallest compilable example that demonstrates this
>> behavior and post it to the list?
>>
>> Thanks,
>>
>> David
>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.vtk.org/pipermail/vtkusers/attachments/20100325/0e6e033e/attachment.htm>


More information about the vtkusers mailing list