Class HashPermute

java.lang.Object
imagingbook.common.noise.hashing.HashPermute
All Implemented Interfaces:
HashFunction

public class HashPermute extends Object implements HashFunction

Permutation-based hash function, similar to the one proposed in [1]. See [2] for details.

[1] K. Perlin. An image synthesizer. SIGGRAPH Computer Graphics 19(3), 287–296 (1985).
[2] W. Burger, M.J. Burge, Principles of Digital Image Processing – Advanced Methods (Vol. 3), Supplementary Chapter 8: "Synthetic Gradient Noise", Springer (2013). https://dx.doi.org/10.13140/RG.2.1.3427.7284

Version:
2022/11/24
  • Constructor Summary

    Constructors
    Constructor
    Description
    HashPermute(int seed)
    Constructor creating a hash function with the specified seed value.
  • Method Summary

    Modifier and Type
    Method
    Description
    double
    hash(int u)
    1D hash function: maps a single int key to a double hash value in [0,1].
    double[]
    hash(int[] p)
    N-dimensional permutation hash; this version does not use any bit splitting.
    double[]
    hash(int u, int v)
    2D hash function: maps a pair of int keys to a pair of double hash values in [0,1].
    double[]
    hash(int u, int v, int w)
    3D hash function: maps a triplet of int keys to a triplet of double hash values in [0,1].

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Constructor Details

    • HashPermute

      public HashPermute(int seed)
      Constructor creating a hash function with the specified seed value.
      Parameters:
      seed - the random seed value (set to 0 use a random seed value).
  • Method Details

    • hash

      public double hash(int u)
      Description copied from interface: HashFunction
      1D hash function: maps a single int key to a double hash value in [0,1].
      Specified by:
      hash in interface HashFunction
      Parameters:
      u - the key
      Returns:
      the hash value
    • hash

      public double[] hash(int u, int v)
      Description copied from interface: HashFunction
      2D hash function: maps a pair of int keys to a pair of double hash values in [0,1].
      Specified by:
      hash in interface HashFunction
      Parameters:
      u - the 1st key
      v - the 2nd key
      Returns:
      the hash values
    • hash

      public double[] hash(int u, int v, int w)
      Description copied from interface: HashFunction
      3D hash function: maps a triplet of int keys to a triplet of double hash values in [0,1].
      Specified by:
      hash in interface HashFunction
      Parameters:
      u - the 1st key
      v - the 2nd key
      w - the 3rd key
      Returns:
      the hash values
    • hash

      public double[] hash(int[] p)
      N-dimensional permutation hash; this version does not use any bit splitting. Instead, the hash8() function is applied repeatedly for every gradient dimension by using the dimension number (k) as a local seed (sd) - in addition to the global seed (seed).
      Specified by:
      hash in interface HashFunction
      Parameters:
      p - a N-vector of keys
      Returns:
      a N-vector of hash values