In principle it serves as a place holder for the lattice shape and
tile shape. The functions shape and tileShape
can be used to retrieve the shapes.
However, when the tile shape is not given, the function
tileShape calculates a default tile shape using the
given maximum tile size in pixel elements. The default tile shape
is calculated in such a way that the sizes of its axes
are proportional to the sizes of the lattice axes. Per axis it is
tried as much as possible to fit an integral number of tiles
in the lattice.
In this way getting the tile shape is completely transparent.
// Do not explicitly define a tile shape. // This results in a default tile shape (of 32,32,32). TiledShape shape(IPosition(3,128,128,128)); cout << shape.shape() << ' ' << shape.tileShape() << endl; // Use with an explicitly given tile shape. TiledShape shape(IPosition(3,128,128,128), IPosition(3,64,32,8)); cout << shape.shape() << ' ' << shape.tileShape() << endl;
Use the given shape. No tile shape is given, so function tileShape will calculate it using the size of a tile.
Use the given shape and tile shape. Both shapes must be conforming (i.e. have same number of elements).
Copy constructor (copy semantics).
Assignment (copy semantics).
Is the tile shape defined?
Return the shape.
Return the tile shape.
When the tile shape is undefined, the default tile shape will be
calculated using the given tile size and tolerance.
The tolerance is used to determine the boundaries where
it is tried to fit an integral number of tiles.
Derive the default tile shape from the shape for the given
number of pixels per tile. It is tried to get the same number
of tiles for each dimension.
When a weight vector is given, the number of tiles for a dimension
is proportional to the weight.
After the initial guess it tries to optimize it by trying to
waste as little space as possible, while trying to keep as close as
possible to the initial guess. The given tolerance (possibly per axis)
gives the minimum and maximum possible length of a tile axis
(minimum = initial_guess*tolerance; maximum = initial_guess/tolerance).
The heuristic is such that a tile axis length dividing the cube length
exactly is always favoured.
The test program tTiledShape can be used to see how
the algorithm works out for a given shape and tile size.