Cloned library of VTK-5.0.0 with extra build files for internal package management.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

602 lines
18 KiB

/*=========================================================================
Program: Visualization Toolkit
Module: $RCSfile: otherRectilinearGrid.cxx,v $
Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
All rights reserved.
See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
This software is distributed WITHOUT ANY WARRANTY; without even
the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
PURPOSE. See the above copyright notice for more information.
=========================================================================*/
// .NAME
// .SECTION Description
// this program tests vtkRectilinearGrid
#include "vtkCell.h"
#include "vtkDebugLeaks.h"
#include "vtkDoubleArray.h"
#include "vtkDoubleArray.h"
#include "vtkGenericCell.h"
#include "vtkIdList.h"
#include "vtkLongArray.h"
#include "vtkPointData.h"
#include "vtkRectilinearGrid.h"
#include "vtkShortArray.h"
int TestORG(ostream& strm)
{
int i, j, k;
// actual test
strm << "Testing vtkRectilinearGrid" << endl;
vtkRectilinearGrid *rg0D = vtkRectilinearGrid::New();
vtkRectilinearGrid *rg1Dx = vtkRectilinearGrid::New();
vtkRectilinearGrid *rg1Dy = vtkRectilinearGrid::New();
vtkRectilinearGrid *rg1Dz = vtkRectilinearGrid::New();
vtkRectilinearGrid *rg2Dxy = vtkRectilinearGrid::New();
vtkRectilinearGrid *rg2Dxz = vtkRectilinearGrid::New();
vtkRectilinearGrid *rg2Dyz = vtkRectilinearGrid::New();
vtkRectilinearGrid *rg3D = vtkRectilinearGrid::New();
vtkDoubleArray *xdata = vtkDoubleArray::New();
vtkDoubleArray *ydata = vtkDoubleArray::New();
vtkDoubleArray *zdata = vtkDoubleArray::New();
for (i = 0; i < 20; i++)
{
xdata->InsertNextValue((double) i);
ydata->InsertNextValue((double) i);
zdata->InsertNextValue((double) i);
}
rg3D->SetDimensions(20,20,20);
rg3D->SetXCoordinates(xdata);
rg3D->SetYCoordinates(ydata);
rg3D->SetZCoordinates(zdata);
rg2Dxy->SetDimensions(20,20,1);
rg2Dxy->SetXCoordinates(xdata);
rg2Dxy->SetYCoordinates(ydata);
rg2Dxz->SetDimensions(20,1,20);
rg2Dxz->SetXCoordinates(xdata);
rg2Dxz->SetZCoordinates(zdata);
rg2Dyz->SetDimensions(1,20,20);
rg2Dyz->SetYCoordinates(ydata);
rg2Dyz->SetZCoordinates(zdata);
rg1Dx->SetDimensions(20,1,1);
rg1Dx->SetXCoordinates(xdata);
rg1Dy->SetDimensions(1,20,1);
rg1Dy->SetYCoordinates(ydata);
strm << *rg1Dy;
rg1Dz->SetDimensions(1,1,20);
rg1Dz->SetZCoordinates(zdata);
rg0D->SetDimensions(1,1,1);
vtkShortArray *shortScalars3D = vtkShortArray::New();
shortScalars3D->SetNumberOfComponents(3);
shortScalars3D->SetNumberOfTuples(20*20*20);
int l = 0;
for (k = 0; k < 20; k++)
{
for (j = 0; j < 20; j++)
{
for (i = 0; i < 20; i++)
{
shortScalars3D->InsertComponent(l,0,i);
shortScalars3D->InsertComponent(l,0,j);
shortScalars3D->InsertComponent(l,0,k);
l++;
}
}
}
vtkShortArray *shortScalars2D = vtkShortArray::New();
shortScalars2D->SetNumberOfComponents(2);
shortScalars2D->SetNumberOfTuples(20*20);
l = 0;
for (j = 0; j < 20; j++)
{
for (i = 0; i < 20; i++)
{
shortScalars2D->InsertComponent(l,0,i);
shortScalars2D->InsertComponent(l,0,j);
l++;
}
}
vtkShortArray *shortScalars1D = vtkShortArray::New();
shortScalars1D->SetNumberOfComponents(1);
shortScalars1D->SetNumberOfTuples(20);
l = 0;
for (i = 0; i < 20; i++)
{
shortScalars1D->InsertComponent(l,0,i);
l++;
}
vtkShortArray *shortScalars0D = vtkShortArray::New();
shortScalars0D->SetNumberOfComponents(1);
shortScalars0D->SetNumberOfTuples(1);
l = 0;
shortScalars0D->InsertComponent(l,0,0);
rg3D->GetPointData()->SetScalars(shortScalars3D);
rg2Dxy->GetPointData()->SetScalars(shortScalars2D);
rg2Dxz->GetPointData()->SetScalars(shortScalars2D);
rg2Dyz->GetPointData()->SetScalars(shortScalars2D);
rg1Dx->GetPointData()->SetScalars(shortScalars1D);
rg1Dy->GetPointData()->SetScalars(shortScalars1D);
rg1Dz->GetPointData()->SetScalars(shortScalars1D);
rg0D->GetPointData()->SetScalars(shortScalars0D);
strm << "rg3D:" << *rg3D;
// Test shallow copy
vtkRectilinearGrid *scrg3D = vtkRectilinearGrid::New();
scrg3D->ShallowCopy(rg3D);
strm << "ShallowCopy(rg3D):" << *scrg3D;
// Test deep copy
vtkRectilinearGrid *dcrg3D = vtkRectilinearGrid::New();
dcrg3D->DeepCopy(rg3D);
strm << "DeepCopy(rg3D):" << *dcrg3D;
// Test GetCell
vtkIdList *ids = vtkIdList::New();
int cellId;
int ii;
i = 10; j = 15; k = 7;
cellId = k * (19 * 19) + j * 19 + i;
vtkCell *cell3D = rg3D->GetCell(cellId);
strm << "cell3D: " << *cell3D ;
rg3D->GetCellPoints (cellId, ids);
strm << "Ids for cell " << cellId << " are ";
for (ii = 0; ii < ids->GetNumberOfIds(); ii++)
{
strm << ids->GetId(ii) << " ";
}
strm << endl << endl;
i = 10; j = 15;
cellId = j * 19 + i;
vtkCell *cell2D = rg2Dxy->GetCell(cellId);
strm << "cell2D: " << *cell2D ;
rg2Dxy->GetCellPoints (cellId, ids);
strm << "Ids for cell " << cellId << " are ";
for (ii = 0; ii < ids->GetNumberOfIds(); ii++)
{
strm << ids->GetId(ii) << " ";
}
strm << endl << endl;
i = 10; j = 15;
cellId = j * 19 + i;
cell2D = rg2Dxz->GetCell(j * 19 + i);
strm << "cell2D: " << *cell2D ;
rg2Dxz->GetCellPoints (cellId, ids);
strm << "Ids for cell " << cellId << " are ";
for (ii = 0; ii < ids->GetNumberOfIds(); ii++)
{
strm << ids->GetId(ii) << " ";
}
strm << endl << endl;
i = 10; j = 15;
cellId = j * 19 + i;
cell2D = rg2Dyz->GetCell(j * 19 + i);
strm << "cell2D: " << *cell2D ;
rg2Dyz->GetCellPoints (cellId, ids);
strm << "Ids for cell " << cellId << " are ";
for (ii = 0; ii < ids->GetNumberOfIds(); ii++)
{
strm << ids->GetId(ii) << " ";
}
strm << endl << endl;
i = 10;
cellId = i;
vtkCell *cell1D = rg1Dx->GetCell(i);
strm << "cell1D: " << *cell1D;
rg1Dx->GetCellPoints (cellId, ids);
strm << "Ids for cell " << cellId << " are ";
for (ii = 0; ii < ids->GetNumberOfIds(); ii++)
{
strm << ids->GetId(ii) << " ";
}
strm << endl << endl;
i = 10;
cellId = i;
cell1D = rg1Dy->GetCell(i);
strm << "cell1D: " << *cell1D;
rg1Dy->GetCellPoints (cellId, ids);
strm << "Ids for cell " << cellId << " are ";
for (ii = 0; ii < ids->GetNumberOfIds(); ii++)
{
strm << ids->GetId(ii) << " ";
}
strm << endl << endl;
i = 10;
cellId = i;
cell1D = rg1Dz->GetCell(i);
strm << "cell1D: " << *cell1D;
rg1Dz->GetCellPoints (cellId, ids);
strm << "Ids for cell " << cellId << " are ";
for (ii = 0; ii < ids->GetNumberOfIds(); ii++)
{
strm << ids->GetId(ii) << " ";
}
strm << endl << endl;
cellId = 0;
vtkCell *cell0D = rg0D->GetCell(0);
strm << "cell0D: " << *cell0D;
rg0D->GetCellPoints (cellId, ids);
strm << "Ids for cell " << cellId << " are ";
for (ii = 0; ii < ids->GetNumberOfIds(); ii++)
{
strm << ids->GetId(ii) << " ";
}
strm << endl << endl;
// Test Thread Safe GetCell
vtkGenericCell *gcell3D = vtkGenericCell::New();
vtkGenericCell *gcell2D = vtkGenericCell::New();
vtkGenericCell *gcell1D = vtkGenericCell::New();
vtkGenericCell *gcell0D = vtkGenericCell::New();
i = 10; j = 15; k = 7;
rg3D->GetCell(k * (19 * 19) + j * 19 + i, gcell3D);
strm << "gcell3D: " << *gcell3D ;
i = 10; j = 15;
rg2Dxy->GetCell(j * 19 + i,gcell2D);
strm << "gcell2D: " << *gcell2D ;
i = 10; j = 15;
rg2Dxz->GetCell(j * 19 + i,gcell2D);
strm << "gcell2D: " << *gcell2D ;
i = 10; j = 15;
rg2Dxz->GetCell(j * 19 + i,gcell2D);
strm << "gcell2D: " << *gcell2D ;
i = 10; j = 15;
rg2Dyz->GetCell(j * 19 + i,gcell2D);
strm << "gcell2D: " << *gcell2D ;
i = 10;
rg1Dx->GetCell(i,gcell1D);
strm << "gcell1D: " << *gcell1D;
i = 10;
rg1Dy->GetCell(i,gcell1D);
strm << "gcell1D: " << *gcell1D;
i = 10;
rg1Dz->GetCell(i,gcell1D);
strm << "gcell1D: " << *gcell1D;
i = 10;
rg0D->GetCell(0,gcell0D);
strm << "gcell0D: " << *gcell0D;
// Test GetCellBounds
double bounds[6];
rg3D->GetCellBounds(k * (19 * 19) + j * 19 + i, bounds);
strm << "GetCellBounds(rg3D): "
<< bounds[0] << ", " << bounds[1] << ", "
<< bounds[2] << ", " << bounds[3] << ", "
<< bounds[4] << ", " << bounds[5] << endl;
rg2Dxy->GetCellBounds(j * 19 + i, bounds);
strm << "GetCellBounds(rg2Dxy): "
<< bounds[0] << ", " << bounds[1] << ", "
<< bounds[2] << ", " << bounds[3] << ", "
<< bounds[4] << ", " << bounds[5] << endl;
rg2Dxz->GetCellBounds(j * 19 + i, bounds);
strm << "GetCellBounds(rg2Dxz): "
<< bounds[0] << ", " << bounds[1] << ", "
<< bounds[2] << ", " << bounds[3] << ", "
<< bounds[4] << ", " << bounds[5] << endl;
rg2Dyz->GetCellBounds(j * 19 + i, bounds);
strm << "GetCellBounds(rg2Dyz): "
<< bounds[0] << ", " << bounds[1] << ", "
<< bounds[2] << ", " << bounds[3] << ", "
<< bounds[4] << ", " << bounds[5] << endl;
rg1Dx->GetCellBounds(i, bounds);
strm << "GetCellBounds(rg1x): "
<< bounds[0] << ", " << bounds[1] << ", "
<< bounds[2] << ", " << bounds[3] << ", "
<< bounds[4] << ", " << bounds[5] << endl;
rg1Dy->GetCellBounds(i, bounds);
strm << "GetCellBounds(rg1Dy): "
<< bounds[0] << ", " << bounds[1] << ", "
<< bounds[2] << ", " << bounds[3] << ", "
<< bounds[4] << ", " << bounds[5] << endl;
rg1Dz->GetCellBounds(i, bounds);
strm << "GetCellBounds(rg1Dz): "
<< bounds[0] << ", " << bounds[1] << ", "
<< bounds[2] << ", " << bounds[3] << ", "
<< bounds[4] << ", " << bounds[5] << endl;
rg0D->GetCellBounds(i, bounds);
strm << "GetCellBounds(rg0D): "
<< bounds[0] << ", " << bounds[1] << ", "
<< bounds[2] << ", " << bounds[3] << ", "
<< bounds[4] << ", " << bounds[5] << endl;
// Test GetPoint
double point[6];
rg3D->GetPoint(k * (20 * 20) + j * 20 + i, point);
strm << "GetPoint(rg3D): "
<< point[0] << ", " << point[1] << ", " << point[2] << endl;
rg2Dxy->GetPoint(j * 20 + i, point);
strm << "GetPoint(rg2Dxy): "
<< point[0] << ", " << point[1] << ", " << point[2] << endl;
rg2Dxz->GetPoint(j * 20 + i, point);
strm << "GetPoint(rg2Dxz): "
<< point[0] << ", " << point[1] << ", " << point[2] << endl;
rg2Dyz->GetPoint(j * 20 + i, point);
strm << "GetPoint(rg2Dyz): "
<< point[0] << ", " << point[1] << ", " << point[2] << endl;
rg1Dx->GetPoint(i, point);
strm << "GetPoint(rg1x): "
<< point[0] << ", " << point[1] << ", " << point[2] << endl;
rg1Dy->GetPoint(i, point);
strm << "GetPoint(rg1Dy): "
<< point[0] << ", " << point[1] << ", " << point[2] << endl;
rg1Dz->GetPoint(i, point);
strm << "GetPoint(rg1Dz): "
<< point[0] << ", " << point[1] << ", " << point[2] << endl;
rg0D->GetPoint(0, point);
strm << "GetPoint(rg0D): "
<< point[0] << ", " << point[1] << ", " << point[2] << endl;
// Test FindPoint
double point3D[3] = {10, 12, 14};
rg3D->GetPoint(rg3D->FindPoint(point3D), point);
strm << "FindPoint("
<< point3D[0] << ", " << point3D[1] << ", " << point3D[2] << ") = "
<< point[0] << ", " << point[1] << ", " << point[2] << endl;
point3D[0] = 10; point3D[1] = 12; point3D[2] = 0;
rg2Dxy->GetPoint(rg2Dxy->FindPoint(point3D), point);
strm << "FindPoint("
<< point3D[0] << ", " << point3D[1] << ", " << point3D[2] << ") = "
<< point[0] << ", " << point[1] << ", " << point[2] << endl;
point3D[0] = 10; point3D[1] = 0; point3D[2] = 14;
rg2Dxz->GetPoint(rg2Dxz->FindPoint(point3D), point);
strm << "FindPoint("
<< point3D[0] << ", " << point3D[1] << ", " << point3D[2] << ") = "
<< point[0] << ", " << point[1] << ", " << point[2] << endl;
point3D[0] = 0; point3D[1] = 12; point3D[2] = 14;
rg2Dyz->GetPoint(rg2Dyz->FindPoint(point3D), point);
strm << "FindPoint("
<< point3D[0] << ", " << point3D[1] << ", " << point3D[2] << ") = "
<< point[0] << ", " << point[1] << ", " << point[2] << endl;
point3D[0] = 10; point3D[1] = 0; point3D[2] = 0;
rg1Dx->GetPoint(rg1Dx->FindPoint(point3D), point);
strm << "FindPoint("
<< point3D[0] << ", " << point3D[1] << ", " << point3D[2] << ") = "
<< point[0] << ", " << point[1] << ", " << point[2] << endl;
point3D[0] = 0; point3D[1] = 12; point3D[2] = 0;
rg1Dy->GetPoint(rg1Dy->FindPoint(point3D), point);
strm << "FindPoint("
<< point3D[0] << ", " << point3D[1] << ", " << point3D[2] << ") = "
<< point[0] << ", " << point[1] << ", " << point[2] << endl;
point3D[0] = 0; point3D[1] = 0; point3D[2] = 14;
rg1Dz->GetPoint(rg1Dz->FindPoint(point3D), point);
strm << "FindPoint("
<< point3D[0] << ", " << point3D[1] << ", " << point3D[2] << ") = "
<< point[0] << ", " << point[1] << ", " << point[2] << endl;
// Test FindAndGetCell
double pcoords[3], weights[8];
int subId;
vtkCell *dummyCell = NULL;
point3D[0] = 10.5;
point3D[1] = 12.1;
point3D[2] = 14.7;
strm << "FindAndGetCell(rg3D): " << *rg3D->FindAndGetCell(point3D, dummyCell, 0, 0, subId, pcoords, weights);
strm << "pcoords: "
<< pcoords[0] << ", " << pcoords[1] << ", " << pcoords[2] << endl;
strm << "weights: "
<< weights[0] << ", " << weights[1] << ", "
<< weights[2] << ", " << weights[3] << ", "
<< weights[4] << ", " << weights[5] << ", "
<< weights[6] << ", " << weights[7] << endl;
point3D[0] = 10.5; point3D[1] = 12.1; point3D[2] = 0;
pcoords[0] = pcoords[1] = pcoords[2] = 0.0;
dummyCell = 0;
vtkCell *found = rg2Dxy->FindAndGetCell(point3D, dummyCell, 0, 0, subId, pcoords, weights);
if (found == NULL)
{
strm << "FindAndGetCell(rg2Dxy) not found!" << endl;
return 1;
}
strm << "FindAndGetCell(rg2Dxy): " << *found;
strm << "pcoords: "
<< pcoords[0] << ", " << pcoords[1] << endl;
strm << "weights: "
<< weights[0] << ", " << weights[1] << ", " << weights[2] << ", " << weights[3] << endl;
point3D[0] = 10.5; point3D[1] = 0.0; point3D[2] = 14.7;
pcoords[0] = pcoords[1] = pcoords[2] = 0.0;
weights[0] = weights[1] = weights[2] = weights[3] = 0.0;
dummyCell = 0;
found = rg2Dxz->FindAndGetCell(point3D, dummyCell, 0, 0, subId, pcoords, weights);
if (found == NULL)
{
strm << "FindAndGetCell(rg2Dxz) not found!" << endl;
return 1;
}
strm << "FindAndGetCell(rg2Dxz): " << *found;
strm << "pcoords: "
<< pcoords[0] << ", " << pcoords[1] << endl;
strm << "weights: "
<< weights[0] << ", " << weights[1] << ", " << weights[2] << ", " << weights[3] << endl;
point3D[0] = 0.0; point3D[1] = 12.1; point3D[2] = 14.7;
pcoords[0] = pcoords[1] = pcoords[2] = 0.0;
weights[0] = weights[1] = weights[2] = weights[3] = 0.0;
dummyCell = 0;
found = rg2Dyz->FindAndGetCell(point3D, dummyCell, 0, 0, subId, pcoords, weights);
if (found == NULL)
{
strm << "FindAndGetCell(rg2Dyz) not found!" << endl;
return 1;
}
strm << "FindAndGetCell(rg2Dyz): " << *found;
strm << "pcoords: "
<< pcoords[0] << ", " << pcoords[1] << endl;
strm << "weights: "
<< weights[0] << ", " << weights[1] << ", " << weights[2] << ", " << weights[3] << endl;
point3D[0] = 10.5; point3D[1] = 0.0; point3D[2] = 0.0;
dummyCell = 0;
found = rg1Dx->FindAndGetCell(point3D, dummyCell, 0, 0, subId, pcoords, weights);
if (found == NULL)
{
strm << "FindAndGetCell(rg1Dx) not found!" << endl;
return 1;
}
strm << "FindAndGetCell(rg1Dx): " << *found;
strm << "pcoords: "
<< pcoords[0] << endl;
strm << "weights: "
<< weights[0] << ", " << weights[1] << endl;
point3D[0] = 0.0; point3D[1] = 12.1; point3D[2] = 0.0;
dummyCell = 0;
found = rg1Dy->FindAndGetCell(point3D, dummyCell, 0, 0, subId, pcoords, weights);
if (found == NULL)
{
strm << "FindAndGetCell(rg1Dy) not found!" << endl;
return 1;
}
strm << "FindAndGetCell(rg1Dy): " << *found;
strm << "pcoords: "
<< pcoords[0] << endl;
strm << "weights: "
<< weights[0] << ", " << weights[1] << endl;
point3D[0] = 0.0; point3D[1] = 0.0; point3D[2] = 14.7;
dummyCell = 0;
found = rg1Dz->FindAndGetCell(point3D, dummyCell, 0, 0, subId, pcoords, weights);
if (found == NULL)
{
strm << "FindAndGetCell(rg1Dz) not found!" << endl;
return 1;
}
strm << "FindAndGetCell(rg1Dz): " << *found;
strm << "pcoords: "
<< pcoords[0] << endl;
strm << "weights: "
<< weights[0] << ", " << weights[1] << endl;
// Test GetCellType
strm << "GetCellType(rg3D): " << rg3D->GetCellType(0) << endl;
strm << "GetCellType(rg2Dxy): " << rg2Dxy->GetCellType(0) << endl;
strm << "GetCellType(rg2Dxz): " << rg2Dxz->GetCellType(0) << endl;
strm << "GetCellType(rg2Dyz): " << rg2Dyz->GetCellType(0) << endl;
strm << "GetCellType(rg1Dx): " << rg1Dx->GetCellType(0) << endl;
strm << "GetCellType(rg1Dy): " << rg1Dy->GetCellType(0) << endl;
strm << "GetCellType(rg1Dz): " << rg1Dz->GetCellType(0) << endl;
strm << "GetCellType(rg0D): " << rg0D->GetCellType(0) << endl;
// Test GetActualMemorySize
strm << "GetActualMemorySize(rg3D): " << rg3D->GetActualMemorySize() << endl;
strm << "GetActualMemorySize(rg2Dxy): " << rg2Dxy->GetActualMemorySize() << endl;
strm << "GetActualMemorySize(rg2Dxz): " << rg2Dxz->GetActualMemorySize() << endl;
strm << "GetActualMemorySize(rg2Dyz): " << rg2Dyz->GetActualMemorySize() << endl;
strm << "GetActualMemorySize(rg1Dx): " << rg1Dx->GetActualMemorySize() << endl;
strm << "GetActualMemorySize(rg1Dy): " << rg1Dy->GetActualMemorySize() << endl;
strm << "GetActualMemorySize(rg1Dz): " << rg1Dz->GetActualMemorySize() << endl;
strm << "GetActualMemorySize(rg0D): " << rg0D->GetActualMemorySize() << endl;
// Cleanup
rg0D->Delete();
rg1Dx->Delete();
rg1Dy->Delete();
rg1Dz->Delete();
rg2Dxy->Delete();
rg2Dxz->Delete();
rg2Dyz->Delete();
rg3D->Delete();
xdata->Delete();
ydata->Delete();
zdata->Delete();
shortScalars3D->Delete();
shortScalars2D->Delete();
shortScalars1D->Delete();
shortScalars0D->Delete();
scrg3D->Delete();
dcrg3D->Delete();
ids->Delete();
gcell3D->Delete();
gcell2D->Delete();
gcell1D->Delete();
gcell0D->Delete();
strm << "Testing completed" << endl;
return 0;
}
int otherRectilinearGrid(int,char *[])
{
ostrstream vtkmsg_with_warning_C4701;
return TestORG(vtkmsg_with_warning_C4701);
}