X-Git-Url: https://git.jsancho.org/?p=dungeon-master.git;a=blobdiff_plain;f=dungeon-master%2Fgeom%2Fpoint.scm;h=3f471eb9fa706efac47d2349b99e2b4ce1ad4bf9;hp=64faaac44a4c7b8e3272a463071418ce6bebea50;hb=d4dcc4ec9815f1574eb12b3ee20aa0362f77704b;hpb=09c4aef3b2dde4e8fdf0a4b673b36c1ddbc84b6e diff --git a/dungeon-master/geom/point.scm b/dungeon-master/geom/point.scm index 64faaac..3f471eb 100644 --- a/dungeon-master/geom/point.scm +++ b/dungeon-master/geom/point.scm @@ -4,7 +4,9 @@ point? point-x point-y - points-distance)) + points-distance + sum-points + scale-point)) (define-record-type (make-point x y) @@ -16,3 +18,19 @@ (abs (sqrt (+ (expt (- (point-x p1) (point-x p2)) 2) (expt (- (point-y p1) (point-y p2)) 2))))) + +(define (sum-points . points-to-sum) + (let loop ((points points-to-sum) + (x 0) + (y 0)) + (cond ((null? points) + (make-point x y)) + (else + (loop (cdr points) + (+ x (point-x (car points))) + (+ y (point-y (car points)))))))) + +(define (scale-point point scale) + (make-point + (* (point-x point) scale) + (* (point-y point) scale)))