Class FullSourceMapMixedRandomAccess<T>

  • Type Parameters:
    T -
    All Implemented Interfaces:
    EuclideanSpace, Localizable, Positionable, RandomAccess<T>, RealLocalizable, Sampler<T>, Typed<T>

    public final class FullSourceMapMixedRandomAccess<T>
    extends AbstractEuclideanSpace
    implements RandomAccess<T>
    Wrap a source RandomAccess which is related to this by a Mixed transformToSource. This is for Mixed transforms that feature a full mapping of source to target components. That is, there is no down-projection, no source component is discarded. In this case, the current position can be recovered from the position of the source RandomAccess. Localize can be implemented via localize on the source RandomAccess.

    For the general case, see MixedRandomAccess.

    • Field Detail

      • s

        private final RandomAccess<T> s
        source RandomAccess. note that this is the target of the transformToSource.
      • m

        private final int m
        number of dimensions of source RandomAccess, respectively numTargetDimensions of the Mixed transform.
      • translation

        private final long[] translation
      • sourceInv

        private final boolean[] sourceInv
        for each component of the source vector: should the target vector component be inverted (true).
      • sourceComponent

        private final int[] sourceComponent
        for each component of the source vector: to which target vector component should it be taken.
      • tmpPosition

        private final long[] tmpPosition
      • tmpDistance

        private final long[] tmpDistance
    • Constructor Detail

      • FullSourceMapMixedRandomAccess

        FullSourceMapMixedRandomAccess​(RandomAccess<T> source,
                                       Mixed transformToSource)
    • Method Detail

      • localize

        public void localize​(int[] position)
        Description copied from interface: Localizable
        Write the current position into the passed array.
        Specified by:
        localize in interface Localizable
        Parameters:
        position - receives current position, length must be ≥ EuclideanSpace.numDimensions()
      • localize

        public void localize​(long[] position)
        Description copied from interface: Localizable
        Write the current position into the passed array.
        Specified by:
        localize in interface Localizable
        Parameters:
        position - receives current position, length must be ≥ EuclideanSpace.numDimensions()
      • getIntPosition

        public int getIntPosition​(int d)
        Description copied from interface: Localizable
        Return the current position in a given dimension.
        Specified by:
        getIntPosition in interface Localizable
        Parameters:
        d - dimension
        Returns:
        dimension of current position
      • getLongPosition

        public long getLongPosition​(int d)
        Description copied from interface: Localizable
        Return the current position in a given dimension.
        Specified by:
        getLongPosition in interface Localizable
        Parameters:
        d - dimension
        Returns:
        dimension of current position
      • fwd

        public void fwd​(int d)
        Description copied from interface: Positionable
        Move by 1 in one dimension.
        Specified by:
        fwd in interface Positionable
        Parameters:
        d - dimension
      • bck

        public void bck​(int d)
        Description copied from interface: Positionable
        Move by -1 in one dimension.
        Specified by:
        bck in interface Positionable
        Parameters:
        d - dimension
      • move

        public void move​(int distance,
                         int d)
        Description copied from interface: Positionable
        Move the element in one dimension for some distance.
        Specified by:
        move in interface Positionable
        Parameters:
        distance - relative offset in dimension d
        d - dimension
      • move

        public void move​(long distance,
                         int d)
        Description copied from interface: Positionable
        Move the element in one dimension for some distance.
        Specified by:
        move in interface Positionable
        Parameters:
        distance - relative offset in dimension d
        d - dimension
      • move

        public void move​(int[] distance)
        Description copied from interface: Positionable
        Move the element relative to its current location using an int[] as distance vector.
        Specified by:
        move in interface Positionable
        Parameters:
        distance - relative offset, length must be ≥ EuclideanSpace.numDimensions()
      • move

        public void move​(long[] distance)
        Description copied from interface: Positionable
        Move the element relative to its current location using a long[] as distance vector.
        Specified by:
        move in interface Positionable
        Parameters:
        distance - relative offset, length must be ≥ EuclideanSpace.numDimensions()
      • setPosition

        public void setPosition​(int position,
                                int d)
        Description copied from interface: Positionable
        Set the position of the element for one dimension.
        Specified by:
        setPosition in interface Positionable
        Parameters:
        position - absolute position in dimension d
        d - dimension
      • setPosition

        public void setPosition​(long position,
                                int d)
        Description copied from interface: Positionable
        Set the position of the element for one dimension.
        Specified by:
        setPosition in interface Positionable
        Parameters:
        position - absolute position in dimension d
        d - dimension
      • get

        public T get()
        Description copied from interface: Sampler
        Access the actual T instance providing access to a pixel, sub-pixel or integral region value the Sampler points at.
        Specified by:
        get in interface Sampler<T>
      • getType

        public T getType()
        Description copied from interface: Typed
        Get an instance of T.

        It should not be assumed that the returned T instance is an independent copy. In particular, repeated calls to getType() may return the same instance.

        Specified by:
        getType in interface Sampler<T>
        Specified by:
        getType in interface Typed<T>
        Returns:
        an instance of T
      • copy

        public FullSourceMapMixedRandomAccess<T> copy()
        Specified by:
        copy in interface RandomAccess<T>
        Specified by:
        copy in interface Sampler<T>
        Returns:
        - A new 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)