From 7411fdfa57a2be1a5dbcdb2be43e53a089da2885 Mon Sep 17 00:00:00 2001 From: Robby Findler Date: Wed, 11 Nov 2009 21:29:59 +0000 Subject: [PATCH] added 'line' svn: r16699 --- collects/2htdp/image.ss | 1 + collects/2htdp/private/image-more.ss | 71 +++++++++++++++--- collects/mrlib/image-core.ss | 49 ++++++++++-- .../teachpack/2htdp/scribblings/image-gen.ss | 6 +- .../teachpack/2htdp/scribblings/image-toc.ss | 55 +++++++------- .../teachpack/2htdp/scribblings/image.scrbl | 17 ++++- .../teachpack/2htdp/scribblings/img/17.png | Bin 496 -> 454 bytes .../teachpack/2htdp/scribblings/img/22.png | Bin 1073 -> 243 bytes .../teachpack/2htdp/scribblings/img/23.png | Bin 3766 -> 244 bytes .../teachpack/2htdp/scribblings/img/24.png | Bin 1058 -> 244 bytes .../teachpack/2htdp/scribblings/img/25.png | Bin 1485 -> 1073 bytes .../teachpack/2htdp/scribblings/img/26.png | Bin 1388 -> 3766 bytes .../teachpack/2htdp/scribblings/img/27.png | Bin 1135 -> 1058 bytes .../teachpack/2htdp/scribblings/img/28.png | Bin 2161 -> 1485 bytes .../teachpack/2htdp/scribblings/img/29.png | Bin 893 -> 1459 bytes .../teachpack/2htdp/scribblings/img/30.png | Bin 282 -> 1135 bytes .../teachpack/2htdp/scribblings/img/31.png | Bin 1297 -> 2161 bytes .../teachpack/2htdp/scribblings/img/32.png | Bin 121 -> 893 bytes .../teachpack/2htdp/scribblings/img/33.png | Bin 144 -> 282 bytes .../teachpack/2htdp/scribblings/img/34.png | Bin 142 -> 1297 bytes .../teachpack/2htdp/scribblings/img/35.png | Bin 2121 -> 121 bytes .../teachpack/2htdp/scribblings/img/36.png | Bin 2270 -> 144 bytes .../teachpack/2htdp/scribblings/img/37.png | Bin 2368 -> 142 bytes .../teachpack/2htdp/scribblings/img/38.png | Bin 1007 -> 2121 bytes .../teachpack/2htdp/scribblings/img/39.png | Bin 1000 -> 2270 bytes .../teachpack/2htdp/scribblings/img/40.png | Bin 678 -> 2368 bytes .../teachpack/2htdp/scribblings/img/41.png | Bin 865 -> 1005 bytes .../teachpack/2htdp/scribblings/img/42.png | Bin 865 -> 1000 bytes .../teachpack/2htdp/scribblings/img/43.png | Bin 1039 -> 678 bytes .../teachpack/2htdp/scribblings/img/44.png | Bin 1039 -> 865 bytes .../teachpack/2htdp/scribblings/img/45.png | Bin 420 -> 865 bytes .../teachpack/2htdp/scribblings/img/46.png | Bin 2314 -> 1039 bytes .../teachpack/2htdp/scribblings/img/47.png | Bin 0 -> 1039 bytes .../teachpack/2htdp/scribblings/img/48.png | Bin 0 -> 420 bytes .../teachpack/2htdp/scribblings/img/49.png | Bin 0 -> 2314 bytes collects/tests/2htdp/test-image.ss | 18 +++++ 36 files changed, 168 insertions(+), 49 deletions(-) create mode 100644 collects/teachpack/2htdp/scribblings/img/47.png create mode 100644 collects/teachpack/2htdp/scribblings/img/48.png create mode 100644 collects/teachpack/2htdp/scribblings/img/49.png diff --git a/collects/2htdp/image.ss b/collects/2htdp/image.ss index 7176c2466a..4ac4443416 100644 --- a/collects/2htdp/image.ss +++ b/collects/2htdp/image.ss @@ -75,6 +75,7 @@ and they all have good sample contracts. (It is amazing what we can do with kids triangle isosceles-triangle right-triangle + line text text/font diff --git a/collects/2htdp/private/image-more.ss b/collects/2htdp/private/image-more.ss index 4b98439d00..7092f6cd5e 100644 --- a/collects/2htdp/private/image-more.ss +++ b/collects/2htdp/private/image-more.ss @@ -158,7 +158,7 @@ 'non-negative-real-number i arg) arg] - [(dx dy factor x-factor y-factor) + [(dx dy x1 y1 x2 y2 factor x-factor y-factor) (check-arg fn-name (real? arg) 'real\ number @@ -449,6 +449,15 @@ ;; (only called for rotated shapes, so bottom=baseline) (define (simple-bb simple-shape) (cond + [(line-segment? simple-shape) + (let ([x1 (point-x (line-segment-start simple-shape))] + [y1 (point-y (line-segment-start simple-shape))] + [x2 (point-x (line-segment-end simple-shape))] + [y2 (point-y (line-segment-end simple-shape))]) + (values (min x1 x2) + (min y1 y2) + (max x1 x2) + (max y1 y2)))] [(polygon? simple-shape) (let ([points (polygon-points simple-shape)]) (let* ([fx (point-x (car points))] @@ -492,10 +501,10 @@ (let*-values ([(w h a d) (send text-sizing-bm get-text-extent (text-string atomic-shape) (text->font atomic-shape))] - [(ax ay) (rotate-point (- (/ w 2)) (- (/ h 2)) (text-angle atomic-shape))] - [(bx by) (rotate-point (- (/ w 2)) (/ h 2) (text-angle atomic-shape))] - [(cx cy) (rotate-point (/ w 2) (- (/ h 2)) (text-angle atomic-shape))] - [(dx dy) (rotate-point (/ w 2) (/ h 2) (text-angle atomic-shape))]) + [(ax ay) (rotate-xy (- (/ w 2)) (- (/ h 2)) (text-angle atomic-shape))] + [(bx by) (rotate-xy (- (/ w 2)) (/ h 2) (text-angle atomic-shape))] + [(cx cy) (rotate-xy (/ w 2) (- (/ h 2)) (text-angle atomic-shape))] + [(dx dy) (rotate-xy (/ w 2) (/ h 2) (text-angle atomic-shape))]) (values (min ax bx cx dx) (min ay by cy dy) (max ax bx cx dx) @@ -507,10 +516,14 @@ ;; rotate-simple : angle simple-shape -> simple-shape (define (rotate-simple θ simple-shape) (cond + [(line-segment? simple-shape) + (make-line-segment (rotate-point (line-segment-start simple-shape) + θ) + (rotate-point (line-segment-end simple-shape) + θ) + (line-segment-color simple-shape))] [(polygon? simple-shape) - (make-polygon (map (λ (p) - (let-values ([(xn yn) (rotate-point (point-x p) (point-y p) θ)]) - (make-point xn yn))) + (make-polygon (map (λ (p) (rotate-point p θ)) (polygon-points simple-shape)) (polygon-mode simple-shape) (polygon-color simple-shape))] @@ -569,8 +582,13 @@ (bitmap-scale atomic-shape) #f)])) -;; rotate-point : x,y angle -> x,y -(define (rotate-point x y θ) +;; rotate-point : point angle -> point +(define (rotate-point p θ) + (let-values ([(x y) (rotate-xy (point-x p) (point-y p) θ)]) + (make-point x y))) + +;; rotate-xy : x,y angle -> x,y +(define (rotate-xy x y θ) (c->xy (* (make-polar 1 (degrees->radians θ)) (xy->c x y)))) @@ -634,8 +652,35 @@ (make-point 0 height))) +(define/chk (line x1 y1 color) + (let-values ([(shape w h) (line-shape x1 y1 color)]) + (make-image shape + (make-bb w h h) + #f))) + +(define (line-shape x1 y1 color) + (let ([dx (- (min x1 0))] + [dy (- (min y1 0))] + [w (+ (abs x1) 1)] + [h (+ (abs y1) 1)]) + (values (make-translate + dx dy + (make-line-segment (make-point 0 0) + (make-point x1 y1) + color)) + w h))) + #| +(define/chk (add-line image x1 y1 x2 y2 color) + (make-image (make-overlay + (make-translate + x1 y1 + (make-line-segment (make-point 0 0) + (make-point x2 y2) + color)) + (make-bb w h h) + #f)) +|# ;; line -;; text ;; this is just so that 'text' objects can be sized. (define text-sizing-bm (make-object bitmap-dc% (make-object bitmap% 1 1))) @@ -829,12 +874,14 @@ star star-polygon + line + text text/font swizzle - rotate-point) + rotate-xy) (provide/contract [atomic-bb (-> atomic-shape? (values real? real? real? real?))] diff --git a/collects/mrlib/image-core.ss b/collects/mrlib/image-core.ss index 737323c900..a1c6ab9f5b 100644 --- a/collects/mrlib/image-core.ss +++ b/collects/mrlib/image-core.ss @@ -118,6 +118,7 @@ has been moved out). ;; an atomic-shape is either: ;; - polygon +;; - line-segment ;; - np-atomic-shape ;; a np-atomic-shape is: @@ -142,6 +143,18 @@ has been moved out). #:property prop:equal+hash (list (λ (a b rec) (polygon-equal? a b rec)) (λ (x y) 42) (λ (x y) 3))) +;; a line-segment is +;; +;; - (make-line-segment point point color) +(define-struct/reg-mk line-segment (start end color) #:transparent #:omit-define-syntaxes + #:property prop:equal+hash + (list (λ (a b rec) (and (or (and (rec (line-segment-start a) (line-segment-start b)) + (rec (line-segment-end a) (line-segment-end b))) + (and (rec (line-segment-start a) (line-segment-end b)) + (rec (line-segment-end a) (line-segment-start b)))) + (rec (line-segment-color a) (line-segment-color b)))) + (λ (x y) 42) + (λ (x y) 3))) ;; a normalized-shape (subtype of shape) is either ;; - (make-overlay normalized-shape simple-shape) ;; - simple-shape @@ -149,6 +162,7 @@ has been moved out). ;; a simple-shape (subtype of shape) is ;; - (make-translate dx dy np-atomic-shape) ;; - polygon +;; - line-segment ;; an angle is a number between 0 and 360 (degrees) @@ -317,6 +331,9 @@ has been moved out). [x-scale 1] [y-scale 1] [bottom #f]) + (define (scale-point p) + (make-point (+ dx (* x-scale (point-x p))) + (+ dy (* y-scale (point-y p))))) (cond [(translate? shape) (loop (translate-shape shape) @@ -338,18 +355,21 @@ has been moved out). (loop (overlay-top shape) dx dy x-scale y-scale bottom))] [(polygon? shape) - (let* ([scaled-points - (map (λ (p) - (make-point (+ dx (* x-scale (point-x p))) - (+ dy (* y-scale (point-y p))))) - (polygon-points shape))] - [this-one - (make-polygon scaled-points + (let* ([this-one + (make-polygon (map scale-point (polygon-points shape)) (polygon-mode shape) (polygon-color shape))]) (if bottom (make-overlay bottom (f this-one)) (f this-one)))] + [(line-segment? shape) + (let ([this-one + (make-line-segment (scale-point (line-segment-start shape)) + (scale-point (line-segment-end shape)) + (line-segment-color shape))]) + (if bottom + (make-overlay bottom (f this-one)) + (f this-one)))] [(np-atomic-shape? shape) (let ([this-one (make-translate dx dy (scale-np-atomic x-scale y-scale shape))]) (if bottom @@ -361,10 +381,12 @@ has been moved out). (define (simple-shape? shape) (or (and (translate? shape) (np-atomic-shape? (translate-shape shape))) - (polygon? shape))) + (polygon? shape) + (line-segment? shape))) (define (atomic-shape? shape) (or (polygon? shape) + (line-segment? shape) (np-atomic-shape? shape))) (define (np-atomic-shape? shape) @@ -460,6 +482,15 @@ has been moved out). (send dc set-pen (mode-color->pen (polygon-mode simple-shape) (polygon-color simple-shape))) (send dc set-brush (mode-color->brush (polygon-mode simple-shape) (polygon-color simple-shape))) (send dc draw-path path dx dy 'winding))] + [(line-segment? simple-shape) + (let ([path (new dc-path%)] + [start (line-segment-start simple-shape)] + [end (line-segment-end simple-shape)]) + (send dc set-pen (line-segment-color simple-shape) 1 'solid) + (send dc set-brush "black" 'transparent) + (send dc draw-line + (+ dx (point-x start)) (+ dy (point-y start)) + (+ dx (point-x end)) (+ dy (point-y end))))] [else (let ([dx (+ dx (translate-dx simple-shape))] [dy (+ dy (translate-dy simple-shape))] @@ -566,6 +597,8 @@ has been moved out). make-text text? text-string text-angle text-y-scale text-color text-angle text-size text-face text-family text-style text-weight text-underline make-polygon polygon? polygon-points polygon-mode polygon-color + make-line-segment line-segment? line-segment-start line-segment-end line-segment-color + make-bitmap bitmap? bitmap-raw-bitmap bitmap-raw-mask bitmap-angle bitmap-scale bitmap-rendered-bitmap degrees->radians diff --git a/collects/teachpack/2htdp/scribblings/image-gen.ss b/collects/teachpack/2htdp/scribblings/image-gen.ss index 6265a958af..e8ea3805d9 100644 --- a/collects/teachpack/2htdp/scribblings/image-gen.ss +++ b/collects/teachpack/2htdp/scribblings/image-gen.ss @@ -46,7 +46,11 @@ (read in))) (for-each handle-image expressions) -(printf "\n") +(cond + [(null? mapping) + (error 'image-gen "didn't find any images; probably this means that you need to delete .zo files and try again")] + [else + (printf "\n")]) (call-with-output-file "image-toc.ss" (λ (port) diff --git a/collects/teachpack/2htdp/scribblings/image-toc.ss b/collects/teachpack/2htdp/scribblings/image-toc.ss index a8f01bed27..e2151c083d 100644 --- a/collects/teachpack/2htdp/scribblings/image-toc.ss +++ b/collects/teachpack/2htdp/scribblings/image-toc.ss @@ -28,18 +28,18 @@ (ellipse 20 30 "solid" "slateblue") (ellipse 20 10 "solid" "navy")) 'image - "46.png") - (list '(frame (ellipse 20 20 "outline" "black")) 'image "45.png") - (list '(ellipse 60 60 "solid" "blue") 'image "44.png") - (list '(scale/xy 3 2 (ellipse 20 30 "solid" "blue")) 'image "43.png") - (list '(ellipse 40 60 "solid" "blue") 'image "42.png") - (list '(scale 2 (ellipse 20 30 "solid" "blue")) 'image "41.png") - (list '(rotate 5 (rectangle 50 50 "outline" "black")) 'image "40.png") - (list '(rotate 45 (ellipse 60 20 "solid" "olivedrab")) 'image "39.png") + "49.png") + (list '(frame (ellipse 20 20 "outline" "black")) 'image "48.png") + (list '(ellipse 60 60 "solid" "blue") 'image "47.png") + (list '(scale/xy 3 2 (ellipse 20 30 "solid" "blue")) 'image "46.png") + (list '(ellipse 40 60 "solid" "blue") 'image "45.png") + (list '(scale 2 (ellipse 20 30 "solid" "blue")) 'image "44.png") + (list '(rotate 5 (rectangle 50 50 "outline" "black")) 'image "43.png") + (list '(rotate 45 (ellipse 60 20 "solid" "olivedrab")) 'image "42.png") (list '(beside/places "baseline" (text "ijy" 18 "black") (text "ijy" 24 "black")) 'image - "38.png") + "41.png") (list '(beside/places "center" @@ -48,7 +48,7 @@ (ellipse 20 30 "solid" "purple") (ellipse 20 10 "solid" "indigo")) 'image - "37.png") + "40.png") (list '(beside/places "bottom" @@ -57,7 +57,7 @@ (ellipse 20 30 "solid" "slateblue") (ellipse 20 10 "solid" "navy")) 'image - "36.png") + "39.png") (list '(beside (ellipse 20 70 "solid" "gray") @@ -65,7 +65,7 @@ (ellipse 20 30 "solid" "dimgray") (ellipse 20 10 "solid" "black")) 'image - "35.png") + "38.png") (list '(overlay/xy (rectangle 10 10 "solid" "red") @@ -73,7 +73,7 @@ -10 (rectangle 10 10 "solid" "black")) 'image - "34.png") + "37.png") (list '(overlay/xy (rectangle 10 10 "solid" "red") @@ -81,7 +81,7 @@ 10 (rectangle 10 10 "solid" "black")) 'image - "33.png") + "36.png") (list '(overlay/xy (rectangle 10 10 "outline" "red") @@ -89,7 +89,7 @@ 0 (rectangle 10 10 "outline" "black")) 'image - "32.png") + "35.png") (list '(overlay/xy (ellipse 40 40 "outline" "black") @@ -97,7 +97,7 @@ 25 (ellipse 10 10 "solid" "forestgreen")) 'image - "31.png") + "34.png") (list '(overlay/places "right" @@ -107,7 +107,7 @@ (rectangle 40 40 "solid" "red") (rectangle 50 50 "solid" "black")) 'image - "30.png") + "33.png") (list '(overlay/places "middle" @@ -115,7 +115,7 @@ (rectangle 30 60 "solid" "orange") (ellipse 60 30 "solid" "purple")) 'image - "29.png") + "32.png") (list '(overlay (ellipse 10 10 "solid" "red") @@ -125,32 +125,35 @@ (ellipse 50 50 "solid" "red") (ellipse 60 60 "solid" "black")) 'image - "28.png") + "31.png") (list '(overlay (ellipse 60 30 "solid" "purple") (rectangle 30 60 "solid" "orange")) 'image - "27.png") + "30.png") (list '(text/font "not really a link" 18 "blue" #f 'roman 'normal 'normal #t) 'image - "26.png") + "29.png") (list '(text/font "Goodbye" 18 "indigo" #f 'modern 'italic 'normal #f) 'image - "25.png") + "28.png") (list '(text/font "Hello" 24 "olive" "Gill Sans" 'swiss 'normal 'bold #f) 'image - "24.png") - (list '(text "Goodbye" 36 "indigo") 'image "23.png") - (list '(text "Hello" 24 "olive") 'image "22.png") + "27.png") + (list '(text "Goodbye" 36 "indigo") 'image "26.png") + (list '(text "Hello" 24 "olive") 'image "25.png") + (list '(line 30 -20 "red") 'image "24.png") + (list '(line -30 20 "red") 'image "23.png") + (list '(line 30 30 "black") 'image "22.png") (list '(star-polygon 20 10 3 "solid" "cornflowerblue") 'image "21.png") (list '(star-polygon 40 7 3 "outline" "darkred") 'image "20.png") (list '(star-polygon 40 5 2 "solid" "seagreen") 'image "19.png") (list '(star 40 "solid" "gray") 'image "18.png") - (list '(regular-polygon 20 6 "solid" "red") 'image "17.png") + (list '(regular-polygon 20 8 "solid" "red") 'image "17.png") (list '(regular-polygon 20 4 "outline" "blue") 'image "16.png") (list '(regular-polygon 30 3 "outline" "red") 'image "15.png") (list '(rhombus 80 150 "solid" "mediumpurple") 'image "14.png") diff --git a/collects/teachpack/2htdp/scribblings/image.scrbl b/collects/teachpack/2htdp/scribblings/image.scrbl index c19c5d50aa..0c9c7db446 100644 --- a/collects/teachpack/2htdp/scribblings/image.scrbl +++ b/collects/teachpack/2htdp/scribblings/image.scrbl @@ -128,7 +128,7 @@ other. The top and bottom pair of angles is @scheme[angle] and the left and righ @image-examples[(regular-polygon 30 3 "outline" "red") (regular-polygon 20 4 "outline" "blue") - (regular-polygon 20 6 "solid" "red")] + (regular-polygon 20 8 "solid" "red")] } @defproc[(star [side-length (and/c real? (not/c negative?))] @@ -163,6 +163,15 @@ other. The top and bottom pair of angles is @scheme[angle] and the left and righ } +@defproc[(line [x1 real?] [y1 real?] [color (or/c symbol? string?)]) image?]{ + Constructs an image representing a line segment that connects the points + (0,0) to (x1,y1). + + @image-examples[(line 30 30 "black") + (line -30 20 "red") + (line 30 -20 "red")] +} + @defproc[(text [string string?] [font-size (and/c integer? (<=/c 1 255))] [color (or/c symbol? string?)]) image?]{ @@ -459,6 +468,10 @@ Equality testing may contain a few nuances, though: To combat this problem, use @scheme[equal~?] to compare the images, or @scheme[check-within] for test suites involving images.} + + @item{Combining a series of line segments to form a polygon produces + an image that is different than the polygon.} + @item{In order to make equality on images created with @scheme[text] and @scheme[text/font] work well, each string passed to either of those functions results @@ -476,7 +489,7 @@ Equality testing may contain a few nuances, though: For example, the letter combinations ``ff'' and ``fi'' and ``fl'' are generally drawn intertwined when they appear together, and thus an ``f'' drawn separately from an ``i'' looks different than the ligature ``fi''. - For example, here is how 24 point Times font looks when the word ``difficult'' + For example, here is how 24 point Times font looks when the word ``refill'' is drawn, first with ligatures and then without: @centerline{@image["2htdp/scribblings/ligature.png"]}. } diff --git a/collects/teachpack/2htdp/scribblings/img/17.png b/collects/teachpack/2htdp/scribblings/img/17.png index ee6308d544b4dcde85b25eedc661d90eff171ddd..27c7c2cec9aea7c3b52970374325f5cf249b2e37 100644 GIT binary patch literal 454 zcmV;%0XhDOP)9#P*BlPVn{6LS%3)`fy4<|fgKn?jcmXKEI?0VVkqgTC`fp$@bilt+^fJ@ z+&@=PaJgT3FK7VR@3oT+7*8j>dpfbI`s5JDVaFqF3qzQ34>BIC2_8lJbXNm#~VRTW%!6_c23j8&Gf?G;S|vNu*y zz_M01&B^|=@*JkQk!e!)!pbrj#-=8|Y+$7+bX|gpBVz!NB+xWzrZE}A^(qEGJBptd(S@iK3V`&9N4j83yuv)+E4MP^Rn1G7*y)YY~~IAx#BM!mRIQ wNg{3nph5h9;^p%C35w9+z`~HUgTmUd2b&O-f%ZL}#{d8T07*qoM6N<$f(!=BH~;_u literal 496 zcmV715|so(P44F1}J>U=!i*53|{q{AL4}iw#eN zT<%N0P+(?D84f?@2LlKKV_p6jNG}h=HIUD%+giMl8gMwUUTgBI}Ya0000(3iJqJpy!WLP63b<+HO3$!2!)7Z zj9Tjug2V-I4><##O~`=XB4I$)*^L@tHyQx1(FPceSAfgt0W8J={E%p3c_q;Uky7^lF{U;z3C5705#fH#8^Xd2AG tzrhbw#wGFZI_GlEDJ1~-5RruOX0ssI2>lAw0000B{NklX`8Yo3dX_lDqb5{G>W3q=_Rk%4gd(!z-9{|pD=8EX(=iYR0@Tvyn(eu5Ezb6bGhYG>Gsvb z!bJywXw;9QIuzCUd?Rb+`un?3RA;lD-%vXMOilfXqB^trWZvP%Kwk=NftFg#O*c>z z6TNP?#pfFl3Y9fAZT0o<35CiHRm9^VtMx~ZXBfjAB9T%q*Xneim6z9*43s2;{rz1| z=RnpOAOH2{&C^GY{9ar8PJtyJ&)GFW~_P)Pvbyf~XpWAH_iBw0A{>5Uw0ssod zE`?$jMWt-E3pU&NLO}1{{WccE)#~=chp%Q9j6|}nz5TmHB5Jc;xPJY3clT%}xneP~ zSUe6#koTd{a+jUe`U3#y^`B=bv)Z}yBLH~(c#tIVbwTgnzX$+2-N_shjm8K7b8}+^ z;m07xdur%%l*vlNrbO(w}eV6wWpz3&CUjV?JJKu!EuB;gjyM~5-0)V!*ud;;2pGhjC( z?%kgl3?@3Am33$oMQw%^0OIkG*ZW|8-pS`zR9CkM1XV?pEG#_p`9>m<=Lpgumuom2 rQBI%)p#P6vn)~P$XsNXYT5A0Zi;axwj)&K&00000NkvXXu0mjfOr{CL diff --git a/collects/teachpack/2htdp/scribblings/img/23.png b/collects/teachpack/2htdp/scribblings/img/23.png index b2593ebe1a14c667d30fec2d72c1fe05b6d530b1..df5da613c9e64d7b90495f146fb13f9dcb045053 100644 GIT binary patch literal 244 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 diff --git a/collects/teachpack/2htdp/scribblings/img/24.png b/collects/teachpack/2htdp/scribblings/img/24.png index d4b7ede7b840c996605040c1ead9c63149c814fe..df5da613c9e64d7b90495f146fb13f9dcb045053 100644 GIT binary patch literal 244 zcmV zu?>ST6olb>Qp5s`z(A}33s5oymCYz@!495*p2n8~g%F8gV?VBRVSj&RAqn-77)Put z`u?SVyK`t7h+vww$MohsjbT~RT6({o=@snoc}7)z&mV&C%P#l_S17oIXBPzF=>>7{ z)B@+wwgAHL+XXw^m>BrYf&_SMK`K11AO{{O$cA4QsKCz)^x$U&y6~R@?`f?r{7|qg usB4hQ@Xv(9fTBRxK}7v_0Kz9e{lnff*mz*svB(Pm0000W@pMu*C{cZH8QFTAyM{VoFtA)0_qDIlZg*|^GV%< zG0_+j(?OA?SY-3L503nR;CLD0oeqh+Q0wBt)Uwm{#0rM zyJoXPt==oESTf1R;|#Jjno63smm+21frfzrcRrs&wpOb@cP_p)bYkMuJ9n;Px4V1J zWNMUE%y>iVM;DGNJcmUcCiKsvnvfT(E70?&sl)n^-{$+ZfRhkB^nK2CYwzLgX6*AcqDTB)TyrkfN}+dLK9c6ypu?u{&attNu>h4y)80PV*T?nr_-MKT$Bd4Cl+AL=XjodB#J0`$mLOyVAtQ?U zg9lp?DT+cM@QbXRq0q0`uB~mh+1{q8N}4`$;zS?jGZ`)%z5yg>i6qrlYr9mhQ_1A& zLu4+OM2Qf*-e$?3&|H;?OeS6&Utj+!wk?(x2#G@B!J)UdHeXZovV;b;y5jWdAGh*D zL$4R#(+Cj4a`tOFEj`(iAP5yfkfJF3Q-UliM?eViD-TIh;PKB^wR*4F+{m)C$UT1i zlj5Hn0~IS16s0qn?5nGPB9~!Cj~)8}*`d$`)&>ALaKHr=*$*`}FJb%o^$U^6ZHlVI z9{_;gKOBoOkDN0Y91jG320% z*VVbRSuPf1mY09Oe?QaFF=8}6SANc;N4w|ef7sj%0|4^*^rcH}BuNRvzxOnR(B(Rh zYy~tJ40WBIlNT>G$KxTygu}jY*jF3_p}ae;s_Kx(Gv)O*bKEjw{wsiJYx}OT@m=I9 z^Sq?j*LHSJIi1~m_82fp5UPFqo@r?4ID7Uti^VNBr@>I~@k}`!U0SUklMoUX%gHlm ze!>C(08r`wHAJ3|@cf!qYtZSQE}uE^ c*a;f`29#8p@zpSjy8r+H07*qoM6N<$f;}e&MF0Q* diff --git a/collects/teachpack/2htdp/scribblings/img/25.png b/collects/teachpack/2htdp/scribblings/img/25.png index 43659d6e16539e7a25b8916e569f174eeb94179b..cd170b1c519191e8a6be40e48ce125ee8e545c33 100644 GIT binary patch literal 1073 zcmV-11kU@3P)X0ssI2>lAw0000B{NklX`8Yo3dX_lDqb5{G>W3q=_Rk%4gd(!z-9{|pD=8EX(=iYR0@Tvyn(eu5Ezb6bGhYG>Gsvb z!bJywXw;9QIuzCUd?Rb+`un?3RA;lD-%vXMOilfXqB^trWZvP%Kwk=NftFg#O*c>z z6TNP?#pfFl3Y9fAZT0o<35CiHRm9^VtMx~ZXBfjAB9T%q*Xneim6z9*43s2;{rz1| z=RnpOAOH2{&C^GY{9ar8PJtyJ&)GFW~_P)Pvbyf~XpWAH_iBw0A{>5Uw0ssod zE`?$jMWt-E3pU&NLO}1{{WccE)#~=chp%Q9j6|}nz5TmHB5Jc;xPJY3clT%}xneP~ zSUe6#koTd{a+jUe`U3#y^`B=bv)Z}yBLH~(c#tIVbwTgnzX$+2-N_shjm8K7b8}+^ z;m07xdur%%l*vlNrbO(w}eV6wWpz3&CUjV?JJKu!EuB;gjyM~5-0)V!*ud;;2pGhjC( z?%kgl3?@3Am33$oMQw%^0OIkG*ZW|8-pS`zR9CkM1XV?pEG#_p`9>m<=Lpgumuom2 rQBI%)p#P6vn)~P$XsNXYT5A0Zi;axwj)&K&00000NkvXXu0mjfOr{CL literal 1485 zcmV;;1v2`HP)42%o|vJNxDHq5@<{&>^JV^p9fSX=vLew=f@@1AqdyZ7DuG9-i$ zycr<>(-U}g_`lUx1-%YwRXU_MxLUPdtI|zVt!G+A(7_Rvq}1NJ{FqnMqt_xymvowH z1HhG!f7$Po(p1$60G&%W1z|lL{835ec2Gc2+xF689;AN<4J zr>Qmo00NavLpP^k9*@~Gf0^qvl`^!d*P)V>+7rdwX)`E9`qRvJ?c6MJw}T_PceSzS z$$)?@^a^&~e<6~{PDM~#(pp{E+}Ad!R%$mNSnRXZb=JI@ILl*phei99rL(H?xx@W( zAiLYPDM5wO$csPXYvQd;;s>dkV>w(li6?}Fjb?}PF+xz&boU1 z9v1244<>HOJG-r*JcES`zF3!Yc3VMdTAh4Eg%ILYKK*e16+WxiK)o1X(s4Xz!sk0U2GIQ zwJEo*j6X#|RX+Fn>4!wNt-db`65AVvhH2~2cH5+fKQ$3GH!m?W4&TPz?9cDA%K5n4 zTGxAd|1I3D%=_b9Y@yK{F7CbAR^NvZGHhU_OhY#_*e#E`OVd~YKq3K!Mvl9(iA*6? zWV81rtuxyFAsf9FQWa)TDyS`OJ(w0nWak7qInB0l_jkbDu4b`!uya_9A5jw&G56*r z=2*fF-ZeK`7OkHP02-w(C*l6F-1l*|D4DT*tM84AOk##%k!+}62G|L#RqIJ)63)$j z%W21n@Es?@l`_rxy^F{c5&-nJ4%j%G8+FoB)4g!b9L%0rppdGyY8{pe$55Zl!NVF4 z@|fL05p#_)2-rem&@a@DTiu1(-=F+7CO*v6(gbr=GR+Kg6Sw(x_HI_h-`YJ3eU`cc zb}Ug%$Wn;{Pe(VSI(yjyfK(#)S!y`?J2)bRRE_5a0HI(=tH5gD~n zkW@`PZ+XlfGIiYLr`Ms1Y<7I!*t$_@^rdT>Em8jDfX zf%z^stMWB&Wuqw z?khmhAY>G^U^WRM1OO_TCM*7KTSK2;sJodJy_Y{IA5lfcEnc{GHl~wG6lb>;42$GT zqP)9#1Ev-x`;sH9>`n2clM48(zB4iT9sv#>{`OCs#H)7&)|K)*xuWP}p>$JP@i&iX zbZYdm&~vec!I55ORwg52#m0|9i0g(y)G-_vn0lVE*E7(;h#KyfC+#ZgZyySc_EX8! zz5GENNAulZt+sc!8fz7UVnp4^6$5~ax2>g}DLjK7-oWUP(mU9NOeH6V^}$w&H^8B2Y^qj|j`U<27B60Jz`@2d09j%TID3zmX09X|p002}I n%48#+gK_Wbe;aSmzYu={19y$<{ue!N00000NkvXXu0mjfED+5i diff --git a/collects/teachpack/2htdp/scribblings/img/26.png b/collects/teachpack/2htdp/scribblings/img/26.png index ffe47dc980d9cdbf9445eba5db68a43aa2e4e063..b2593ebe1a14c667d30fec2d72c1fe05b6d530b1 100644 GIT binary patch literal 3766 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 literal 1388 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 literal 1135 zcmV-#1d#iQP)zfzrQg@4Y=fz$nxHg>o+s_w&@;p4@(W zIq5y;21KVvVP+K8DihZx!^Y%1pNi_G=Lcnl{HGrlD>1|kV z!@Lb4X3d`o0KmY^DExe~+~E{Qrroo_N5jFc$V}Vf%tPsvsqpB#h2Fp{s&QhI3)gor z4c(-^gJ4ZX*-+NE7Veq?HwQxg{z?C?qM_x=3N+%EB7W)5a{>SmEo$7!H2Ik3J*=)C zm2(C}Z=5WAy-{eQe`4%#$louC6<&}v!3?rL#k3yOICe8ov_Jp#rj*>da_Gi4Z${^~ zZAf4NS&;@ugy4u!(?UGQv=8iO5zap{PxqwXH}>WGi?a`IY-3T;Kcveik~hzgo_9Fg zPV)Z&_jQXI{)geyw|^RxE3brw3F*SiiPk~QV{hw-?!LEj-HC`}N>82rTeADe$CVSq0&jE zA%wgi={YNcm3398@07Fs3q`9+Kp5?KmuvDZ|7zd+@kUwifg_j*zh8ezv9!WiJ$m9a z*F38-sm(UmEp9UKxnXrQtnLN?0NSzZgS|)hnytUdSyl+EM_ng$ z&kh?*uK#W`^K3gC9AnSD{$$U-w{-lREO~hlEpi{$zIe&#Ii^KTBi z{r+fdp?O0qSL1Eibx_mxibiWGc0Vls{A78|q`&X>l|#W>dxQ*M)yN!eEo$mxx4ppH zy(ONUEGcI(NbRnRcGpEoevYpgE7t(d9aEUV6@0TF>W z2Y7QJcc`NQ+MlV)$@41x$K9ONZh5KQ@>09yrFP3p?Ut9?EibiOUTU|z)NXmH-SSeq z<)wDZOYN2yTIc_n7G&)O>(kXg?LCN6T6)yx^Dk`*N3F=0B2@qY002ovPDHLkV1g-~ BG3x*T diff --git a/collects/teachpack/2htdp/scribblings/img/28.png b/collects/teachpack/2htdp/scribblings/img/28.png index c7a53e79ba366bf6b7f245a6cbb91a57434a17c9..43659d6e16539e7a25b8916e569f174eeb94179b 100644 GIT binary patch literal 1485 zcmV;;1v2`HP)42%o|vJNxDHq5@<{&>^JV^p9fSX=vLew=f@@1AqdyZ7DuG9-i$ zycr<>(-U}g_`lUx1-%YwRXU_MxLUPdtI|zVt!G+A(7_Rvq}1NJ{FqnMqt_xymvowH z1HhG!f7$Po(p1$60G&%W1z|lL{835ec2Gc2+xF689;AN<4J zr>Qmo00NavLpP^k9*@~Gf0^qvl`^!d*P)V>+7rdwX)`E9`qRvJ?c6MJw}T_PceSzS z$$)?@^a^&~e<6~{PDM~#(pp{E+}Ad!R%$mNSnRXZb=JI@ILl*phei99rL(H?xx@W( zAiLYPDM5wO$csPXYvQd;;s>dkV>w(li6?}Fjb?}PF+xz&boU1 z9v1244<>HOJG-r*JcES`zF3!Yc3VMdTAh4Eg%ILYKK*e16+WxiK)o1X(s4Xz!sk0U2GIQ zwJEo*j6X#|RX+Fn>4!wNt-db`65AVvhH2~2cH5+fKQ$3GH!m?W4&TPz?9cDA%K5n4 zTGxAd|1I3D%=_b9Y@yK{F7CbAR^NvZGHhU_OhY#_*e#E`OVd~YKq3K!Mvl9(iA*6? zWV81rtuxyFAsf9FQWa)TDyS`OJ(w0nWak7qInB0l_jkbDu4b`!uya_9A5jw&G56*r z=2*fF-ZeK`7OkHP02-w(C*l6F-1l*|D4DT*tM84AOk##%k!+}62G|L#RqIJ)63)$j z%W21n@Es?@l`_rxy^F{c5&-nJ4%j%G8+FoB)4g!b9L%0rppdGyY8{pe$55Zl!NVF4 z@|fL05p#_)2-rem&@a@DTiu1(-=F+7CO*v6(gbr=GR+Kg6Sw(x_HI_h-`YJ3eU`cc zb}Ug%$Wn;{Pe(VSI(yjyfK(#)S!y`?J2)bRRE_5a0HI(=tH5gD~n zkW@`PZ+XlfGIiYLr`Ms1Y<7I!*t$_@^rdT>Em8jDfX zf%z^stMWB&Wuqw z?khmhAY>G^U^WRM1OO_TCM*7KTSK2;sJodJy_Y{IA5lfcEnc{GHl~wG6lb>;42$GT zqP)9#1Ev-x`;sH9>`n2clM48(zB4iT9sv#>{`OCs#H)7&)|K)*xuWP}p>$JP@i&iX zbZYdm&~vec!I55ORwg52#m0|9i0g(y)G-_vn0lVE*E7(;h#KyfC+#ZgZyySc_EX8! zz5GENNAulZt+sc!8fz7UVnp4^6$5~ax2>g}DLjK7-oWUP(mU9NOeH6V^}$w&H^8B2Y^qj|j`U<27B60Jz`@2d09j%TID3zmX09X|p002}I n%48#+gK_Wbe;aSmzYu={19y$<{ue!N00000NkvXXu0mjfED+5i literal 2161 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 N002ovPDHLkV1mOS)vEvi literal 893 zcmV-@1A_dCP)fP!D?i5k#1m+MiD+mQBZ;Q(t~e3CPkF=5Cq{v zJ`{qcfj2P17fBOS6k*#n^OES!t~)z3J3XwqUUuCXa?kGKd{4v79L~qjf6n>mXOJw* zpq%-BnD0~ZzCtojKxUlPgSVw#UHI<9(-u#CR+EDG-IDqZdwT7Lj384||Z z(I-x}dL8|u#LEDXTosXk%M#do1$(bB)Z{T$=*+cD&M6)2>L1)&_Q7472ReFYG@Q9k%Qcx9S}dB<^~_R2}^Hgbw(O&bhn@5=Dq}X*y1g& z!C=GM=bNsT>8KfRW_eQTzV7<^*duwiKMHueX64QrZmP{oR4p8`EKj`SJFjr=xh+d; z-P=7Uchzx!#$zJPJ6Rf&I%+tVBcP4}Ko+6*mfLCbMNcd|u32B#HO{-bu8slVdkeof zqJHZqj??BFY*_POW61+!uleW-DaY0=IQm2Yz`ut?ekC%;cVzhXj0XU`JQ34ry_1Du zk+aKK^2AfH{VWWNm|_*xF)@Yvmy8ok@#meGgYm&*I)vg$onlZ{IfV@wD7#8!7d)!u zU8LDmgaM%Bz8+KY5ppI8l{M(We_o~^!9{o2Xe)&WA!L1OG-M*!sH;jIu!pMYs9J>q zVO0Lau#wXL>R1HUW@G*(CTd>0LK{)#b3@_PKx6~;H>SbbY$$ygbGe>wp{hS5=59@g z?cZs|_t>-V6Vl8SL9vj~MpV|QKi{61TDaXa$PSoMN?qtk{PEU1@`Cp)MW=e9SY)nc zitnpQQ6I(zfzrQg@4Y=fz$nxHg>o+s_w&@;p4@(W zIq5y;21KVvVP+K8DihZx!^Y%1pNi_G=Lcnl{HGrlD>1|kV z!@Lb4X3d`o0KmY^DExe~+~E{Qrroo_N5jFc$V}Vf%tPsvsqpB#h2Fp{s&QhI3)gor z4c(-^gJ4ZX*-+NE7Veq?HwQxg{z?C?qM_x=3N+%EB7W)5a{>SmEo$7!H2Ik3J*=)C zm2(C}Z=5WAy-{eQe`4%#$louC6<&}v!3?rL#k3yOICe8ov_Jp#rj*>da_Gi4Z${^~ zZAf4NS&;@ugy4u!(?UGQv=8iO5zap{PxqwXH}>WGi?a`IY-3T;Kcveik~hzgo_9Fg zPV)Z&_jQXI{)geyw|^RxE3brw3F*SiiPk~QV{hw-?!LEj-HC`}N>82rTeADe$CVSq0&jE zA%wgi={YNcm3398@07Fs3q`9+Kp5?KmuvDZ|7zd+@kUwifg_j*zh8ezv9!WiJ$m9a z*F38-sm(UmEp9UKxnXrQtnLN?0NSzZgS|)hnytUdSyl+EM_ng$ z&kh?*uK#W`^K3gC9AnSD{$$U-w{-lREO~hlEpi{$zIe&#Ii^KTBi z{r+fdp?O0qSL1Eibx_mxibiWGc0Vls{A78|q`&X>l|#W>dxQ*M)yN!eEo$mxx4ppH zy(ONUEGcI(NbRnRcGpEoevYpgE7t(d9aEUV6@0TF>W z2Y7QJcc`NQ+MlV)$@41x$K9ONZh5KQ@>09yrFP3p?Ut9?EibiOUTU|z)NXmH-SSeq z<)wDZOYN2yTIc_n7G&)O>(kXg?LCN6T6)yx^Dk`*N3F=0B2@qY002ovPDHLkV1g-~ BG3x*T literal 282 zcmeAS@N?(olHy`uVBq!ia0vp^#vshW1SGc}US12N9(uYshE&XXdvhaivw=YCLuIci zM#>ZPZXQ~8o-gvK@I+BPX@e&Bf|utq1%=$svlM*%_pRlNr~1uJ86lyeOP8(LdQ775 zoUHE5XLGzY=k}$Yag&rwt(fxgs<8DXZJ(9RyrQdC&{b<{ApP=_kpXCO%xr0=E zJtgLMt0rFX@8sk=x-7ecmfgN1@LpgEl6=_QEkC>N3tX2-4W6mHSJBSU>+J0%JpD#C zr#@&LUJPSof2xm*e*ga7dEa({Hi2i$`X%NYip|iA{r>8=+R~5@ANl?=#OyX>xvwR( Q1L#=>Pgg&ebxsLQ0CB5(fdBvi diff --git a/collects/teachpack/2htdp/scribblings/img/31.png b/collects/teachpack/2htdp/scribblings/img/31.png index 841284164bf07a52bf92369249af6ab72b1a8b5c..c7a53e79ba366bf6b7f245a6cbb91a57434a17c9 100644 GIT binary patch literal 2161 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 Hu0mjf@oR|` diff --git a/collects/teachpack/2htdp/scribblings/img/32.png b/collects/teachpack/2htdp/scribblings/img/32.png index 60a97a2408b3cb0b4ecce4fbe1db68b09e615c02..aab464a0762ff9b40cd207180537ccd3b827d71f 100644 GIT binary patch literal 893 zcmV-@1A_dCP)fP!D?i5k#1m+MiD+mQBZ;Q(t~e3CPkF=5Cq{v zJ`{qcfj2P17fBOS6k*#n^OES!t~)z3J3XwqUUuCXa?kGKd{4v79L~qjf6n>mXOJw* zpq%-BnD0~ZzCtojKxUlPgSVw#UHI<9(-u#CR+EDG-IDqZdwT7Lj384||Z z(I-x}dL8|u#LEDXTosXk%M#do1$(bB)Z{T$=*+cD&M6)2>L1)&_Q7472ReFYG@Q9k%Qcx9S}dB<^~_R2}^Hgbw(O&bhn@5=Dq}X*y1g& z!C=GM=bNsT>8KfRW_eQTzV7<^*duwiKMHueX64QrZmP{oR4p8`EKj`SJFjr=xh+d; z-P=7Uchzx!#$zJPJ6Rf&I%+tVBcP4}Ko+6*mfLCbMNcd|u32B#HO{-bu8slVdkeof zqJHZqj??BFY*_POW61+!uleW-DaY0=IQm2Yz`ut?ekC%;cVzhXj0XU`JQ34ry_1Du zk+aKK^2AfH{VWWNm|_*xF)@Yvmy8ok@#meGgYm&*I)vg$onlZ{IfV@wD7#8!7d)!u zU8LDmgaM%Bz8+KY5ppI8l{M(We_o~^!9{o2Xe)&WA!L1OG-M*!sH;jIu!pMYs9J>q zVO0Lau#wXL>R1HUW@G*(CTd>0LK{)#b3@_PKx6~;H>SbbY$$ygbGe>wp{hS5=59@g z?cZs|_t>-V6Vl8SL9vj~MpV|QKi{61TDaXa$PSoMN?qtk{PEU1@`Cp)MW=e9SY)nc zitnpQQ6I(FSZzn189WdZI@@Ccl z`l7rHot3BD(y}D)N~$h&6;Iia6`DKAd44kgntgkoz2E=Vyz5&~ZMmF^-}fC)7%%FI V$VMH^n-4UL!PC{xWt~$(697wIDX0Jd diff --git a/collects/teachpack/2htdp/scribblings/img/33.png b/collects/teachpack/2htdp/scribblings/img/33.png index 79bb91c201d552d52c96bc9f42904b6f06873e2e..755b55bf26b2837379efe9f5e5a8225a58f57ddf 100644 GIT binary patch literal 282 zcmeAS@N?(olHy`uVBq!ia0vp^#vshW1SGc}US12N9(uYshE&XXdvhaivw=YCLuIci zM#>ZPZXQ~8o-gvK@I+BPX@e&Bf|utq1%=$svlM*%_pRlNr~1uJ86lyeOP8(LdQ775 zoUHE5XLGzY=k}$Yag&rwt(fxgs<8DXZJ(9RyrQdC&{b<{ApP=_kpXCO%xr0=E zJtgLMt0rFX@8sk=x-7ecmfgN1@LpgEl6=_QEkC>N3tX2-4W6mHSJBSU>+J0%JpD#C zr#@&LUJPSof2xm*e*ga7dEa({Hi2i$`X%NYip|iA{r>8=+R~5@ANl?=#OyX>xvwR( Q1L#=>Pgg&ebxsLQ0CB5(fdBvi literal 144 zcmeAS@N?(olHy`uVBq!ia0vp^q9Dw{1SHi;jSd2-a8DPbC90&0CCWd-8bz&xl7-Mp&npT@2vb974f(H*OMfVi!#RP3B1;L0|Ej@^<2aBmt zi9zwOD%gs#iQuNX{i9B|V~t8N5?%9W60=?^l|(Z$dx%)8CZc`SadD zhG9SqAxY9?GT}JBxVY$YxqLn!MNtq!hGE!jwm={diA05kg?I1XRVtMTg2d7%jBW>m z!I6=Xo}QksU%!@>mC5CDg+hU07=~dG!mv$I)aK@VZb~qgO@87ShtHUtt z9Gr;|nx+Q^2KaowN~JQJ&HMZNkt$EbZnxLh*QcbUG&MEt?(RmZJlkGhU%zwbjzXdM z^yyQKUN$qG(rF*TvN1nVg(NQS{}@moeG1v$FsIi^UQ@ z9M0zErbr~}@9#gy9vd6ua=8RSToxS8*47pPK(E(FvX-E+mlMABO@bM0f#d)GsENYyk74~yS25oyuAGC;BXon8>_3Uf3iuEp^v{)>jpPy$K26_ATtw11< zNF=em{o@aWu%@QQU@!mx5UbUyQmGOHhf`BiGdemN3WbmlA3hWn6(!P6OG`^nPseeb z1tEO!;6X}CN+S7ht*^gfJ8eCHT~7n!a}J8p39?nb@X_ml&_td;R)#BsDeFs8Q@7`TvzdL(7<~6hHn~ROGA%w-5#WJ4k zcmYLG4?`M7v|`|JjX3qtE9HU+_a40H9W@1A#zaUtc^ngfLPQ0ugbNxS^q;udnau z^KodiSS*9VpwsC-fBt-7yEwBrQd7C4y!Q9nwzjssyu2R+I@-$4&VK&@Cdf$jt1>%=#ni z(Vve106LxSbmbXq;P&=*u~@vix_V)rqN(@)zBm43eErvJu~^*F(sE|m*=zryp`p~& z)ZX6S3-bpD2Tz_n;c~fA)_4*BdDv_=g+ifHsc;!NEbPR9aC{;dDBqR7SKJ zhM_3x#fujhhLx6{(V;R#8#W)YR0uqdez7696C(2n-Jo>-BoO z-CkB!rcfy4ayf=!X=!QO+uMG>|I3#z%gf7Vv)ScxRaRE2)#`$Rf>@r5^X;R!-R_Br z2^_}>g7A1ee!ri?;h-pbzER9iKw$I2|00000NkvXX Hu0mjf@oR|` literal 142 zcmeAS@N?(olHy`uVBq!ia0vp^q9Dw{1SHi;jSd2-P)`@fkcv5PCvD_CV8Ce^L_`T7-R17knKTUKnoZ=UHx3vIVCg!062L#fB*mh diff --git a/collects/teachpack/2htdp/scribblings/img/35.png b/collects/teachpack/2htdp/scribblings/img/35.png index 08e873666626b50f94bcd011aa362b10e1331e97..60a97a2408b3cb0b4ecce4fbe1db68b09e615c02 100644 GIT binary patch literal 121 zcmeAS@N?(olHy`uVBq!ia0vp^qCm{e!2~4bR|aYUDF;s%$B>FSZzn189WdZI@@Ccl z`l7rHot3BD(y}D)N~$h&6;Iia6`DKAd44kgntgkoz2E=Vyz5&~ZMmF^-}fC)7%%FI V$VMH^n-4UL!PC{xWt~$(697wIDX0Jd literal 2121 zcmV-P2)6f$P)TP@L`&!B}6thHa>m&G(SI|OeS-=oLa3`sZ=b>Rw@;z)7jJ0bL!M7v)NoLq7bz? zl}d%f;c~eQPdhp~{C>Yuscc&4VzD?gGxO`$FaC;3r8;)(*xtQ+r3F)|)YR0}moH!H z%44xu#>dBx9z7})dH3$!9kO{)oShU z@0Tujp-`Bfo?c&H7v2g6gA!(c`}Xa@g9n8|q0s}QqoX4uBm8N#TD@}R%DsE{q{~x_ zLZP^N_3Gs0Bt=p5ty{Nh@3AZ!3WYe1tCPv+^J=wv*REZSURtSCUcY{w%jHDxuB@zh zJRXfkBfJ%jM(^Lh&$6sUiKEe|!C=_8Zy!8;{P^*W8#g4L7v;l;57}&XczBqqyAg}U zN~MyhOgtVJ)&);E9L{7ijqY+BH#avYyv{Jp!-o&~MkK-1)YS6wGCYn(qfMU|-4`!j{A)AEami#-S|*>*XS3P5i{)}T9*?7_{QdiPZT!#7%%Id%EpOhu z0RVWt-X~9<$Ti#N^SyfY%5Jy+wRv@Q6{Q5i;9p)|Mrn|c#l=Pbcy@LcQHm!LiNH#~ zaN)x2?CjaIXHlfAR_pECw?BXW?DP2m09$NEkx!*kbyt>_mQaff!1wRp;XyW=tsTY@ zsZ=T-KYoPAeSLk?)6;WvbJwn2^Z9(jtjTCJo0 zW!YRV#}8T@$01f0q);fNQYpLL&Kob6Xf!%BG{m0<0)apvaOcjQY&IJTg%%eV6N!Y! z=77-kt+yc7^Z1oE6t|OYin!hGPzuiAJSx17B9kaoZRTB1+f`6 zV$){C!~nu^9G_Insw_yQQpsks(z7LLFed3Cv5#tYGOI!)qdSsoHX z0RT2OHsp#yKVt|&a=DzW33(kI9Ua)RfY9cAK98q$ZEX!Nd4$+(Hf&kI$F^KCSWOZ$ z-lpPpYZtO`I-S_E0NRXEbdKYS#iI12SAu*#Z@1g=WL++o(P+ezg-`%DL>Y!bPqT$s zEEc@3yQilITPcL9R;zgKVi*QJbrVvpR$<037tysbSy0&VStt~wC)?7nEQ?Wkhr@B` z&>?K45PX}9#Ujag18qiM28Ij_3}9>Ip&G4zHKkA}5ZY`o7!W7G5WC%e`t)gRjXV@~ zKU6FhNn#t;^|^EB&^zI=u`!f2_NL(5%(5(r%_@}&0HD+9E?>Tk5--7Eki7STP}q5I zrBWfWS*=#X1Ha!tHZ~^xu-EIobmkEF?+^A&PB^qVSfctX3g@ z>5WFC-09TzLgZ(frZJY|91aJGQgTSgDy!8BXA9^MuHcb_+3`YDDwRT^=~2x9XxmtPuKQB$sK8U>hg-d zzCP*CZvFlJE$_V`RIR&YQ8xkBXf(lKuuXJyv3HOD+WuAJQ)oQhH^|ph00000NkvXXu0mjf+aVY$ diff --git a/collects/teachpack/2htdp/scribblings/img/36.png b/collects/teachpack/2htdp/scribblings/img/36.png index 99a2eca3205e28698bed3c6923a04f7d5ddbc416..79bb91c201d552d52c96bc9f42904b6f06873e2e 100644 GIT binary patch literal 144 zcmeAS@N?(olHy`uVBq!ia0vp^q9Dw{1SHi;jSd2-a8DPRk*=a^=PUd|?x3Atf#a5?kGx6=mPEuY#&Kah_j}Zso>vc)S{`^LTaw z1uUtJfym#zUs?&=im<|>o%Aj z!UktWQ3H{b7J*Dw4hxxj4yo?g;JhA7%Zk=G6o_h?on4C!&H+81DG+(S-Pi_aUFI4V zGF2nmZpQ}aNL&YJSy7^iY<kUq(m)Isu*ECbF|xl06<9UR$4Ui+;bN7ip9PH zwyjqTW14mk5CEjol3p=MR#Mr@CFkx31ptW*j?&^Okz>e;KdnBM7v`jFTD4fwfx|R! z+g;r>N>w3)rLjaxbTyeuFAD07D~Z{u!X*Cl2Jy-d%tI#_L&MxwP#F=^M3b4)6(K~` z58e|(!A*adNvnVUT>=1h4{emjU6v)BWf^||t9S|FJpOVmxwfh=1*jj;R^6|fDDiyb zH`6PNTlzvtRL8Dqs#SLYsJN%A3+ZfuVKl6Mdb>v9;hUGdpYMtYhxBHhc@#T>Pydw` z#oA@Z$G3JxL58r~x3Z$ZPk^yy=1+1L1}j)1vh6%54ZB&O`M)rRWX0A;f4-s-#px=2b|fTvr-V>23!suD(a~i-aL7uM+uTm0 zj07vi0OwRf1y|u~cwM}Hb!qZmq$K}$IGM9Q+B0;_j{Tr=Ad)noXcb>Jl_+qVn~7ig z`OJg6;qrnfyq^8w7mxpO!;k%-av;ip<&bLSUauA;lN)YqaUuEZ_vVv{Y7zVI*H=Ei z9l(B82@r*=XND#T116Hwb2g*==9deZbnVb}{o2x!Z+rIo5sk~)M3bt4h?7aH0B~!} zA6(PaW058GkH1~Se_jy~OJmw6$5KXWZxctPlJfX19TvOrC^7XQiv7eq@Hv}J6d0(< zI18G*7fEZd>SAomszwZrnU9m<7uGtkFFn1OPlo>lL$d3<1DfF*&!mN$h2rOh{{fL#J6VIXCeP0N9Y=-8g5CK}g@w9aa+n5CpWi zaa7&5heQVQd?9A2orVB_Ai!qUaR`7SQO>pjz}=1$=Q_J7*}$tEO?KUeS&R)W*?CsG zOtY2E>!{;vx_y4Li{x#DkxqcqW$2j324|;D2j^A?m;cE;J(_VUZ zM;G#(b^J@K-JJit=LM2A>C;&6APoj|<>}yfn}MV^|L!2iQane;H5>@EaCEVsM+kcQ z>FG(Wj+CZ}-T@i_I$to?ytyL!2d%|lB}wsm1Jl!Mfj}Y_%P`0DCj-X*c;-bZ2Av-k9GXfB*ge zj*ZO-RS%z&Bzp11y%#PV9~x@QT`5GGHm9bE-_y#MTsd%50@^D=W>DqXQ$0nGx2uXOxCibjbXK( zcXK$&{Ra!;$G+vzn-`pZ*#!WLi_y2={#!h*BQsG|_44J3ci#ColH3u`59a39H*xOv*s8R< zZDyu@3;Su_moq&1-LTP!s_GN!*jvs;b_5}&d?L2$D-(7Q;$JvUkcJy#cDk+)T zyQm-j)RHsHis(IHwKdV+DWPH`b?|W0g`f2>OhFR_0cXzi^!2%BX9MAI?WVWg&b{^4 z@VoDhwzOCPfT(yrYa{Mnvuq?CBy3*4bA>T%-J{1TDnNj zRx^M7)5_=fBYEal8$J4c&*_(4Rc8Cnou{{N&wcXA6Q8fNPiC<&!^52;BYmTzeQZ%k zs>~Sxgp?SFr0hJ~Y}Jv9=b$JsKO?RA<*vO{XScq>D;|>`P79%R(bI0~|GHIsn=uy4 sc)fw8rD!mi^mzDv`<(s#u8M2ze}@5Isz&zdvj6}907*qoM6N<$f)JNe^L_`T7-R17knKTUKnoZ=UHx3vIVCg!062L#fB*mh literal 2368 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 literal 1007 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 b`CsoR9A|hnJHxUc00000NkvXXu0mjf%7EkE literal 865 zcmV-n1D^beP)HU8_Rxr_Jb$9H(s``mlOz5Bg$kc6H(IYBIj zcpRAwWEn0OBnd4oXl=#4d%9)quk3j`ZP*)BOWwY{vge;aBb&8i!1^|de!fF^mECvAL_}B*f`*#2k$)pYT z*%^{ah@U@gumSAtLF97w*ars?I@>YB>eny(>{JTE;jqWfWbCu=--i&w9=oOnLXzyU zyv9^3DSXlk+ne)teoRS*DcHR`K(y?`}bku zms$4mGH=w)yS=e7Q{Zs;CahwoQfz227_O`1;h_ebR7%uccv4Hp#6mc6XOnC5e-hm)C~I*h;OfabSQRkID{*LR?s2I<0*&l5|jK6D-U4 r_6>;yj*j5-p|KI|?eKWYIm`b55(6UE`4<<`00000NkvXXu0mjf+gz>J diff --git a/collects/teachpack/2htdp/scribblings/img/42.png b/collects/teachpack/2htdp/scribblings/img/42.png index 26ebdc8f87eeb91e80bcee7e704ff1fe29f98ebc..5cc44ce573ba2a7ab413476afaaeb6b2093d19be 100644 GIT binary patch literal 1000 zcmV>P)lrb1d(i|t?e+fEzOSx#zvuEv@9w$Za}dKYa4W$8 zX4qa@+nn9nTRlW~Ab^3sVrfLaC^*hq0B?bEbiAw9_0O*$hv*LO5QH#SR-G32!s(O) zvvFjuZDDQDV)I{*N=vg+$UIseNc30GX+C6p;FIs|+#g{%g*lPqOa)6SLy z0Fakb>ml%^Lz!IcW#vA#CQ_6td91j(-!Wxgk09y>wj7@Beue3cHV-+VtZq)f8-K-C zrw1V{k~iIT^Px;J?yq+bD;dtG*OQr`d=#2!@2Fi0dSdDrEM@q9xt?%ga%O^(pujfe z0<-j}Dw(`*aS8Adm1MO-04Y<3W}0dDA2%c5dzI&Oy74@S%WP2e2K9uti!Fx>msghE z;dd|8VI`h|o|yW^s@QsDIFM7E(ef}Po>VdJ_rT{`8hx_8l~{)eL7Q0XYH z8wjFEs!4qEoP7Ni<@5|irs~;pJe9t*u7t_ws$Ut^w3A=Y5l4|!L)CFbIWQZimiw3^ zIFOT{T1V-+;3*?>Z4TGj4&%b*6=$@NzfWyYj*fR1)&?0m1bnZu><*I8tzC***H7^M zgG>T^MCCc1Wacp<3I?$G6@5caKF`5*rS4Y72%1f!W*(WolP`b>LaD_rv z?IF0&x&r{f4fGWoc61KwM8UDSvTEFVj%A88B7a_w5Hu*lplG?I;`%zHU8_Rxr_Jb$9H(s``mlOz5Bg$kc6H(IYBIj zcpRAwWEn0OBnd4oXl=#4d%9)quk3j`ZP*)BOWwY{vge;aBb&8i!1^|de!fF^mECvAL_}B*f`*#2k$)pYT z*%^{ah@U@gumSAtLF97w*ars?I@>YB>eny(>{JTE;jqWfWbCu=--i&w9=oOnLXzyU zyv9^3DSXlk+ne)teoRS*DcHR`K(y?`}bku zms$4mGH=w)yS=e7Q{Zs;CahwoQfz227_O`1;h_ebR7%uccv4Hp#6mc6XOnC5e-hm)C~I*h;OfabSQRkID{*LR?s2I<0*&l5|jK6D-U4 r_6>;yj*j5-p|KI|?eKWYIm`b55(6UE`4<<`00000NkvXXu0mjf+gz>J diff --git a/collects/teachpack/2htdp/scribblings/img/43.png b/collects/teachpack/2htdp/scribblings/img/43.png index 5051608ba566bfa1776e147cf1bb6baedb8b8cb5..7322f66859a6bd50fb3c91fd9775fd4aadcd35d6 100644 GIT binary patch literal 678 zcmV;X0$KfuP)YNn_FzR+vD*lNfL8z%-Hk(bhUxN_JvfSx((m})!N#|7%k0^GO1Bwt@E|;376~l2?d7u); z*tYHBf%23Wy@U{Q9H)4oJe9`L(tzehFB+(#D3{A+x7#s&;Xpx7`oawp$OA2nqXL3* z=Sf7++{?OkDA!2LOncKHpIw9;l{irfD*FqllmoLRD2Q z%Styz1O>eG1qIE{lLP=L#Zy#JM@s|Bk6u8~kE5>^-_d%#UaQrzZ~t!;#yALq)9I9S zq~r(DOl8s+7nDiAY@h-@oIcUNS|3MWt&)QZIQ5N2$tw|E@O;Wt5xwdlv3NaH@7kj zBQ9LmWkLURn0(*g@MIWtvJm#?fb@-|zQnCm2Bp(qB231_u#|AQnSB4!0W%7h>^ZR92$88tc|!(IQ7igWJxVfBZmqHy%GmZ!f-mvoM$& zTee`w4z#vn=S~zA*%+JpnVRCIOKfbU%S9m1mX-0?F@F4*$M__v=MDyW`ZQOr%%7W9 zrP$WSSFh&G9gFe81$w=XiPQ8)k8*U>Y4_{btgW3BacWCT+0)~k`{G4T>bq zNk*gg+_4ys94U}EwYzpP9M0E0Imz9-1<*#fZspIP`tC@CEiGbbqnkEyY)r?UNbul6 zVYJbvCeF-QcAq^fFaF!ZhpoBq-J??S+|*vZn#&yyv!X&Cn${&t`1x~I_wnQMO4IJy zliB_DEsKieiJ98fmBD@JkUTC+YigKC{Nw)g>A#+Aqt~zh<34dho|Ut;wX@xc1k20i zSyuYwNz$zV+`o^ZAsdfO1e)^Iv6b3!r{e1WU6^%+O z^b-t1&95(|kx&TAZEIyyCgCvDf(6nF{dm1l9*?v_KRzE+MTN9NKjr06Yu8FE^s{l} zJan&FgB2^Fd_GiFNn3QXZ5v?R$8O&)OwmefD`2=A8-*!a*}E42KyqNf)(%r4TVJ2@ ze7S1Xy!oiKxBs~^_??~dbD6VCmvUla_WH@>B$qFjmu2s%Q)cUIfq=X$ON)yc3Yocw zhgni0@5|IPXELm7l01K2-e+3BKYhbwmOBz*O^v)Vtu7ZIK4eH2M zjy7?VJa;}_8+h%S z`QM83ZX**DynH#&Uz=si*xt_G-uy;R#zlMQO#AzB>lSX`#)}u|@6Y%$uNQT7Xlg=B z3mO_=e=*grJ2j)Dc=rxNLkI>jK8}(S_HU8_Rxr_Jb$9H(s``mlOz5Bg$kc6H(IYBIj zcpRAwWEn0OBnd4oXl=#4d%9)quk3j`ZP*)BOWwY{vge;aBb&8i!1^|de!fF^mECvAL_}B*f`*#2k$)pYT z*%^{ah@U@gumSAtLF97w*ars?I@>YB>eny(>{JTE;jqWfWbCu=--i&w9=oOnLXzyU zyv9^3DSXlk+ne)teoRS*DcHR`K(y?`}bku zms$4mGH=w)yS=e7Q{Zs;CahwoQfz227_O`1;h_ebR7%uccv4Hp#6mc6XOnC5e-hm)C~I*h;OfabSQRkID{*LR?s2I<0*&l5|jK6D-U4 r_6>;yj*j5-p|KI|?eKWYIm`b55(6UE`4<<`00000NkvXXu0mjf+gz>J literal 1039 zcmV+q1n~QbP)qB231_u#|AQnSB4!0W%7h>^ZR92$88tc|!(IQ7igWJxVfBZmqHy%GmZ!f-mvoM$& zTee`w4z#vn=S~zA*%+JpnVRCIOKfbU%S9m1mX-0?F@F4*$M__v=MDyW`ZQOr%%7W9 zrP$WSSFh&G9gFe81$w=XiPQ8)k8*U>Y4_{btgW3BacWCT+0)~k`{G4T>bq zNk*gg+_4ys94U}EwYzpP9M0E0Imz9-1<*#fZspIP`tC@CEiGbbqnkEyY)r?UNbul6 zVYJbvCeF-QcAq^fFaF!ZhpoBq-J??S+|*vZn#&yyv!X&Cn${&t`1x~I_wnQMO4IJy zliB_DEsKieiJ98fmBD@JkUTC+YigKC{Nw)g>A#+Aqt~zh<34dho|Ut;wX@xc1k20i zSyuYwNz$zV+`o^ZAsdfO1e)^Iv6b3!r{e1WU6^%+O z^b-t1&95(|kx&TAZEIyyCgCvDf(6nF{dm1l9*?v_KRzE+MTN9NKjr06Yu8FE^s{l} zJan&FgB2^Fd_GiFNn3QXZ5v?R$8O&)OwmefD`2=A8-*!a*}E42KyqNf)(%r4TVJ2@ ze7S1Xy!oiKxBs~^_??~dbD6VCmvUla_WH@>B$qFjmu2s%Q)cUIfq=X$ON)yc3Yocw zhgni0@5|IPXELm7l01K2-e+3BKYhbwmOBz*O^v)Vtu7ZIK4eH2M zjy7?VJa;}_8+h%S z`QM83ZX**DynH#&Uz=si*xt_G-uy;R#zlMQO#AzB>lSX`#)}u|@6Y%$uNQT7Xlg=B z3mO_=e=*grJ2j)Dc=rxNLkI>jK8}(S_HU8_Rxr_Jb$9H(s``mlOz5Bg$kc6H(IYBIj zcpRAwWEn0OBnd4oXl=#4d%9)quk3j`ZP*)BOWwY{vge;aBb&8i!1^|de!fF^mECvAL_}B*f`*#2k$)pYT z*%^{ah@U@gumSAtLF97w*ars?I@>YB>eny(>{JTE;jqWfWbCu=--i&w9=oOnLXzyU zyv9^3DSXlk+ne)teoRS*DcHR`K(y?`}bku zms$4mGH=w)yS=e7Q{Zs;CahwoQfz227_O`1;h_ebR7%uccv4Hp#6mc6XOnC5e-hm)C~I*h;OfabSQRkID{*LR?s2I<0*&l5|jK6D-U4 r_6>;yj*j5-p|KI|?eKWYIm`b55(6UE`4<<`00000NkvXXu0mjf+gz>J literal 420 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 diff --git a/collects/teachpack/2htdp/scribblings/img/47.png b/collects/teachpack/2htdp/scribblings/img/47.png new file mode 100644 index 0000000000000000000000000000000000000000..5051608ba566bfa1776e147cf1bb6baedb8b8cb5 GIT binary patch literal 1039 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 literal 0 HcmV?d00001 diff --git a/collects/tests/2htdp/test-image.ss b/collects/tests/2htdp/test-image.ss index b70779e316..b5bf42f5d7 100644 --- a/collects/tests/2htdp/test-image.ss +++ b/collects/tests/2htdp/test-image.ss @@ -633,3 +633,21 @@ 0.01) #t) +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; +;; lines +;; + +(check-equal? (image-width (line 10 20 'black)) + 11) +(check-equal? (image-height (line 10 20 'black)) + 21) + +(check-equal? (round-numbers (rotate 90 (line 10 20 'black))) + (round-numbers (line 20 -10 'black))) + +(check-equal? (round-numbers (line 20 30 "red")) + (round-numbers (rotate 180 (line 20 30 "red")))) + +(check-equal? (round-numbers (line -30 20 "red")) + (round-numbers (line 30 -20 "red")))