X-Git-Url: https://git.jsancho.org/?p=dungeon-master.git;a=blobdiff_plain;f=dungeon-master%2Fgeom%2Fvoronoi.scm;fp=dungeon-master%2Fgeom%2Fvoronoi.scm;h=3f55946fbc8ade891e8e8b2ef2fcd52711f92b02;hp=a748634dad75eb54580c26917b5b8bb900f05d05;hb=35202c3698d8858b4d81347253e23fe6d4a01bef;hpb=efcdd7897930ce2ce2f24ef789c8331b6154527b diff --git a/dungeon-master/geom/voronoi.scm b/dungeon-master/geom/voronoi.scm index a748634..3f55946 100644 --- a/dungeon-master/geom/voronoi.scm +++ b/dungeon-master/geom/voronoi.scm @@ -10,16 +10,22 @@ 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 (make-voronoi-region seed vertices) voronoi-region? (seed voronoi-region-seed) (vertices voronoi-region-vertices)) + +;;; Voronoi mesh + (define-record-type (make-raw-voronoi-mesh triangles points frame regions) voronoi-mesh? @@ -32,18 +38,15 @@ ; 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))))))