#lang scheme/gui

;;LA VENTANA Y EL LIENZO
(define ventana
  (make-object frame% 
    "3 D" 
    #f 
    400 400;ANCHO ALTO
    256 0;UBICACIÓN
    ))

(define grid
  (instantiate canvas% 
    (ventana) 
    (style '(border)) ))
  
(define dc (send grid get-dc))

;;;;Cálculos para sistema coordenadas normales.
;;;;El eje de las X vale
;;;;Para determinar las Y

(define y-ordenada
  (lambda (y)
    (let ((y-base 200))
      (- y-base y))))

(send ventana show #t)
(sleep/yield 1)
;(send dc set-pen (make-object pen% "darkred" 1 'solid))
;(send dc set-brush (make-object brush% "red" 'solid))
;(send dc draw-rectangle 0 (y-ordenada 0) 10 10)

(define dibujo-3d
  (lambda (x y ancho alto)
    (let go ((iter 10)
             (x x)
             (y (y-ordenada y))
             (rojo 235)
             (verde 0)
             (azul 0)
             (color (make-object color% 255 0 0))
             (base ancho)
             (altura alto)
             )
      (if (= iter 1)
          (begin
            (send color set rojo verde azul)
            (send dc set-pen (make-object pen% "black" 0.5 'solid))
            (send dc set-brush (make-object brush% color 'solid))
            (send dc draw-rectangle x y base altura))
          (begin
            (send color set rojo verde azul)
            (send dc set-pen (make-object pen% color 1 'solid))
            (send dc set-brush (make-object brush% color 'solid))
            (send dc draw-rectangle x y base altura)
            (sleep/yield .1)
            (go (- iter 1) (- x 1) (+ y 1) (+ rojo 2) verde azul color base altura)) )) ))



(dibujo-3d 170 50 25 25)
(dibujo-3d 140 30 30 30)
(dibujo-3d 100 0 40 40)
