[vtkusers] vtkrenderer causing other sections of code to break???
Bill Lorensen
bill.lorensen at gmail.com
Fri Jul 20 15:57:54 EDT 2012
Luke,
If you can provide a minimal, compilable example that illustrates the
defect, tehn many eyes can help you.
Bill
On Fri, Jul 20, 2012 at 3:25 PM, Luke Hetrick <lhetrick at nnu.edu> wrote:
> Hey all,
>
> So I am experiencing an interesting error that I can not figure out. I
> am storing some data in some arrays and I am then printing out the average
> of those arrays by the following bit of code:
>
> //this Sum array is in-bedded in a set of for loops where the
> iterators are i and n to fill it full of data
> Sum[3] = 0;
> Average[3] = 0;
> Sum[0] += Angle->GetValue(i + (5*n) );
> Sum[1] += EdgeLength->GetValue( i + (5*n) );
> Sum[2] += EdgeLength_Horizontal->GetValue( i + (5*n) );
> Sum[3] += EdgeLength_Vertical->GetValue( i + (5*n ) );
>
> //Once the Sum array is filled with data and the for loops are
> closed, this bit of code is enabled
> std::cout << "Average Angle: " << Sum[0] /
> (Output->GetNumberOfPoints() * 5) << endl
> << "Average Edge Length: " << Sum[1] /
> ( Output->GetNumberOfPoints() * 5 ) << endl
> << "Average Horizontal Component of Edge Length: " <<
> Sum[2] /
> ( Output->GetNumberOfPoints() * 5 ) << endl
> << "Average Vertical Component of Edge Length: " <<
> Sum[3] /
> ( Output->GetNumberOfPoints() * 5 ) << endl <<
> endl;
>
> What I am expericing is that when I add a renderer for a completely
> different set of arrays other than these Sum and Average arrays, the
> average values that are printed out onto my screen are changed to
> ridiculous numbers. When I uncomment out this bit of code, the average
> values that get printed out change from the values they should be to e^23
> and -nan on two of the average values. Here is the bit of code that is
> causing me problems:
>
> vtkSmartPointer<vtkFieldData> Field1 =
> vtkSmartPointer<vtkFieldData>::New();
> vtkSmartPointer<vtkFieldData> Field2 =
> vtkSmartPointer<vtkFieldData>::New();
> vtkSmartPointer<vtkFieldData> Field3 =
> vtkSmartPointer<vtkFieldData>::New();
> vtkSmartPointer<vtkFieldData> Field4 =
> vtkSmartPointer<vtkFieldData>::New();
> Field1->AddArray( AngleDecimated );
> Field2->AddArray( EdgeLengthDecimated );
> Field3->AddArray( EdgeLengthHDecimated );
> Field4->AddArray( EdgeLengthVDecimated );
>
> vtkSmartPointer<vtkDataObject> DataObject1 =
> vtkSmartPointer<vtkDataObject>::New();
> vtkSmartPointer<vtkDataObject> DataObject2 =
> vtkSmartPointer<vtkDataObject>::New();
> vtkSmartPointer<vtkDataObject> DataObject3 =
> vtkSmartPointer<vtkDataObject>::New();
> vtkSmartPointer<vtkDataObject> DataObject4 =
> vtkSmartPointer<vtkDataObject>::New();
> DataObject1->SetFieldData( Field1 );
> DataObject2->SetFieldData( Field2 );
> DataObject3->SetFieldData( Field3 );
> DataObject4->SetFieldData( Field4 );
>
> vtkSmartPointer<vtkXYPlotActor> Plot1 =
> vtkSmartPointer<vtkXYPlotActor>::New();
> vtkSmartPointer<vtkXYPlotActor> Plot2 =
> vtkSmartPointer<vtkXYPlotActor>::New();
> vtkSmartPointer<vtkXYPlotActor> Plot3 =
> vtkSmartPointer<vtkXYPlotActor>::New();
> vtkSmartPointer<vtkXYPlotActor> Plot4 =
> vtkSmartPointer<vtkXYPlotActor>::New();
> Plot1->ExchangeAxesOff();
> Plot1->SetLabelFormat( "%g" );
> Plot1->SetXTitle( "Id Number" );
> Plot1->SetYTitle( "Angle" );
> Plot1->SetXValuesToIndex();
> Plot1->AddDataObjectInput( DataObject1 );
> Plot1->SetPlotColor(0,1,1,1);
> Plot2->ExchangeAxesOff();
> Plot2->SetLabelFormat( "%g" );
> Plot2->SetXTitle( "Id Number" );
> Plot2->SetYTitle( "Edge Length" );
> Plot2->SetXValuesToIndex();
> Plot2->AddDataObjectInput( DataObject2 );
> Plot2->SetPlotColor(0,1,1,1);
> Plot3->ExchangeAxesOff();
> Plot3->SetLabelFormat( "%g" );
> Plot3->SetXTitle( "Id Number" );
> Plot3->SetYTitle( "H. Compon." );
> Plot3->SetXValuesToIndex();
> Plot3->AddDataObjectInput( DataObject3 );
> Plot3->SetPlotColor(0,1,1,1);
> Plot4->ExchangeAxesOff();
> Plot4->SetLabelFormat( "%g" );
> Plot4->SetXTitle( "Id Number" );
> Plot4->SetYTitle( "V. Compon" );
> Plot4->SetXValuesToIndex();
> Plot4->AddDataObjectInput( DataObject4 );
> Plot4->SetPlotColor(0,1,1,1);
>
> double UpperLeftViewport[4] = { 0.0,0.5,0.5,1.0 };
> double UpperRightViewport[4] = { 0.5,0.5,1.0,1.0 };
> double LowerLeftViewport[4] = { 0.0,0.0,0.5,0.5 };
> double LowerRightViewport[4] = { 0.5,0.0,1.0,0.5 };
>
> // Visualize the histogram(s)
> vtkSmartPointer<vtkRenderer> UpperLeftRenderer =
> vtkSmartPointer<vtkRenderer>::New();
> vtkSmartPointer<vtkRenderer> UpperRightRenderer =
> vtkSmartPointer<vtkRenderer>::New();
> vtkSmartPointer<vtkRenderer> LowerLeftRenderer =
> vtkSmartPointer<vtkRenderer>::New();
> vtkSmartPointer<vtkRenderer> LowerRightRenderer =
> vtkSmartPointer<vtkRenderer>::New();
> UpperLeftRenderer->AddActor( Plot1 );
> UpperLeftRenderer->SetViewport( UpperLeftViewport );
> UpperLeftRenderer->SetBackground( 0.1,0.2,0.3 );
> UpperLeftRenderer->ResetCamera();
> UpperRightRenderer->AddActor( Plot2 );
> UpperRightRenderer->SetViewport( UpperRightViewport );
> UpperRightRenderer->SetBackground( 0.1,0.2,0.3 );
> UpperRightRenderer->ResetCamera();
> LowerLeftRenderer->AddActor( Plot3 );
> LowerLeftRenderer->SetViewport( LowerLeftViewport );
> LowerLeftRenderer->SetBackground( 0.1,0.2,0.3 );
> LowerLeftRenderer->ResetCamera();
> LowerRightRenderer->AddActor( Plot1 );
> LowerRightRenderer->SetViewport( LowerRightViewport );
> LowerRightRenderer->SetBackground( 0.1,0.2,0.3 );
> LowerRightRenderer->ResetCamera();
>
> vtkSmartPointer<vtkRenderWindow> renderWindow =
> vtkSmartPointer<vtkRenderWindow>::New();
> renderWindow->AddRenderer( UpperLeftRenderer );
> renderWindow->AddRenderer( UpperRightRenderer );
> renderWindow->AddRenderer( LowerLeftRenderer );
> renderWindow->AddRenderer( LowerRightRenderer );
> renderWindow->SetSize( 800,600 );
>
> vtkSmartPointer<vtkRenderWindowInteractor> interactor =
> vtkSmartPointer<vtkRenderWindowInteractor>::New();
> interactor->SetRenderWindow( renderWindow );
>
> // Initialize the event loop and then start it
> interactor->Initialize();
> interactor->Start();
>
>
> So nowhere in this bit of code do I do any operations to the Sum or
> Average arrays but yet somehow this bit of code can alter the average
> values printed out? Another odd thing is that the Average and Sum arrays
> come before the whole rendering process I mentioned. So by my understanding
> is that anything behind where I print out the average values should not
> have an effect on the values but yet somehow it is...here are the values
> with the rendering code I have shown above commented out :
>
> Average Angle: 0.646263
> Average Edge Length: 0.525874
> Average Horizontal Component of Edge Length: 0.400365
> Average Vertical Component of Edge Length: 3.83892e-05
>
>
> and here are the values when I uncomment out the above section of code:
>
> Average Angle: -8.68697e+24
> Average Edge Length: 0.525874
> Average Horizontal Component of Edge Length: -nan
> Average Vertical Component of Edge Length: 3.83892e-05
>
>
> I am thinking that the /vtkXYPlotActor might have a bug in it like many of
> the other chart and plotting actors that is causing this but that is just a
> gut feeling. If anyone has any thoughts on this matter, please share them
> with me and the community.
> Thanks,
> Luke H
>
> _______________________________________________
> 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
>
> Follow this link to subscribe/unsubscribe:
> http://www.vtk.org/mailman/listinfo/vtkusers
>
>
--
Unpaid intern in BillsBasement at noware dot com
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.vtk.org/pipermail/vtkusers/attachments/20120720/1150573c/attachment.htm>
More information about the vtkusers
mailing list