Guest User

Untitled

a guest
May 26th, 2018
91
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.95 KB | None | 0 0
  1. ; A Circle is:
  2. ; (make-Circle posn number color)
  3. (define-struct Circle (center radius clr))
  4.  
  5. (define C1 (make-Circle (make-posn 0 0) 5 "purple"))
  6. (define C2 (make-Circle (make-posn 2 4) 12 "blue"))
  7.  
  8. ; ;; Circle-fun: Circle ->
  9. ; ;; given ..., produces
  10. ; (define (Circle-fun a-Circle)
  11. ; (Circle-center a-Circle)
  12. ; (Circle-radius a-Circle)
  13. ; (Circle-clr a-Circle))
  14. ;
  15. ; (check-expect (Circle-fun ...) ...)
  16. ; (check-expect (Circle-fun ...) ...)
  17. ;
  18.  
  19. ;
  20. ; ;; 3.
  21. ;
  22. ; ;; Circle-circumference: Circle -> number
  23. ; ;; given a Circle, produces its circumference
  24. ; (define (Circle-circumference a-Circle)
  25. ; (* 3.14 (expt (Circle-center a-Circle) 2)))
  26. ;
  27. ;
  28. ; (check-expect (Circle-circumference C1) )
  29. ; (check-expect (Circle-circumference C2) ...)
  30.  
  31.  
  32. ; ; 1.
  33. ;
  34. ; ; Circle-fun: Circle -> ?
  35. ;
  36. ; ; given ..., produces ...
  37. ;
  38. ; (define (Circle-fun a-Circle)
  39. ;
  40. ; (Circle-center a-Circle)
  41. ;
  42. ; (Circle-radius a-Circle)
  43. ;
  44. ; (Circle-clr a-Circle))
  45. ;
  46.  
  47.  
  48. ; 3.
  49.  
  50. ; Circle-circumference: Circle -> number
  51. ; given a Circle, produces its cirumference
  52.  
  53. (define (circumference a-Circle)
  54. (* 3.14 (* 2 Circle-radius a-Circle)))
  55.  
  56.  
  57. (check-expect (Circle-circumference C1) 31.4)
  58. (check-expect (Circle-circumference C2) 56.52)
  59.  
  60.  
  61.  
  62. ; 4.
  63.  
  64. ; Circle-area: Circle -> number
  65. ; given a Circle, produces its area
  66.  
  67. (define (Circle-area a-Circle)
  68. (* 3.14 (sqr Circle-radius a-Circle)))
  69.  
  70.  
  71. (check-expect (Circle-area C1) 78.5)
  72. (check-expect (Circle-area C2) 153.86)
  73.  
  74.  
  75.  
  76. ; 5.
  77.  
  78. ; Circle=?: Circle Circle -> boolean
  79. ; given two Circles, produces whether they're the same
  80.  
  81. (define (Circle=? a-Circle b-Circle)
  82. (and (posn=? (Circle-center a-Circle) (Circle-Center b-Circle))
  83. (= (Circle-radius a-Circle) (Circle-radius b-Circle))
  84. (string=? (Circle-clr a-Circle) (Circle-clr b-Circle))))
  85.  
  86.  
  87. (check-expect (Circle=? S1 S2) false)
  88. (check-expect (Circle=? S1 (make-Circle (make-posn 25 25) 5 "silver"))
  89. true)
  90.  
  91.  
  92.  
  93. ; 6.
  94.  
  95. ; draw-Circle: Circle -> image
  96. ; given a Circle, produces an image of a Circle of the correct size and
  97. ; color
  98.  
  99. (define (draw-Circle a-Circle)
  100. (circle (Circle-center a-Circle)
  101. (Circle-radius a-Circle)
  102. "outline"
  103. (Circle-clr a-Circle)))
  104.  
  105.  
  106. (check-expect (draw-Circle C1) (circle (make-posn 25 25) 5 "outline" "purple"))
  107. (check-expect (draw-Circle C2) (circle (make-posn 7 7) 9 "outline" "green"))
  108.  
  109.  
  110.  
  111. ; 7.
  112.  
  113. ; place-Circle: Circle image -> image
  114. ; given a Circle and an image, produces a new image with the Circle
  115. ; placed in the right location on it
  116.  
  117. ; (define (place-Circle a-Circle bg)
  118. ; (place-image/align (draw-Circle a-Circle)
  119. ; (posn-x (Circle-center a-Circle))
  120. ; (posn-y (Circle-Center a-Circle))
  121. ; "left" "top"
  122. ; bg))
  123. ;
  124. ;
  125. ;
  126. ; (check-expect (place-Circle C1 (empty-scene 100 100))
  127. ; (place-image/align (circle (make-posn 25 25) 5 "blue")
  128. ; "left" "top")
  129. ; (empty-scene 100 100))
  130. ; (check-expect (place-Square C2 (rectangle 200 300 "solid" "black"))
  131. ; (place-image/align (circle (make-posn 7 7) 9 "silver")
  132. ; "left" "top")
  133. ; (rectangle 200 300 "solid" "black"))
  134.  
  135.  
  136.  
  137.  
  138. ;8.
  139. ; Circle-translate: Circle number number -> Circle
  140. ; given a Circle and a number of pixels to move it down and over,
  141. ; produces a new Circle at that location
  142.  
  143. (define (Circle-translate a-Circle delta-x delta-y)
  144. (make-Circle (posn-translate (Circle-center a-Circle)
  145. delta-x
  146. delta-y)
  147. (Circle-radius a-Circle)
  148. (Circle-clr a-Circle)))
  149.  
  150. (check-expect (Circle-translate C1 25 25)
  151. (make-Circle (make-posn 50 50) 10 "blue"))
  152. (check-expect (Circle-translate C2 7 7)
  153. (make-Circle (make-posn 14 14) 16 "silver"))
Add Comment
Please, Sign In to add comment