[vtkusers] Scalar interpolation
Jothy
jothybasu at gmail.com
Thu May 10 05:00:49 EDT 2012
Can you try replacing test1.toFloat with toDouble()
Because your image data is populated with double?
Jothy
On 09-May-2012, at 11:39 PM, Brian Curtis <bcurtis3 at masonlive.gmu.edu> wrote:
> Thanks for your help,
>
> The following is the code that I wanted to create in the first place with the help from Jothy (Thank You). The values printed are weird and I wanted to send this to the community to help me correct any mistakes and so that I can gather some helpful hints from the community as to better practices in my code and using and understanding VTK.
>
> Thanks,
> ~Brian
> ==============================
> #include <vtkDoubleArray.h>
> #include <vtkImageData.h>
> #include <vtkPointData.h>
> #include <vtkFloatArray.h>
> #include <vtkPoints.h>
> #include <vtkPolyData.h>
> #include <vtkProbeFilter.h>
> #include <vtkDataObjectToTable.h>
> #include <vtkTable.h>
> #include <vtkTableReader.h>
> #include <vtkVariant.h>
>
> int main(int, char *[]) {
> printf("This is the beggining of the file\n");
>
> int i;
>
> vtkDoubleArray* myones = vtkDoubleArray::New();
> myones->SetName("Ones Scalar Array");
> myones->InsertNextValue(1.0);
> myones->InsertNextValue(2.0);
> myones->InsertNextValue(1.0);
> myones->InsertNextValue(2.0);
> myones->InsertNextValue(1.0);
> myones->InsertNextValue(2.0);
> myones->InsertNextValue(1.0);
> myones->InsertNextValue(2.0);
> printf("Created Scalar Array\n");
>
> //Now Creating the dataset
> vtkImageData* griddata = vtkImageData::New();
> //griddata->SetPoints(cubepoints);
> griddata->SetDimensions(2,2,2);
> griddata->SetSpacing(2.0,2.0,2.0);
> griddata->SetOrigin(-1.0,-1.0,-1.0);
> griddata->GetPointData()->SetScalars(myones);
> printf("Set Image Data\n");
>
> //CREATE A LINE TO INTERPOLATE ONTO
> float line[5][3] = { {-2.0, 2.0, -2.0}, {-1.0, 1.0, -1.0},
> {0.0, 0.0, 0.0}, {1.0, -1.0, 1.0}, {2.0, -2.0, 2.0} };
> vtkFloatArray* lcoords = vtkFloatArray::New();
> lcoords->SetNumberOfComponents(3);
> lcoords->SetNumberOfTuples(5);
> for(i=1; i<5; i++){
> lcoords->SetTuple(i, line[i]);
> }
>
> vtkPoints* linepoints = vtkPoints::New();
> linepoints->SetData(lcoords);
> printf("Created linepoints\n");
>
> vtkPolyData* linedata = vtkPolyData::New();
> linedata->SetPoints(linepoints);
> printf("Created line data\n");
>
> printf("Creating Probe Filter\n");
> vtkProbeFilter* probe = vtkProbeFilter::New();
> probe->SetInput(linedata);
> probe->SetSource(griddata);
> probe->Update();
>
> //RETURNING RESULTS AS A VTKTABLE
> vtkDataObjectToTable* polyDataToTable = vtkDataObjectToTable::New();
> polyDataToTable->SetInputConnection(probe->GetOutputPort());
> polyDataToTable->SetFieldType(vtkDataObjectToTable::POINT_DATA);
> polyDataToTable->Update();
>
> //PRINT THE RESULTANT SCALAR VALUES
> vtkTable* table = polyDataToTable->GetOutput();
> int A = table->GetNumberOfRows();
> int B = table->GetNumberOfColumns();
> printf("Rows: %i Columns: %i\n",A,B);
> for(i=0; i<A; i++){
> vtkVariant test1 = table->GetValue(i,0);
> vtkVariant test2 = table->GetValue(i,1);
> printf("Row %i: (%f,%f)\n",i,test1.ToFloat(),test2.ToFloat());
> }
>
> printf("This is the end of the file\n");
>
> myones->Delete();
> griddata->Delete();
> lcoords->Delete();
> linepoints->Delete();
> linedata->Delete();
> probe->Delete();
> polyDataToTable->Delete();
> table->Delete();
>
> return EXIT_SUCCESS;
>
> }
> ==========================
>
>
>
> On 05/09/2012 12:21 PM, Jothybasu Selvaraj wrote:
>>
>> vtkTable::GetValue() shoudl do that.
>>
>>
>> Jothy
>>
>> On Wed, May 9, 2012 at 5:11 PM, Brian Curtis <bcurtis3 at masonlive.gmu.edu> wrote:
>> Jothy,
>>
>> Thanks for your reply.
>>
>> I am interested in printing the interpolated scalar values to the screen (Terminal window), how would I go about this?
>>
>> ~Brian
>>
>>
>>
>> On 05/09/2012 09:41 AM, Jothybasu Selvaraj wrote:
>>>
>>> This should help you
>>>
>>> vtkSmartPointer<vtkProbeFilter>pf=
>>> vtkSmartPointer<vtkProbeFilter>::New();
>>> pf->SetInput(cube);//cube as vtkImageData
>>> pf->SetSource(line);line as vtkPolyData
>>> pf->Update();
>>>
>>> //Returns the result as a vtkTable
>>> vtkSmartPointer<vtkDataObjectToTable>polyDataToTable=
>>> vtkSmartPointer<vtkDataObjectToTable>::New();
>>> polyDataToTable->SetInputConnection(pf->GetOutputPort());
>>> polyDataToTable->SetFieldType(vtkDataObjectToTable::POINT_DATA);
>>> polyDataToTable->Update();
>>>
>>> Jothy
>>>
>>> On Wed, May 9, 2012 at 2:17 PM, Brian Curtis <bcurtis3 at masonlive.gmu.edu> wrote:
>>> Hi,
>>>
>>> I'm looking for an example that does this or a few examples that show the proper way to do this.
>>>
>>> I'm not sure how to understand vtkProbeFilter from http://www.vtk.org/doc/nightly/html/classvtkProbeFilter.html and what part of it will do the work I need.
>>>
>>> vtkProbeFilter->Probe requires three vtkDataSet but how do I get my points into a dataset?
>>>
>>> Thanks for your help,
>>> ~Brian
>>>
>>> On 05/08/2012 11:10 AM, Brian Curtis wrote:
>>> Hi,
>>>
>>> I am interested in creating the following simple example in order to expand off of at a later time:
>>> - Create a cube (8 points) with scalar values all set to 1
>>> - Create a line (5 points) that intersects with cube
>>> - Get scalar interpolations for the line from the cube
>>>
>>> Cube pts:
>>> float pts[8][3] = { {-1.0, -1.0, -1.0}, {-1.0, 1.0, -1.0},
>>> {-1.0, 1.0, 1.0}, {-1.0, -1.0, 1.0},
>>> {1.0, -1.0, -1.0}, {1.0, 1.0, -1.0},
>>> {1.0, 1.0, 1.0}, {1.0, -1.0, 1.0} };
>>> Line pts:
>>> float line[5][3] = { {-2.0, 2.0, -2.0}, {-1.0, 1.0, -1.0},
>>> {0.0, 0.0, 0.0}, {1.0, -1.0, 1.0}, {2.0, -2.0, 2.0} };
>>>
>>> I could not find a simple example to do this, and I'm not exactly sure if probefilter is the right way to go about this. What the best (and easiest) way to approach this problem?
>>>
>>> Thanks,
>>> ~Brian
>>>
>>> _______________________________________________
>>> 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
>>>
>>>
>>>
>>> _______________________________________________
>>> 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
>>>
>>>
>>>
>>> --
>>> Jothy
>>>
>>
>>
>>
>>
>> --
>> Jothy
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.vtk.org/pipermail/vtkusers/attachments/20120510/a9cc0033/attachment.htm>
More information about the vtkusers
mailing list