PrésentationCe Visualiseur 3D était un projet de Licence.Il est écrit en Scheme et permet de construire, visualiser et manipuler différents objets 3D. L'utilisation est assez simple. On peut contrôler 4 différentes cameras. Une animation est possible afin de visualiser les étapes intermédiaires pour passer d'une caméra a l'autre. Photos d'écran:Langage utiliséCes programmes sont écrit en Scheme. Il s'agit d'un langage fonctionnel proche du Lisp.Il est fortement basé sur la récursivité. ce langage est très surprenant, et si il n'est pas très intuitif, au début, on s'y habitue vite on on prend un certain plaisir a l'utiliser. En exemple, voici le morceau du code nécessaire a l'exécution du programme. ;------ Retourne une liste de points ayant subis un rotation d'axe y
(define (Rotation_points L angle)
(let ((A (cos angle))
(B (- (sin angle)))
(C (sin angle))
(resultat '()))
(do ((ptr L (cddr ptr)))
((null? ptr) resultat)
(let ((x (/ (car ptr) Reduction))
(y (/ (- decaly2 (cadr ptr)) Reduction)))
(set! resultat (cons (make point
:xp (* A x)
:yp (* C x)
:zp y)
resultat))))))
;------ Cree une liste de faces a partir de 2 listes de points
(define (Cree_faces L1 L2 c)
(let ((resultat '()))
(do ((ptr_1 L1 (cdr ptr_1)) (ptr_2 L2 (cdr ptr_2)))
((null? (cdr ptr_1)) (cons (make face :couleur c
:Lsommets (list (car ptr_1) (car ptr_2) (car L2) (car L1))) resultat))
(set! resultat (cons
(make face :couleur c :Lsommets (list (car ptr_1) (car ptr_2) (cadr ptr_2) (cadr ptr_1))) resultat)))))
;------ Cree un l' objet 3D (Objet_cree) a partir de la rotation de Objet2D autour de l'axe des x
(define (Cree_Objet_Rotation tranches c)
(if (or (null? objet2d) (null? (cddr objet2d)) (null? (cddddr objet2d)))
(set! Objet_Cree '())
(let ((lstpoints '())
(lstfaces '()))
(do ((ntranche 0 (+ ntranche 1 )))
((= ntranche tranches))
(set! lstpoints (cons (Rotation_points objet2d (* ntranche (/ (* 2 PI) tranches))) lstpoints)))
(do ((ptr lstpoints (cdr ptr)))
((null? (cdr ptr)) (set! lstfaces (cons (Cree_faces (car ptr) (car lstpoints) c) lstfaces)))
(set! lstfaces (cons (Cree_faces (car ptr) (cadr ptr) c) lstfaces)))
(set! Objet_Cree (list (make objet :Lfaces (apply append lstfaces) :Lpoints (apply append lstpoints)))))))
Les sources du programme :Les sources du programme sont accessibles ici : Viewer3D-sources_V1.0.zip.Pour interpréter ces fichiers sous Windows vous devrez décompresser le fichier suivant de 3 Mo: STkWin32.zip. Une fois décompressé, copier les fichiers *.stk du programme (contenus dans le premier *.zip téléchargé) dans le sous répertoire "STkWin32\STk\MS-Win32". Lancer ensuite le .bat envdraw.bat contenu dans ce même répertoire. Choisissez "File->Load" et sélectionnez enfin le fichier "Viewer3D.stk". Le programme devrait se lancer. |