From 4da8c16d60a61eff5a1cb03e6573a4d43b3abd09 Mon Sep 17 00:00:00 2001 From: Colin Okay Date: Wed, 20 Jul 2022 17:01:26 -0500 Subject: [refactor] odd behavior in with-grid-bezier --- examples/12-canvas-drawing-language.lisp | 9 ++++----- src/grid-geometry.lisp | 6 +++--- 2 files changed, 7 insertions(+), 8 deletions(-) diff --git a/examples/12-canvas-drawing-language.lisp b/examples/12-canvas-drawing-language.lisp index 8020550..0713d90 100644 --- a/examples/12-canvas-drawing-language.lisp +++ b/examples/12-canvas-drawing-language.lisp @@ -57,7 +57,7 @@ (defun flower (&optional (petals 5)) (ww:with-pen (:width 1) (let ((r ; radius - (sqrt (+ (* 25 25) (* 100 100)))) + #.(sqrt (+ (* 25 25) (* 100 100)))) (psw ; petal semi-width (* pi 0.08))) ;; for each angle a between 0 and 2π draw a petal as a bezier @@ -74,7 +74,7 @@ (ww:fill-rel-bezier ctls 12) ;; draw border of each petal (ww:with-pen (:color (list 0 50 200 255)) - (ww:stroke-rel-bezier ctls 12)))))) + (ww:stroke-rel-bezier ctls 20)))))) (defun draw-stuff (canvas) (ww:with-canvas canvas @@ -86,8 +86,7 @@ (ww:with-pen (:color #'lower-the-bluer :width 2) ;; draw a flower stem (ww:stroke-bezier - '((0 0) (200 120) (50 350) (200 100) (300 400)) - 12) + '((0 0) (200 120) (50 350) (200 100) (300 400))) ;; draw a flower (flower 28)) @@ -116,7 +115,7 @@ (ww:start (make-instance 'canvas-lang-demo - :fps 10 + :fps 3 :width side :height side :title "Canvas demo"))) diff --git a/src/grid-geometry.lisp b/src/grid-geometry.lisp index 5fdfdd8..3597e75 100644 --- a/src/grid-geometry.lisp +++ b/src/grid-geometry.lisp @@ -102,7 +102,7 @@ top right corners of the bounding box for POLY " (defmacro with-grid-bezier - ((x y) (control-pts &key (count 1000)) &body body) + ((x y) (control-pts &key (count 100)) &body body) "CONTROL-POINTS is an expression that evalueates to a list of (X Y) pairs, these are the control points for the curve.. COUNT is the number of points on the bezier curve that will be calclated. The first @@ -118,7 +118,7 @@ Evaluates the BODY with X Y bound to a point on the bezier curve. ,control-pts) (,fn (apply #'bezier-lambda ,points))) - (loop for ,a from 0.0 to 1.0 by ,step - for (,x ,y) = (mapcar #'round (funcall ,fn ,a)) + (loop for ,a from 0.0 to (+ 1.0 ,step) by ,step + for (,x ,y) = (mapcar #'round (funcall ,fn (clamp 0 ,a 1.0))) do ,@body)))) -- cgit v1.2.3