{-# LANGUAGE Strict #-}
module Numeric.Noise.ValueCubic (
noise2,
noise2Base,
noise3,
noise3Base,
) where
import Data.Bits
import Numeric.Noise.Internal
import Numeric.Noise.Internal.Math
noise2 :: (RealFrac a) => Noise2 a
noise2 :: forall a. RealFrac a => Noise2 a
noise2 = (Seed -> a -> a -> a) -> Noise2 a
forall a. (Seed -> a -> a -> a) -> Noise2 a
Noise2 Seed -> a -> a -> a
forall a. RealFrac a => Seed -> a -> a -> a
noise2Base
{-# INLINE noise2 #-}
noise2Base :: (RealFrac a) => Seed -> a -> a -> a
noise2Base :: forall a. RealFrac a => Seed -> a -> a -> a
noise2Base Seed
seed a
x a
y =
let x1f :: Hash
x1f = a -> Hash
forall b. Integral b => a -> b
forall a b. (RealFrac a, Integral b) => a -> b
floor a
x
y1f :: Hash
y1f = a -> Hash
forall b. Integral b => a -> b
forall a b. (RealFrac a, Integral b) => a -> b
floor a
y
xs :: a
xs = a
x a -> a -> a
forall a. Num a => a -> a -> a
- Hash -> a
forall a b. (Integral a, Num b) => a -> b
fromIntegral Hash
x1f
ys :: a
ys = a
y a -> a -> a
forall a. Num a => a -> a -> a
- Hash -> a
forall a b. (Integral a, Num b) => a -> b
fromIntegral Hash
y1f
x1 :: Hash
x1 = Hash
x1f Hash -> Hash -> Hash
forall a. Num a => a -> a -> a
* Hash
primeX
y1 :: Hash
y1 = Hash
y1f Hash -> Hash -> Hash
forall a. Num a => a -> a -> a
* Hash
primeY
x0 :: Hash
x0 = Hash
x1 Hash -> Hash -> Hash
forall a. Num a => a -> a -> a
- Hash
primeX
y0 :: Hash
y0 = Hash
y1 Hash -> Hash -> Hash
forall a. Num a => a -> a -> a
- Hash
primeY
x2 :: Hash
x2 = Hash
x1 Hash -> Hash -> Hash
forall a. Num a => a -> a -> a
+ Hash
primeX
y2 :: Hash
y2 = Hash
y1 Hash -> Hash -> Hash
forall a. Num a => a -> a -> a
+ Hash
primeY
x3 :: Hash
x3 = Hash
x1 Hash -> Hash -> Hash
forall a. Num a => a -> a -> a
+ (Hash
primeX Hash -> Int -> Hash
forall a. Bits a => a -> Int -> a
`shiftL` Int
1)
y3 :: Hash
y3 = Hash
y1 Hash -> Hash -> Hash
forall a. Num a => a -> a -> a
+ (Hash
primeY Hash -> Int -> Hash
forall a. Bits a => a -> Int -> a
`shiftL` Int
1)
in a -> a
forall a. Fractional a => a -> a
recip (a
1.5 a -> a -> a
forall a. Num a => a -> a -> a
* a
1.5)
a -> a -> a
forall a. Num a => a -> a -> a
* a -> a -> a -> a -> a -> a
forall a. Num a => a -> a -> a -> a -> a -> a
cubicInterp
( a -> a -> a -> a -> a -> a
forall a. Num a => a -> a -> a -> a -> a -> a
cubicInterp
(Seed -> Hash -> Hash -> a
forall a. RealFrac a => Seed -> Hash -> Hash -> a
valCoord2 Seed
seed Hash
x0 Hash
y0)
(Seed -> Hash -> Hash -> a
forall a. RealFrac a => Seed -> Hash -> Hash -> a
valCoord2 Seed
seed Hash
x1 Hash
y0)
(Seed -> Hash -> Hash -> a
forall a. RealFrac a => Seed -> Hash -> Hash -> a
valCoord2 Seed
seed Hash
x2 Hash
y0)
(Seed -> Hash -> Hash -> a
forall a. RealFrac a => Seed -> Hash -> Hash -> a
valCoord2 Seed
seed Hash
x3 Hash
y0)
a
xs
)
( a -> a -> a -> a -> a -> a
forall a. Num a => a -> a -> a -> a -> a -> a
cubicInterp
(Seed -> Hash -> Hash -> a
forall a. RealFrac a => Seed -> Hash -> Hash -> a
valCoord2 Seed
seed Hash
x0 Hash
y1)
(Seed -> Hash -> Hash -> a
forall a. RealFrac a => Seed -> Hash -> Hash -> a
valCoord2 Seed
seed Hash
x1 Hash
y1)
(Seed -> Hash -> Hash -> a
forall a. RealFrac a => Seed -> Hash -> Hash -> a
valCoord2 Seed
seed Hash
x2 Hash
y1)
(Seed -> Hash -> Hash -> a
forall a. RealFrac a => Seed -> Hash -> Hash -> a
valCoord2 Seed
seed Hash
x3 Hash
y1)
a
xs
)
( a -> a -> a -> a -> a -> a
forall a. Num a => a -> a -> a -> a -> a -> a
cubicInterp
(Seed -> Hash -> Hash -> a
forall a. RealFrac a => Seed -> Hash -> Hash -> a
valCoord2 Seed
seed Hash
x0 Hash
y2)
(Seed -> Hash -> Hash -> a
forall a. RealFrac a => Seed -> Hash -> Hash -> a
valCoord2 Seed
seed Hash
x1 Hash
y2)
(Seed -> Hash -> Hash -> a
forall a. RealFrac a => Seed -> Hash -> Hash -> a
valCoord2 Seed
seed Hash
x2 Hash
y2)
(Seed -> Hash -> Hash -> a
forall a. RealFrac a => Seed -> Hash -> Hash -> a
valCoord2 Seed
seed Hash
x3 Hash
y2)
a
xs
)
( a -> a -> a -> a -> a -> a
forall a. Num a => a -> a -> a -> a -> a -> a
cubicInterp
(Seed -> Hash -> Hash -> a
forall a. RealFrac a => Seed -> Hash -> Hash -> a
valCoord2 Seed
seed Hash
x0 Hash
y3)
(Seed -> Hash -> Hash -> a
forall a. RealFrac a => Seed -> Hash -> Hash -> a
valCoord2 Seed
seed Hash
x1 Hash
y3)
(Seed -> Hash -> Hash -> a
forall a. RealFrac a => Seed -> Hash -> Hash -> a
valCoord2 Seed
seed Hash
x2 Hash
y3)
(Seed -> Hash -> Hash -> a
forall a. RealFrac a => Seed -> Hash -> Hash -> a
valCoord2 Seed
seed Hash
x3 Hash
y3)
a
xs
)
a
ys
{-# INLINE noise2Base #-}
noise3 :: (RealFrac a) => Noise3 a
noise3 :: forall a. RealFrac a => Noise3 a
noise3 = (Seed -> a -> a -> a -> a) -> Noise3 a
forall a. (Seed -> a -> a -> a -> a) -> Noise3 a
Noise3 Seed -> a -> a -> a -> a
forall a. RealFrac a => Seed -> a -> a -> a -> a
noise3Base
{-# INLINE noise3 #-}
noise3Base :: (RealFrac a) => Seed -> a -> a -> a -> a
noise3Base :: forall a. RealFrac a => Seed -> a -> a -> a -> a
noise3Base Seed
seed a
x a
y a
z =
let x1f :: Hash
x1f = a -> Hash
forall b. Integral b => a -> b
forall a b. (RealFrac a, Integral b) => a -> b
floor a
x
y1f :: Hash
y1f = a -> Hash
forall b. Integral b => a -> b
forall a b. (RealFrac a, Integral b) => a -> b
floor a
y
z1f :: Hash
z1f = a -> Hash
forall b. Integral b => a -> b
forall a b. (RealFrac a, Integral b) => a -> b
floor a
z
xs :: a
xs = a
x a -> a -> a
forall a. Num a => a -> a -> a
- Hash -> a
forall a b. (Integral a, Num b) => a -> b
fromIntegral Hash
x1f
ys :: a
ys = a
y a -> a -> a
forall a. Num a => a -> a -> a
- Hash -> a
forall a b. (Integral a, Num b) => a -> b
fromIntegral Hash
y1f
zs :: a
zs = a
z a -> a -> a
forall a. Num a => a -> a -> a
- Hash -> a
forall a b. (Integral a, Num b) => a -> b
fromIntegral Hash
z1f
x1 :: Hash
x1 = Hash
x1f Hash -> Hash -> Hash
forall a. Num a => a -> a -> a
* Hash
primeX
y1 :: Hash
y1 = Hash
y1f Hash -> Hash -> Hash
forall a. Num a => a -> a -> a
* Hash
primeY
z1 :: Hash
z1 = Hash
z1f Hash -> Hash -> Hash
forall a. Num a => a -> a -> a
* Hash
primeZ
x0 :: Hash
x0 = Hash
x1 Hash -> Hash -> Hash
forall a. Num a => a -> a -> a
- Hash
primeX
y0 :: Hash
y0 = Hash
y1 Hash -> Hash -> Hash
forall a. Num a => a -> a -> a
- Hash
primeY
z0 :: Hash
z0 = Hash
z1 Hash -> Hash -> Hash
forall a. Num a => a -> a -> a
- Hash
primeZ
x2 :: Hash
x2 = Hash
x1 Hash -> Hash -> Hash
forall a. Num a => a -> a -> a
+ Hash
primeX
y2 :: Hash
y2 = Hash
y1 Hash -> Hash -> Hash
forall a. Num a => a -> a -> a
+ Hash
primeY
z2 :: Hash
z2 = Hash
z1 Hash -> Hash -> Hash
forall a. Num a => a -> a -> a
+ Hash
primeZ
x3 :: Hash
x3 = Hash
x1 Hash -> Hash -> Hash
forall a. Num a => a -> a -> a
+ (Hash
primeX Hash -> Int -> Hash
forall a. Bits a => a -> Int -> a
`shiftL` Int
1)
y3 :: Hash
y3 = Hash
y1 Hash -> Hash -> Hash
forall a. Num a => a -> a -> a
+ (Hash
primeY Hash -> Int -> Hash
forall a. Bits a => a -> Int -> a
`shiftL` Int
1)
z3 :: Hash
z3 = Hash
z1 Hash -> Hash -> Hash
forall a. Num a => a -> a -> a
+ (Hash
primeZ Hash -> Int -> Hash
forall a. Bits a => a -> Int -> a
`shiftL` Int
1)
in a -> a
forall a. Fractional a => a -> a
recip (a
1.5 a -> a -> a
forall a. Num a => a -> a -> a
* a
1.5 a -> a -> a
forall a. Num a => a -> a -> a
* a
1.5)
a -> a -> a
forall a. Num a => a -> a -> a
* a -> a -> a -> a -> a -> a
forall a. Num a => a -> a -> a -> a -> a -> a
cubicInterp
( a -> a -> a -> a -> a -> a
forall a. Num a => a -> a -> a -> a -> a -> a
cubicInterp
( a -> a -> a -> a -> a -> a
forall a. Num a => a -> a -> a -> a -> a -> a
cubicInterp
(Seed -> Hash -> Hash -> Hash -> a
forall a. RealFrac a => Seed -> Hash -> Hash -> Hash -> a
valCoord3 Seed
seed Hash
x0 Hash
y0 Hash
z0)
(Seed -> Hash -> Hash -> Hash -> a
forall a. RealFrac a => Seed -> Hash -> Hash -> Hash -> a
valCoord3 Seed
seed Hash
x1 Hash
y0 Hash
z0)
(Seed -> Hash -> Hash -> Hash -> a
forall a. RealFrac a => Seed -> Hash -> Hash -> Hash -> a
valCoord3 Seed
seed Hash
x2 Hash
y0 Hash
z0)
(Seed -> Hash -> Hash -> Hash -> a
forall a. RealFrac a => Seed -> Hash -> Hash -> Hash -> a
valCoord3 Seed
seed Hash
x3 Hash
y0 Hash
z0)
a
xs
)
( a -> a -> a -> a -> a -> a
forall a. Num a => a -> a -> a -> a -> a -> a
cubicInterp
(Seed -> Hash -> Hash -> Hash -> a
forall a. RealFrac a => Seed -> Hash -> Hash -> Hash -> a
valCoord3 Seed
seed Hash
x0 Hash
y1 Hash
z0)
(Seed -> Hash -> Hash -> Hash -> a
forall a. RealFrac a => Seed -> Hash -> Hash -> Hash -> a
valCoord3 Seed
seed Hash
x1 Hash
y1 Hash
z0)
(Seed -> Hash -> Hash -> Hash -> a
forall a. RealFrac a => Seed -> Hash -> Hash -> Hash -> a
valCoord3 Seed
seed Hash
x2 Hash
y1 Hash
z0)
(Seed -> Hash -> Hash -> Hash -> a
forall a. RealFrac a => Seed -> Hash -> Hash -> Hash -> a
valCoord3 Seed
seed Hash
x3 Hash
y1 Hash
z0)
a
xs
)
( a -> a -> a -> a -> a -> a
forall a. Num a => a -> a -> a -> a -> a -> a
cubicInterp
(Seed -> Hash -> Hash -> Hash -> a
forall a. RealFrac a => Seed -> Hash -> Hash -> Hash -> a
valCoord3 Seed
seed Hash
x0 Hash
y2 Hash
z0)
(Seed -> Hash -> Hash -> Hash -> a
forall a. RealFrac a => Seed -> Hash -> Hash -> Hash -> a
valCoord3 Seed
seed Hash
x1 Hash
y2 Hash
z0)
(Seed -> Hash -> Hash -> Hash -> a
forall a. RealFrac a => Seed -> Hash -> Hash -> Hash -> a
valCoord3 Seed
seed Hash
x2 Hash
y2 Hash
z0)
(Seed -> Hash -> Hash -> Hash -> a
forall a. RealFrac a => Seed -> Hash -> Hash -> Hash -> a
valCoord3 Seed
seed Hash
x3 Hash
y2 Hash
z0)
a
xs
)
( a -> a -> a -> a -> a -> a
forall a. Num a => a -> a -> a -> a -> a -> a
cubicInterp
(Seed -> Hash -> Hash -> Hash -> a
forall a. RealFrac a => Seed -> Hash -> Hash -> Hash -> a
valCoord3 Seed
seed Hash
x0 Hash
y3 Hash
z0)
(Seed -> Hash -> Hash -> Hash -> a
forall a. RealFrac a => Seed -> Hash -> Hash -> Hash -> a
valCoord3 Seed
seed Hash
x1 Hash
y3 Hash
z0)
(Seed -> Hash -> Hash -> Hash -> a
forall a. RealFrac a => Seed -> Hash -> Hash -> Hash -> a
valCoord3 Seed
seed Hash
x2 Hash
y3 Hash
z0)
(Seed -> Hash -> Hash -> Hash -> a
forall a. RealFrac a => Seed -> Hash -> Hash -> Hash -> a
valCoord3 Seed
seed Hash
x3 Hash
y3 Hash
z0)
a
xs
)
a
ys
)
( a -> a -> a -> a -> a -> a
forall a. Num a => a -> a -> a -> a -> a -> a
cubicInterp
( a -> a -> a -> a -> a -> a
forall a. Num a => a -> a -> a -> a -> a -> a
cubicInterp
(Seed -> Hash -> Hash -> Hash -> a
forall a. RealFrac a => Seed -> Hash -> Hash -> Hash -> a
valCoord3 Seed
seed Hash
x0 Hash
y0 Hash
z1)
(Seed -> Hash -> Hash -> Hash -> a
forall a. RealFrac a => Seed -> Hash -> Hash -> Hash -> a
valCoord3 Seed
seed Hash
x1 Hash
y0 Hash
z1)
(Seed -> Hash -> Hash -> Hash -> a
forall a. RealFrac a => Seed -> Hash -> Hash -> Hash -> a
valCoord3 Seed
seed Hash
x2 Hash
y0 Hash
z1)
(Seed -> Hash -> Hash -> Hash -> a
forall a. RealFrac a => Seed -> Hash -> Hash -> Hash -> a
valCoord3 Seed
seed Hash
x3 Hash
y0 Hash
z1)
a
xs
)
( a -> a -> a -> a -> a -> a
forall a. Num a => a -> a -> a -> a -> a -> a
cubicInterp
(Seed -> Hash -> Hash -> Hash -> a
forall a. RealFrac a => Seed -> Hash -> Hash -> Hash -> a
valCoord3 Seed
seed Hash
x0 Hash
y1 Hash
z1)
(Seed -> Hash -> Hash -> Hash -> a
forall a. RealFrac a => Seed -> Hash -> Hash -> Hash -> a
valCoord3 Seed
seed Hash
x1 Hash
y1 Hash
z1)
(Seed -> Hash -> Hash -> Hash -> a
forall a. RealFrac a => Seed -> Hash -> Hash -> Hash -> a
valCoord3 Seed
seed Hash
x2 Hash
y1 Hash
z1)
(Seed -> Hash -> Hash -> Hash -> a
forall a. RealFrac a => Seed -> Hash -> Hash -> Hash -> a
valCoord3 Seed
seed Hash
x3 Hash
y1 Hash
z1)
a
xs
)
( a -> a -> a -> a -> a -> a
forall a. Num a => a -> a -> a -> a -> a -> a
cubicInterp
(Seed -> Hash -> Hash -> Hash -> a
forall a. RealFrac a => Seed -> Hash -> Hash -> Hash -> a
valCoord3 Seed
seed Hash
x0 Hash
y2 Hash
z1)
(Seed -> Hash -> Hash -> Hash -> a
forall a. RealFrac a => Seed -> Hash -> Hash -> Hash -> a
valCoord3 Seed
seed Hash
x1 Hash
y2 Hash
z1)
(Seed -> Hash -> Hash -> Hash -> a
forall a. RealFrac a => Seed -> Hash -> Hash -> Hash -> a
valCoord3 Seed
seed Hash
x2 Hash
y2 Hash
z1)
(Seed -> Hash -> Hash -> Hash -> a
forall a. RealFrac a => Seed -> Hash -> Hash -> Hash -> a
valCoord3 Seed
seed Hash
x3 Hash
y2 Hash
z1)
a
xs
)
( a -> a -> a -> a -> a -> a
forall a. Num a => a -> a -> a -> a -> a -> a
cubicInterp
(Seed -> Hash -> Hash -> Hash -> a
forall a. RealFrac a => Seed -> Hash -> Hash -> Hash -> a
valCoord3 Seed
seed Hash
x0 Hash
y3 Hash
z1)
(Seed -> Hash -> Hash -> Hash -> a
forall a. RealFrac a => Seed -> Hash -> Hash -> Hash -> a
valCoord3 Seed
seed Hash
x1 Hash
y3 Hash
z1)
(Seed -> Hash -> Hash -> Hash -> a
forall a. RealFrac a => Seed -> Hash -> Hash -> Hash -> a
valCoord3 Seed
seed Hash
x2 Hash
y3 Hash
z1)
(Seed -> Hash -> Hash -> Hash -> a
forall a. RealFrac a => Seed -> Hash -> Hash -> Hash -> a
valCoord3 Seed
seed Hash
x3 Hash
y3 Hash
z1)
a
xs
)
a
ys
)
( a -> a -> a -> a -> a -> a
forall a. Num a => a -> a -> a -> a -> a -> a
cubicInterp
( a -> a -> a -> a -> a -> a
forall a. Num a => a -> a -> a -> a -> a -> a
cubicInterp
(Seed -> Hash -> Hash -> Hash -> a
forall a. RealFrac a => Seed -> Hash -> Hash -> Hash -> a
valCoord3 Seed
seed Hash
x0 Hash
y0 Hash
z2)
(Seed -> Hash -> Hash -> Hash -> a
forall a. RealFrac a => Seed -> Hash -> Hash -> Hash -> a
valCoord3 Seed
seed Hash
x1 Hash
y0 Hash
z2)
(Seed -> Hash -> Hash -> Hash -> a
forall a. RealFrac a => Seed -> Hash -> Hash -> Hash -> a
valCoord3 Seed
seed Hash
x2 Hash
y0 Hash
z2)
(Seed -> Hash -> Hash -> Hash -> a
forall a. RealFrac a => Seed -> Hash -> Hash -> Hash -> a
valCoord3 Seed
seed Hash
x3 Hash
y0 Hash
z2)
a
xs
)
( a -> a -> a -> a -> a -> a
forall a. Num a => a -> a -> a -> a -> a -> a
cubicInterp
(Seed -> Hash -> Hash -> Hash -> a
forall a. RealFrac a => Seed -> Hash -> Hash -> Hash -> a
valCoord3 Seed
seed Hash
x0 Hash
y1 Hash
z2)
(Seed -> Hash -> Hash -> Hash -> a
forall a. RealFrac a => Seed -> Hash -> Hash -> Hash -> a
valCoord3 Seed
seed Hash
x1 Hash
y1 Hash
z2)
(Seed -> Hash -> Hash -> Hash -> a
forall a. RealFrac a => Seed -> Hash -> Hash -> Hash -> a
valCoord3 Seed
seed Hash
x2 Hash
y1 Hash
z2)
(Seed -> Hash -> Hash -> Hash -> a
forall a. RealFrac a => Seed -> Hash -> Hash -> Hash -> a
valCoord3 Seed
seed Hash
x3 Hash
y1 Hash
z2)
a
xs
)
( a -> a -> a -> a -> a -> a
forall a. Num a => a -> a -> a -> a -> a -> a
cubicInterp
(Seed -> Hash -> Hash -> Hash -> a
forall a. RealFrac a => Seed -> Hash -> Hash -> Hash -> a
valCoord3 Seed
seed Hash
x0 Hash
y2 Hash
z2)
(Seed -> Hash -> Hash -> Hash -> a
forall a. RealFrac a => Seed -> Hash -> Hash -> Hash -> a
valCoord3 Seed
seed Hash
x1 Hash
y2 Hash
z2)
(Seed -> Hash -> Hash -> Hash -> a
forall a. RealFrac a => Seed -> Hash -> Hash -> Hash -> a
valCoord3 Seed
seed Hash
x2 Hash
y2 Hash
z2)
(Seed -> Hash -> Hash -> Hash -> a
forall a. RealFrac a => Seed -> Hash -> Hash -> Hash -> a
valCoord3 Seed
seed Hash
x3 Hash
y2 Hash
z2)
a
xs
)
( a -> a -> a -> a -> a -> a
forall a. Num a => a -> a -> a -> a -> a -> a
cubicInterp
(Seed -> Hash -> Hash -> Hash -> a
forall a. RealFrac a => Seed -> Hash -> Hash -> Hash -> a
valCoord3 Seed
seed Hash
x0 Hash
y3 Hash
z2)
(Seed -> Hash -> Hash -> Hash -> a
forall a. RealFrac a => Seed -> Hash -> Hash -> Hash -> a
valCoord3 Seed
seed Hash
x1 Hash
y3 Hash
z2)
(Seed -> Hash -> Hash -> Hash -> a
forall a. RealFrac a => Seed -> Hash -> Hash -> Hash -> a
valCoord3 Seed
seed Hash
x2 Hash
y3 Hash
z2)
(Seed -> Hash -> Hash -> Hash -> a
forall a. RealFrac a => Seed -> Hash -> Hash -> Hash -> a
valCoord3 Seed
seed Hash
x3 Hash
y3 Hash
z2)
a
xs
)
a
ys
)
( a -> a -> a -> a -> a -> a
forall a. Num a => a -> a -> a -> a -> a -> a
cubicInterp
( a -> a -> a -> a -> a -> a
forall a. Num a => a -> a -> a -> a -> a -> a
cubicInterp
(Seed -> Hash -> Hash -> Hash -> a
forall a. RealFrac a => Seed -> Hash -> Hash -> Hash -> a
valCoord3 Seed
seed Hash
x0 Hash
y0 Hash
z3)
(Seed -> Hash -> Hash -> Hash -> a
forall a. RealFrac a => Seed -> Hash -> Hash -> Hash -> a
valCoord3 Seed
seed Hash
x1 Hash
y0 Hash
z3)
(Seed -> Hash -> Hash -> Hash -> a
forall a. RealFrac a => Seed -> Hash -> Hash -> Hash -> a
valCoord3 Seed
seed Hash
x2 Hash
y0 Hash
z3)
(Seed -> Hash -> Hash -> Hash -> a
forall a. RealFrac a => Seed -> Hash -> Hash -> Hash -> a
valCoord3 Seed
seed Hash
x3 Hash
y0 Hash
z3)
a
xs
)
( a -> a -> a -> a -> a -> a
forall a. Num a => a -> a -> a -> a -> a -> a
cubicInterp
(Seed -> Hash -> Hash -> Hash -> a
forall a. RealFrac a => Seed -> Hash -> Hash -> Hash -> a
valCoord3 Seed
seed Hash
x0 Hash
y1 Hash
z3)
(Seed -> Hash -> Hash -> Hash -> a
forall a. RealFrac a => Seed -> Hash -> Hash -> Hash -> a
valCoord3 Seed
seed Hash
x1 Hash
y1 Hash
z3)
(Seed -> Hash -> Hash -> Hash -> a
forall a. RealFrac a => Seed -> Hash -> Hash -> Hash -> a
valCoord3 Seed
seed Hash
x2 Hash
y1 Hash
z3)
(Seed -> Hash -> Hash -> Hash -> a
forall a. RealFrac a => Seed -> Hash -> Hash -> Hash -> a
valCoord3 Seed
seed Hash
x3 Hash
y1 Hash
z3)
a
xs
)
( a -> a -> a -> a -> a -> a
forall a. Num a => a -> a -> a -> a -> a -> a
cubicInterp
(Seed -> Hash -> Hash -> Hash -> a
forall a. RealFrac a => Seed -> Hash -> Hash -> Hash -> a
valCoord3 Seed
seed Hash
x0 Hash
y2 Hash
z3)
(Seed -> Hash -> Hash -> Hash -> a
forall a. RealFrac a => Seed -> Hash -> Hash -> Hash -> a
valCoord3 Seed
seed Hash
x1 Hash
y2 Hash
z3)
(Seed -> Hash -> Hash -> Hash -> a
forall a. RealFrac a => Seed -> Hash -> Hash -> Hash -> a
valCoord3 Seed
seed Hash
x2 Hash
y2 Hash
z3)
(Seed -> Hash -> Hash -> Hash -> a
forall a. RealFrac a => Seed -> Hash -> Hash -> Hash -> a
valCoord3 Seed
seed Hash
x3 Hash
y2 Hash
z3)
a
xs
)
( a -> a -> a -> a -> a -> a
forall a. Num a => a -> a -> a -> a -> a -> a
cubicInterp
(Seed -> Hash -> Hash -> Hash -> a
forall a. RealFrac a => Seed -> Hash -> Hash -> Hash -> a
valCoord3 Seed
seed Hash
x0 Hash
y3 Hash
z3)
(Seed -> Hash -> Hash -> Hash -> a
forall a. RealFrac a => Seed -> Hash -> Hash -> Hash -> a
valCoord3 Seed
seed Hash
x1 Hash
y3 Hash
z3)
(Seed -> Hash -> Hash -> Hash -> a
forall a. RealFrac a => Seed -> Hash -> Hash -> Hash -> a
valCoord3 Seed
seed Hash
x2 Hash
y3 Hash
z3)
(Seed -> Hash -> Hash -> Hash -> a
forall a. RealFrac a => Seed -> Hash -> Hash -> Hash -> a
valCoord3 Seed
seed Hash
x3 Hash
y3 Hash
z3)
a
xs
)
a
ys
)
a
zs
{-# INLINE noise3Base #-}