(load "graphlib.ss")
;(load "veclib.ss")
(load "surflib.ss")



;; les definitions ne doivent pas etre necessairement dans l'ordre, mais lorsqu'une evaluation est requise, toutes les definitions necessaires doivent avoir ete realisees.
(define (fun2 x y) (fun1 x y)) 
(define fun1 *)
(fun2 2 3)


(define orange (make-object color% 100 50 10))



;; essai d'affichage de surfaces parametriques


;;viewport ameliore pour gestion d'affichage de surfaces parametriques
(make-ortho 3dv (title "View3D") 
            (close #t)  ; surface fermee: elaguer face arriere (polygones avant et arriere ne se chevauchent pas)
            (hidden #t) ; suppression face cachees
            (contour #t) ; par defaut
            (light #f)  ;position et couleur de la lumiere
            (bounds '(-1.5 1.5 -1.5 1.5)) 
            (size '(500 500))
            (origin '(30 -100 60)); position du centre du viewport (2d) dans l'espace
            (normal '(-0.3 1 -0.6)); normale de l'ecran, antiparalelle de l'origine (* +/- 100)
            (up '(0 0 1)) ;ou est le haut - fixe automatiquement a (perp normal)
            )


;; pour compatibilite fonctions predefinies graphlib
(define sph 3dv)

;; affichage d'une sphere
; 'interval's stockant les parametres de la surface parametrique
(3dv: set-intervals 
      (reverse (interval 0 pi 20)) ; theta 
      (interval 0 2pi 30)) ; phi
; a faire apres set-intervals
(3dv: set-surface (sphere 1.0)) ; surface parametrique. appel *necessairement* apres set-intervals
;sphere: lambda (theta phi)

(3dv: backstore #t)
(3dv: make-surface)
(3dv: draw-surface)



;;extra

;; formes predefinies (affichage sur sph): cf surflib, section tests
;(cyl)
;(tor)
;(pln)
;(hyp)

