]> git.jsancho.org Git - dungeon-master.git/blobdiff - dungeon-master/geom/voronoi.scm
Voronoi relax (work in progress)
[dungeon-master.git] / dungeon-master / geom / voronoi.scm
index a748634dad75eb54580c26917b5b8bb900f05d05..3f55946fbc8ade891e8e8b2ef2fcd52711f92b02 100644 (file)
             voronoi-mesh-triangles
             voronoi-mesh-points
             voronoi-mesh-frame
-            voronoi-mesh-regions))
+            voronoi-mesh-regions
+            voronoi-mesh-relax))
 
 "https://github.com/watabou/TownGeneratorOS/blob/master/Source/com/watabou/geom/Voronoi.hx"
 
+;;; Voronoi mesh region
+
 (define-record-type <voronoi-region>
   (make-voronoi-region seed vertices)
   voronoi-region?
   (seed voronoi-region-seed)
   (vertices voronoi-region-vertices))
 
+
+;;; Voronoi mesh
+
 (define-record-type <voronoi-mesh>
   (make-raw-voronoi-mesh triangles points frame regions)
   voronoi-mesh?
   ; Delaunay triangulation
   (receive (triangles points frame)
       (bowyer-watson vertices)
-    ; Relaxing central wards
-    ;; (let relax ((step relax-steps))
-    ;;   (cond ((> step 0)
-    ;;          (relax (- step 1)))
-    ;;         (else
-    ;;          #t)))
     (make-raw-voronoi-mesh
      triangles
      points
      frame
      (make-regions points triangles))))
 
+(define* (voronoi-mesh-relax voronoi #:optional (to-relax '()))
+  voronoi)
+
 (define* (make-regions points triangles #:optional (regions '()))
   (cond ((null? points)
          regions)
@@ -51,8 +54,8 @@
          (let* ((p (car points))
                 (vertices (filter
                            (lambda (tr) (member p (triangle-points tr)))
-                           triangles)))
-           (display p)(newline)
+                           triangles))
+                (region (make-voronoi-region p vertices)))
            (make-regions (cdr points)
                          triangles
-                         (cons (make-voronoi-region p vertices) regions))))))
+                         (alist-cons p region regions))))))