public class CircleCursor<T> extends Object implements Cursor<T>
Each point of the circle is iterated exactly once, and there is no "hole" in the circle. Contrary to the algorithm linked below, the circles generated by this cursor are "slim": each pixel of the circle is connected with 8-connectivity. For instance, a bitmap excerpt from such a circle looks like this:
.......... OOO....... ...OO..... .....O.... .....O....
Constructor and Description |
---|
CircleCursor(RandomAccessible<T> rai,
Localizable center,
long radius)
Iterates over a Bresenham circle in the target
RandomAccessible . |
CircleCursor(RandomAccessible<T> rai,
Localizable center,
long radius,
int dimX,
int dimY)
Iterates over a Bresenham circle in the target
RandomAccessible . |
Modifier and Type | Method and Description |
---|---|
Sampler<T> |
copy() |
Cursor<T> |
copyCursor() |
void |
fwd()
Move forward.
|
T |
get()
Access the actual T instance providing access to a pixel,
sub-pixel or integral region value the
Sampler points at. |
double |
getDoublePosition(int d)
Return the current position in a given dimension.
|
float |
getFloatPosition(int d)
Return the current position in a given dimension.
|
int |
getIntPosition(int d)
Return the current position in a given dimension.
|
long |
getLongPosition(int d)
Return the current position in a given dimension.
|
boolean |
hasNext()
Returns true if another step forward is possible.
|
void |
jumpFwd(long steps)
Move steps × forward.
|
void |
localize(double[] position)
Write the current position into the passed array.
|
void |
localize(float[] position)
Write the current position into the passed array.
|
void |
localize(int[] position)
Write the current position into the passed array.
|
void |
localize(long[] position)
Write the current position into the passed array.
|
T |
next() |
int |
numDimensions()
Gets the space's number of dimensions.
|
void |
reset()
Reset the
Iterator , that is put it to where it would be if newly
created. |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
forEachRemaining, remove
localize, positionAsLongArray, positionAsPoint
localize, positionAsDoubleArray, positionAsRealPoint
public CircleCursor(RandomAccessible<T> rai, Localizable center, long radius)
RandomAccessible
.
Each point of the circle is iterated exactly once, and there is no "hole"
in the circle.rai
- the random accessible. It is the caller responsibility to
ensure it can be accessed everywhere the circle will be
iterated.center
- the circle center. Must be at least of dimension 2. Dimensions
0 and 1 are used to specify the circle center.radius
- the circle radius. The circle is written in a plane in
dimensions 0 and 1.public CircleCursor(RandomAccessible<T> rai, Localizable center, long radius, int dimX, int dimY)
RandomAccessible
.
Each point of the circle is iterated exactly once, and there is no "hole"
in the circle.rai
- the random accessible. It is the caller responsibility to
ensure it can be accessed everywhere the circle will be
iterated.center
- the circle center. Must at least contain dimensions specified
dimX
and dimY
.radius
- the circle radius.dimX
- the first dimension of the plane in which to draw the circle.dimY
- the second dimension of the plane in which to draw the circle.public void reset()
Iterator
Iterator
, that is put it to where it would be if newly
created.public void fwd()
Iterator
public boolean hasNext()
Iterator
public void localize(float[] position)
RealLocalizable
localize
in interface RealLocalizable
position
- receives current positionpublic void localize(double[] position)
RealLocalizable
localize
in interface RealLocalizable
position
- receives current positionpublic float getFloatPosition(int d)
RealLocalizable
getFloatPosition
in interface Localizable
getFloatPosition
in interface RealLocalizable
d
- dimensionpublic double getDoublePosition(int d)
RealLocalizable
getDoublePosition
in interface Localizable
getDoublePosition
in interface RealLocalizable
d
- dimensionpublic int numDimensions()
EuclideanSpace
numDimensions
in interface EuclideanSpace
public T get()
Sampler
Sampler
points at.public Sampler<T> copy()
copy
in interface Sampler<T>
Sampler
in the same state accessing the same
values.
It does NOT copy T, just the state of the Sampler
.
Otherwise use T.copy() if available.
Sampler.copy().get() == Sampler.get(), i.e. both hold the same
value, not necessarily the same instance (this is the case for an
ArrayCursor
for example)public void jumpFwd(long steps)
Iterator
steps
- number of steps to move forwardpublic void localize(int[] position)
Localizable
localize
in interface Localizable
position
- receives current positionpublic void localize(long[] position)
Localizable
localize
in interface Localizable
position
- receives current positionpublic int getIntPosition(int d)
Localizable
getIntPosition
in interface Localizable
d
- dimensionpublic long getLongPosition(int d)
Localizable
getLongPosition
in interface Localizable
d
- dimensionpublic Cursor<T> copyCursor()
copyCursor
in interface Cursor<T>
copyCursor
in interface RealCursor<T>
Copyright © 2015–2022 ImgLib2. All rights reserved.