I've been doing research on game development in a hyperbolic plane, and cannot seem to find any solution for generating coherent noise.

Generating noise for a spherical geometry would be easy -- just generate 3D noise and sample it on the surface of a sphere.

But it does not seem to be the case that this technique works for sampling 3D noise on the surface of a hyperboloid.

It generates samples but those samples will get stretched out the further away they are from the origin.

Is there a technique for generating coherent noise that is similar across the hyperbolic plane?

I have considered that I could do a hyperbolic variation of Worley noise by hashing the position of a, say, {4, 5} tiling cell to generate some random points in that cell. However, it would be ideal to have something closer to Perlin noise as it has a nicer texture and can be sampled more arbitrarily.

New contributor
Tim Morris is a new contributor to this site. Take care in asking for clarification, commenting, and answering. Check out our Code of Conduct.
  • 2
    \$\begingroup\$ Can you address the {3,7} order-7 triangular tiling in such a way that you can find the containing triangle of a given input point, hashable vertex coordinates, vector offsets to, and the squared Euclidean distances to the vertices? That should be all you need for hyperbolic 2D Simplex noise. \$\endgroup\$
    – KdotJPG
    May 24 at 23:03
  • 1
    \$\begingroup\$ Alternatively, if you can find a practical formula for an isometric embedding of 2D hyperbolic space into higher-dimensional Euclidean space like, say, the 6D that this answer math.stackexchange.com/questions/497883/… indicates is possible, then you may be able to use an ordinary 6D noise function. \$\endgroup\$
    – KdotJPG
    May 24 at 23:14
  • 2
    \$\begingroup\$ @TimMorris I can confirm that the appearance washes out as the dimensionality increases, at least with any implementation I've encountered. \$\endgroup\$
    – Pikalek
    May 25 at 4:36
  • 1
    \$\begingroup\$ @Pikalek That's a shame. I'd still love to mess around with H2 in E6 if there are practical equations to do so, it sounds neat. I created a question on Math SE for it. \$\endgroup\$
    – Tim Morris
    May 25 at 12:42
  • 1
    \$\begingroup\$ If you can identify the {4, 5} tiling cell containing a point, the coordinates of that cell's vertices, and an interpolation weight between them, then you should be able to implement classic Perlin noise on those squares. The tricky part might be ensuring your gradient vectors are uniformly distributed. But I'd agree with KdotJPG that Simplex noise would be a better choice if the {3, 7} tiling is comparable work to use. \$\endgroup\$
    – DMGregory
    May 25 at 14:55


You must log in to answer this question.

Browse other questions tagged .