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)
(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))))))