[vtkusers] a exception from vtkImageData - out side of array (max = 3611999999
ququ chen
chenququ at gmail.com
Wed Nov 17 11:56:35 EST 2010
hi,
When i use vtkImageMarchingCubes to create 3d image, if I have more than
300 slices, a exception will be thrown from vtkImageData. Say Coordinate
("0, 0, 255") out side of array (max = 3611999999).
Anybody has idea to solve it? I couldn't find where defined the size of
this array also.
vtkImageData.cxx
//----------------------------------------------------------------------------
// This Method returns a pointer to a location in the vtkImageData.
// Coordinates are in pixel units and are relative to the whole
// image origin.
void *vtkImageData::GetArrayPointer(vtkDataArray* array, int coordinate[3])
{
vtkIdType incs[3];
vtkIdType idx;
if (array == NULL)
{
return NULL;
}
const int* extent = this->Extent;
// error checking: since most acceses will be from pointer arithmetic.
// this should not waste much time.
for (idx = 0; idx < 3; ++idx)
{
if (coordinate[idx] < extent[idx*2] ||
coordinate[idx] > extent[idx*2+1])
{
vtkErrorMacro(<< "GetPointer: Pixel (" << coordinate[0] << ", "
<< coordinate[1] << ", "
<< coordinate[2] << ") not in current extent: ("
<< extent[0] << ", " << extent[1] << ", "
<< extent[2] << ", " << extent[3] << ", "
<< extent[4] << ", " << extent[5] << ")");
return NULL;
}
}
// compute the index of the vector.
this->GetArrayIncrements(array, incs);
idx = ((coordinate[0] - extent[0]) * incs[0]
+ (coordinate[1] - extent[2]) * incs[1]
+ (coordinate[2] - extent[4]) * incs[2]);
// I could check to see if the array has the correct number
// of tuples for the extent, but that would be an extra multiply.
if (idx < 0 || idx > array->GetMaxId())
{
vtkErrorMacro("Coordinate (" << coordinate[0] << ", " << coordinate[1]
<< ", " << coordinate[2] << ") out side of array (max = "
<< array->GetMaxId());
return NULL;
}
return array->GetVoidPointer(idx);
}
Thanks a lot.
-cq
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.vtk.org/pipermail/vtkusers/attachments/20101117/d4777997/attachment.htm>
More information about the vtkusers
mailing list