PasteRack.org
Paste # 26649
2024-12-24 16:55:52

Fork as a new paste.

Paste viewed 574 times.


Embed:

tree

  1. #lang racket/base  ; A picture
  2. (require racket/draw racket/class pict)
  3. ; christmas tree x coords
  4. (define side (list (cons 0 0) (cons 1 1) (cons 2 2)
  5.                    (cons 1 2) (cons 2 3) (cons 3 4)
  6.                    (cons 2 4) (cons 3 5) (cons 4 6)
  7.                    (cons 3 6) (cons 4 7) (cons 5 8)
  8.                    (cons 0 8)
  9.                    (cons -5 8) (cons -4 7) (cons -3 6)
  10.                    (cons -4 6) (cons -3 5) (cons -2 4)
  11.                    (cons -3 4) (cons -2 3) (cons -1 2)
  12.                    (cons -2 2) (cons -1 1) (cons 0 0)))
  13.  
  14. (define bigside (map (λ (c) (cons (+ 50 (* 10 (car c))) (* 10 (cdr c)))) side))
  15.  
  16. (define tt (dc (λ (dc dx dy)
  17.  
  18.       ;; prepare
  19.       (define old-brush (send dc get-brush))
  20.       (define old-pen (send dc get-pen))
  21.  
  22.       ;; do the thing
  23.       (send dc set-brush (new brush% [color "darkgreen"]))
  24.       (send dc set-pen (new pen% [width 3] [color "darkgreen"]))
  25.  
  26.       (define path (new dc-path%))
  27.       (send path move-to 50 0)
  28.       (send path lines bigside)
  29.       (send path close)
  30.       (send dc draw-path path dx dy)
  31.  
  32.       (send dc set-brush (new brush% [color "brown"]))
  33.       (send dc set-pen (new pen% [width 1] [color "brown"]))
  34.       (define path2 (new dc-path%))
  35.       (send path2 move-to 50 80)
  36.       (send path2 lines (list (cons 55 80) (cons 55 100) (cons 45 100) (cons 45 80)))
  37.       (send path2 close)
  38.  
  39.       (send dc draw-path path2 dx dy)
  40.  
  41.       ;; clean up
  42.       (send dc set-brush old-brush)
  43.       (send dc set-pen old-pen))
  44.     110 110))
  45.  
  46.  
  47. tt
  48.  

=>

image