X-Git-Url: https://git.jsancho.org/?p=dungeon-master.git;a=blobdiff_plain;f=dungeon-master%2Fgeom%2Fpoint.scm;h=72ca1bbe00ae662ae9d97ba448c721424bb745c9;hp=64faaac44a4c7b8e3272a463071418ce6bebea50;hb=602500ffe32004dc0437ed55ac2d25ec69fc9e25;hpb=695ecf94f5bb10ced4e66b0b4d036de9965c02ca diff --git a/dungeon-master/geom/point.scm b/dungeon-master/geom/point.scm index 64faaac..72ca1bb 100644 --- a/dungeon-master/geom/point.scm +++ b/dungeon-master/geom/point.scm @@ -1,10 +1,29 @@ +;;; Dungeon Master --- RPG Adventure Generator +;;; Copyright © 2019 Javier Sancho +;;; +;;; Dungeon Master is free software; you can redistribute it and/or modify it +;;; under the terms of the GNU General Public License as published by +;;; the Free Software Foundation; either version 3 of the License, or +;;; (at your option) any later version. +;;; +;;; Dungeon Master is distributed in the hope that it will be useful, but +;;; WITHOUT ANY WARRANTY; without even the implied warranty of +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +;;; General Public License for more details. +;;; +;;; You should have received a copy of the GNU General Public License +;;; along with Dungeon Master. If not, see . + + (define-module (dungeon-master geom point) #:use-module (srfi srfi-9) #:export (make-point point? point-x point-y - points-distance)) + points-distance + sum-points + scale-point)) (define-record-type (make-point x y) @@ -16,3 +35,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)))