changeset 101:65332841b7d9

topological sensor bundling appears to work
author Robert McIntyre <rlm@mit.edu>
date Sat, 14 Jan 2012 04:28:37 -0700
parents 940074adc1d5
children 7eeb940bcbc8
files org/test-creature.org
diffstat 1 files changed, 59 insertions(+), 20 deletions(-) [+]
line wrap: on
line diff
     1.1 --- a/org/test-creature.org	Sat Jan 14 01:19:18 2012 -0700
     1.2 +++ b/org/test-creature.org	Sat Jan 14 04:28:37 2012 -0700
     1.3 @@ -98,39 +98,78 @@
     1.4    "Take a sparse collection of points and visuliaze it as a
     1.5     BufferedImage."
     1.6    [points]
     1.7 -  (let [xs (map first points)
     1.8 -        ys (map second points)
     1.9 -        width (- (apply max xs) (apply min xs))
    1.10 -        height (- (apply max ys) (apply min ys))
    1.11 -        image (BufferedImage. width height
    1.12 -                              BufferedImage/TYPE_BYTE_BINARY)
    1.13 -    
    1.14 +  (let [xs (vec (map first points))
    1.15 +        ys (vec (map second points))
    1.16 +        x0 (apply min xs)
    1.17 +        y0 (apply min ys)
    1.18 +        width (- (apply max xs) x0)
    1.19 +        height (- (apply max ys) y0)
    1.20 +        image (BufferedImage. (inc width) (inc height)
    1.21 +                              BufferedImage/TYPE_BYTE_BINARY)]
    1.22 +    (dorun 
    1.23 +     (for [index (range (count points))]
    1.24 +       (.setRGB image (- (xs index) x0) (- (ys index) y0) -1)))
    1.25  
    1.26 -        
    1.27 -     ))
    1.28 +    image))
    1.29  
    1.30    
    1.31    
    1.32  
    1.33  ;;(defn visualize [points]
    1.34    
    1.35 +(defn test-data
    1.36 +  []
    1.37 +  (vec
    1.38 +   (for [a (range 0 100 2)
    1.39 +         b (range 0 100 2)]
    1.40 +     (vector a b))
    1.41 +  ))
    1.42  
    1.43 +(defn average [coll]
    1.44 +  (/ (reduce + coll) (count coll)))
    1.45 +
    1.46 +(defn collapse-1d
    1.47 +  "One dimensional analogue of collapse"
    1.48 +  [center line]
    1.49 +  (let [length (count line)
    1.50 +        num-above (count (filter (partial < center) line))
    1.51 +        num-below (- length num-above)]
    1.52 +    (range (- center num-below)
    1.53 +           (+ center num-above))
    1.54 +    ))
    1.55  
    1.56  (defn collapse
    1.57    "Take a set of pairs of integers and collapse them into a
    1.58     contigous bitmap."
    1.59    [points]
    1.60 -  (let [center [0 0]]
    1.61 -    
    1.62 -  )
    1.63 -  
    1.64 -
    1.65 -
    1.66 -
    1.67 -
    1.68 -
    1.69 -
    1.70 -
    1.71 +  (let
    1.72 +      [num-points (count points)
    1.73 +       center (vector
    1.74 +               (average (map first points))
    1.75 +               (average (map first points)))
    1.76 +       flattened
    1.77 +       (reduce
    1.78 +        concat 
    1.79 +        (map
    1.80 +         (fn [column]
    1.81 +           (map vector
    1.82 +                (map first column)
    1.83 +                (collapse-1d (second center)
    1.84 +                             (map second column))))
    1.85 +         (partition-by first (sort-by first points))))
    1.86 +       squeezed
    1.87 +       (reduce
    1.88 +        concat 
    1.89 +        (map
    1.90 +         (fn [row]
    1.91 +           (map vector
    1.92 +                (collapse-1d (first center)
    1.93 +                             (map first row))
    1.94 +                (map second row)))
    1.95 +         (partition-by second (sort-by second flattened))))]
    1.96 +   squeezed
    1.97 +   ))
    1.98 +        
    1.99  
   1.100  
   1.101  (defn load-bullet []