(drak)
2014-05-05: Diffusion looks good, now: Use numbers as xterm colorscale. Diffusion looks good, now: Use numbers as xterm colorscale.
diff --git a/examples/d20world.w b/examples/d20world.w --- a/examples/d20world.w +++ b/examples/d20world.w @@ -12,6 +12,8 @@ define-module : examples d20world . #:export : world neighbors d20-as-text d20-diffuse +use-modules : ice-9 format + define world : make-vector 20 0 define neighbors : make-vector 20 ; count from the top @@ -76,6 +78,13 @@ let loop : : relationships neighbors-hel 1- : list-ref vec : car idxtoset setidx : cdr idxtoset +define : d20-value-ascii-color-string letter value + . "Create an ascii color string for d20." + let + : csi "[" + color : inexact->exact : floor : * 12 value + format #f "~A38;5;~dm~A~Am" csi color letter csi + define : d20-as-text world-vector . "show the given d20 world as text" let @@ -93,7 +102,7 @@ define : d20-as-text world-vector ~A ~A " indexes ' : 7 8 3 4 1 6 2 9 5 10 14 13 18 17 20 15 19 12 16 11 - apply format : append (list #f template) : map (lambda (x) (vector-ref world (1- x))) indexes + apply format : append (list #f template) : map d20-value-ascii-color-string indexes : map (lambda (x) (vector-ref world (1- x))) indexes define : d20-diffuse world neighbors D . "Diffuse the values on the d20 using the diffusion constant D. Step 1: Simply iterative (=wrong)." @@ -136,5 +145,24 @@ newline d20-diffuse world neighbors 0.01 display : d20-as-text world newline - - +d20-diffuse world neighbors 0.1 +display : d20-as-text world +newline +d20-diffuse world neighbors 0.5 +display : d20-as-text world +newline +d20-diffuse world neighbors 0.5 +display : d20-as-text world +newline +d20-diffuse world neighbors 0.5 +display : d20-as-text world +newline +d20-diffuse world neighbors 0.5 +display : d20-as-text world +newline +d20-diffuse world neighbors 0.5 +display : d20-as-text world +newline +d20-diffuse world neighbors 0.5 +display : d20-as-text world +newline