]> git.jsancho.org Git - dungeon-master.git/blob - dungeon-master/geom/point.scm
Voronoi mesh relax
[dungeon-master.git] / dungeon-master / geom / point.scm
1 (define-module (dungeon-master geom point)
2   #:use-module (srfi srfi-9)
3   #:export (make-point
4             point?
5             point-x
6             point-y
7             points-distance
8             sum-points
9             scale-point))
10
11 (define-record-type <point>
12   (make-point x y)
13   point?
14   (x point-x)
15   (y point-y))
16
17 (define (points-distance p1 p2)
18   (abs
19    (sqrt (+ (expt (- (point-x p1) (point-x p2)) 2)
20             (expt (- (point-y p1) (point-y p2)) 2)))))
21
22 (define (sum-points . points-to-sum)
23   (let loop ((points points-to-sum)
24              (x 0)
25              (y 0))
26     (cond ((null? points)
27            (make-point x y))
28           (else
29            (loop (cdr points)
30                  (+ x (point-x (car points)))
31                  (+ y (point-y (car points))))))))
32
33 (define (scale-point point scale)
34   (make-point
35    (* (point-x point) scale)
36    (* (point-y point) scale)))