#lang scheme/gui

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

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

(send ventana show #t)
(sleep/yield 1)

;;
(define x-or 50)
(define y-or 450)
(define x-fin 450)
(define y-fin 50)
;;una rejilla con divisiones cada 10 puntos
(define rejilla
  (lambda (dc)
    (send dc set-pen (make-object pen% "black" 0.3 'long-dash))
    (let* ((orig-x x-or)
           (orig-y y-or)
           (largo 450)
           )
      (let go ((i 0)
               (j largo)
               )
        (if (= i j)
            'grid-10
            (begin
              (send dc draw-line orig-x (- orig-y i) (+ orig-x largo) (- orig-y i))
              (send dc draw-line (+ orig-x i) orig-y (+ orig-x i) (- orig-y largo))
              (go (+ 10 i) j))
            )
        )
      )
    ))
(rejilla dc)
;;la línea del horizonte
(define horizonte
  (lambda (dc)
    (send dc set-pen (make-object pen% "black" 2 'solid))
    (let ((largo 400)
          )
      (send dc draw-line x-or (- y-or (/ largo 2)) (+ x-or largo) (- y-or (/ largo 2)))
      )
    ))
(horizonte dc)

;(send dc draw-rectangle 150 130 200 200)

;(send dc draw-ellipse 150 130 200 200)

(define circunferencia
  (lambda (x-centro y-centro radio)
    (send dc set-pen (make-object pen% "black" 0.3 'long-dash))
    (let ((x (- x-centro radio))
          (y (- y-centro radio)); (+ y-centro radio)
          (diam (* 2 radio))
          )
      (send dc draw-ellipse x y diam diam)
      )
    ))
(circunferencia (+ x-or 200) (- y-or 200) 200)
(horizonte dc)

(send dc draw-line (+ x-or 200) y-or x-or (- y-or 200))

(send dc draw-line (+ x-or 200) y-or (+ x-or 400) (- y-or 200))

(send dc draw-line (+ x-or 200) y-or (+ x-or 200) (- y-or 200))
(rejilla dc)

