Merge branch 'master' of git://factorcode.org/git/factor
commit
cb4d8c7ea4
|
@ -1,11 +1,14 @@
|
||||||
USING: byte-arrays combinators images kernel locals math math.affine-transforms
|
USING: byte-arrays combinators fry images kernel locals math
|
||||||
math.functions math.polynomials math.vectors random sequences
|
math.affine-transforms math.functions math.order
|
||||||
sequences.product ;
|
math.polynomials math.vectors random random.mersenne-twister
|
||||||
IN: perlin-noise
|
sequences sequences.product ;
|
||||||
|
IN: noise
|
||||||
|
|
||||||
: <noise-table> ( -- table )
|
: <perlin-noise-table> ( -- table )
|
||||||
256 iota >byte-array randomize dup append ;
|
256 iota >byte-array randomize dup append ;
|
||||||
|
|
||||||
|
<PRIVATE
|
||||||
|
|
||||||
: fade ( point -- point' )
|
: fade ( point -- point' )
|
||||||
{ 0.0 0.0 0.0 10.0 -15.0 6.0 } swap [ polyval ] with map ;
|
{ 0.0 0.0 0.0 10.0 -15.0 6.0 } swap [ polyval ] with map ;
|
||||||
|
|
||||||
|
@ -51,7 +54,18 @@ IN: perlin-noise
|
||||||
v w quot call
|
v w quot call
|
||||||
; inline
|
; inline
|
||||||
|
|
||||||
:: noise ( table point -- value )
|
: with-seed ( seed quot -- )
|
||||||
|
[ <mersenne-twister> ] dip with-random ; inline
|
||||||
|
|
||||||
|
: >byte-map ( floats -- bytes )
|
||||||
|
[ 255.0 * >fixnum ] B{ } map-as ;
|
||||||
|
|
||||||
|
: >image ( bytes dim -- image )
|
||||||
|
swap [ L f ] dip image boa ;
|
||||||
|
|
||||||
|
PRIVATE>
|
||||||
|
|
||||||
|
:: perlin-noise ( table point -- value )
|
||||||
point unit-cube :> cube
|
point unit-cube :> cube
|
||||||
point dup vfloor v- :> gradients
|
point dup vfloor v- :> gradients
|
||||||
gradients fade :> faded
|
gradients fade :> faded
|
||||||
|
@ -70,14 +84,38 @@ IN: perlin-noise
|
||||||
[ faded second lerp ] 2bi@
|
[ faded second lerp ] 2bi@
|
||||||
faded third lerp ;
|
faded third lerp ;
|
||||||
|
|
||||||
: noise-map ( table transform dim -- map )
|
|
||||||
[ iota ] map [ a.v 0.0 suffix noise ] with with product-map ;
|
|
||||||
|
|
||||||
: normalize-0-1 ( sequence -- sequence' )
|
: normalize-0-1 ( sequence -- sequence' )
|
||||||
[ supremum ] [ infimum [ - ] keep ] [ ] tri
|
[ supremum ] [ infimum [ - ] keep ] [ ] tri
|
||||||
[ swap - ] with map [ swap / ] with map ;
|
[ swap - ] with map [ swap / ] with map ;
|
||||||
|
|
||||||
: noise-image ( table transform dim -- image )
|
: clamp-0-1 ( sequence -- sequence' )
|
||||||
[ noise-map normalize-0-1 [ 255.0 * >fixnum ] B{ } map-as ]
|
[ 0.0 max 1.0 min ] map ;
|
||||||
[ swap [ L f ] dip image boa ] bi ;
|
|
||||||
|
|
||||||
|
: perlin-noise-map ( table transform dim -- map )
|
||||||
|
[ iota ] map [ a.v 0.0 suffix perlin-noise ] with with product-map ;
|
||||||
|
|
||||||
|
: perlin-noise-byte-map ( table transform dim -- map )
|
||||||
|
perlin-noise-map normalize-0-1 >byte-map ;
|
||||||
|
|
||||||
|
: perlin-noise-image ( table transform dim -- image )
|
||||||
|
[ perlin-noise-byte-map ] [ >image ] bi ;
|
||||||
|
|
||||||
|
: uniform-noise-map ( seed dim -- map )
|
||||||
|
[ product [ 0.0 1.0 uniform-random-float ] replicate ]
|
||||||
|
curry with-seed ;
|
||||||
|
|
||||||
|
: uniform-noise-byte-map ( seed dim -- map )
|
||||||
|
uniform-noise-map >byte-map ;
|
||||||
|
|
||||||
|
: uniform-noise-image ( seed dim -- image )
|
||||||
|
[ uniform-noise-byte-map ] [ >image ] bi ;
|
||||||
|
|
||||||
|
: normal-noise-map ( seed sigma dim -- map )
|
||||||
|
swap '[ _ product [ 0.5 _ normal-random-float ] replicate ]
|
||||||
|
with-seed ;
|
||||||
|
|
||||||
|
: normal-noise-byte-map ( seed sigma dim -- map )
|
||||||
|
normal-noise-map clamp-0-1 >byte-map ;
|
||||||
|
|
||||||
|
: normal-noise-image ( seed sigma dim -- image )
|
||||||
|
[ normal-noise-byte-map ] [ >image ] bi ;
|
Loading…
Reference in New Issue