[vtkusers] Bounds computation of vtkImageData

David Gobbi david.gobbi at gmail.com
Tue Jan 31 09:13:21 EST 2017


If you use vtkCellPicker, then positions beyond the bounds will not be
picked.  If you use vtkPropPicker, the pick will be based on what is drawn
on the screen, and by default the vtkImageActor and vtkImageSliceMapper
only draw the image out to its bounds (but this can be changed by setting
the "Border" property of the mapper, which causes the border region to be
drawn).

 - David

On Tue, Jan 31, 2017 at 6:38 AM, Timothee Evain <tevain at telecom-paristech.fr
> wrote:

> Oh right, thanks for remembering me that!
> Does that mean that, if image is displayed, a pick on border of data could
> return an out-of-bound position value ?
>
> Tim
>
> ----- Mail original -----
> De: "David Gobbi" <david.gobbi at gmail.com>
> À: "Timothee Evain" <tevain at telecom-paristech.fr>
> Cc: "VTK Users" <vtkusers at vtk.org>
> Envoyé: Mardi 31 Janvier 2017 14:16:57
> Objet: Re: [vtkusers] Bounds computation of vtkImageData
>
> Hi Tim,
>
> The bounds go from the center of the first voxel to the center of the last
> voxel.  So the code in vtkImageData.cxx is correct.
>
>  - David
>
> On Tue, Jan 31, 2017 at 4:14 AM, Timothee Evain <
> tevain at telecom-paristech.fr
> > wrote:
>
> > Hello everyone,
> >
> > It may be more a dev issue, but I think there is a small mistake in the
> > ComputeBounds() method of vtkImageData
> > When computing upper bounds, code read (line 781 of vtkImageData.cxx):
> >
> > this->Bounds[1] = origin[0] + (extent[1-swapXBounds] * spacing[0]);
> > this->Bounds[3] = origin[1] + (extent[3-swapYBounds] * spacing[1]);
> > this->Bounds[5] = origin[2] + (extent[5-swapZBounds] * spacing[2]);
> >
> > Since the upper extent is meant to be the index of the last inside point,
> > this leads to upper bounds excluding the upper fringe of data in each
> > direction.
> > So I guess this part should read something like:
> >
> > this->Bounds[1] = origin[0] + ( (extent[1-swapXBounds] + 1) *
> spacing[0]);
> > this->Bounds[3] = origin[1] + ( (extent[3-swapYBounds] + 1) *
> spacing[1]);
> > this->Bounds[5] = origin[2] + ( (extent[5-swapZBounds] + 1) *
> spacing[2]);
> >
> > Am I mistaken ?
> >
> > Tim
> >
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://public.kitware.com/pipermail/vtkusers/attachments/20170131/1b162fbf/attachment.html>


More information about the vtkusers mailing list