(define (rep n g)
  (cond ((<= n 0) (adjoin))
	((> n 0) (adjoin g (rep (- n 1) g)))))

(define (circle radius)
  (adjoin (be (/ 180 radius))
	  (rep (* radius 2)
	       (adjoin (st (/ (circum radius) (* 2 radius)))
		       (be (/ 360 (* 2 radius)))))))

(define (circum radius)
  (* 2 (acos -1) radius))

(define (pig)
  (adorn (st 0)
	 (adjoin (be -90)
		 (transparent 50)
		 (circle 13))    ; left foot
	 (adjoin (be 90)
		 (transparent 50)
		 (be 180)
		 (circle 13))    ; right foot
	 (adjoin (transparent 15)
		 (be -90)
		 (circle 100))   ; body
	 (adjoin (transparent 20)
		 (be -90)
		 (circle 70))    ; face
	 (adjoin (transparent 35)
		 (be -90)
		 (circle 25))    ; nose
	 (adjoin (transparent 60)
		 (be -90)
		 (transparent 10)
		 (circle 7))     ; left nostril
	 (adjoin (transparent 60)
		 (be 90)
		 (transparent 10)
		 (be 180)
		 (circle 7))     ; right nostril
	 (adjoin (transparent 100)
		 (be -90)
		 (transparent 30)
		 (circle 12))    ; left eye
	 (adjoin (transparent 100)
		 (be 90)
		 (transparent 30)
		 (be 180)
		 (circle 12))    ; right eye
	 (adjoin (transparent 107)
		 (be -90)
		 (transparent 24)
		 (circle 5))     ; left eyeball
	 (adjoin (transparent 107)
		 (be 90)
		 (transparent 36)
		 (be 180)
		 (circle 5))     ; right eyeball
	 (adjoin (transparent 147)
		 (be -90)
		 (transparent 45)
		 (circle 13))    ; left ear
	 (adjoin (transparent 147)
		 (be 90)
		 (transparent 45)
		 (be 180)
		 (circle 13))    ; right ear
	 (adjoin (transparent 149)
		 (be -90)
		 (transparent 42)
		 (circle 8))     ; left inner ear
	 (adjoin (transparent 149)
		 (be 90)
		 (transparent 42)
		 (be 180)
		 (circle 8))     ; right inner ear
	 (adjoin (transparent 50)
		 (be -90)
		 (st 22))        ; left mouth
	 (adjoin (transparent 50)
		 (be 90)
		 (st 24))        ; right mouth
	 (adjoin (transparent 215)
		 (be -90)
		 (tail 5)
		 (be 60)
		 (tail 7)
		 (be 90)
		 (tail 5))))     ; tail!!!

(define (tail radius)
  (adjoin (be (/ 180 radius))
	  (rep (* radius 2)
	       (adjoin (st (/ (circum radius) (* 2 radius) 1.6))
		       (be (/ 360 (* 2 radius) 1.6))))))