Cours de programmation (Jan-Avr 2013)

Ce cours est oriente vers la creation d'images fixes et d'animations.

  • Presentation du projet d'animation. Ces quelques mots presentent le langage de programmation PAW et expliquent comment nous comptons nous en servir pour creer une animation retracant un episode de l'histoire de Beaulieu-sur-Dordogne.

  • File paw.zip (2.9 MB) Ceci est le fichier qu'il convient de telecharger pour pouvoir utiliser PAW. C'est une version pour les systemes Windows. Il existe bien sur aussi une version pour LINUX. Quand le fichier a ete telecharge et ouvert, lancer l'executable pawNT.exe. Cela devrait ouvrir deux fenetres: une fenetre de commande et une fenetre graphique. Une fois que la fenetre de commande s'est ouverte on peut, a titre de test, y taper la commande suivante: NULL 0 10 0 10. Normalement, cette commande cree un repere (0,10)x(0,10).

  • PAW: Presentation en francais. Ce texte donne une introduction a PAW centree sur la realisation de graphiques et d'animations. Le code des macros expliquees dans ce fascicule se trouve dans le fichier anim.kumac ci-dessous.

  • Fichier anim.kumac Cette macro-tiroir contient toutes les macros qui sont expliquees dans le texte ci-dessus ``PAW: Presentation en francais''. Au fil du semestre elle sera augmentee de toutes les autres macros au fur et a mesure de leur creation.

  • PAW, manuel de l'utilisateur (480 pages, en anglais). PAW (Physics Analysis Workstation=Poste de travail pour la recherche en physique) est un logiciel graphique et de calcul mis au point au CERN (Conseil Europeen pour la Recherche Nucleaire situe pres de Geneve) entre 1986 et 2004. Bien que concu en premier lieu pour l'analyse des donnees experimentales produites par les accelerateurs du CERN, PAW constitue aussi un logiciel multi-fonctions semblable a MATLAB (Matrix Laboratory). La syntaxe de PAW est assez similaire a celle de Unix (par ex. dans sa version ''bash'') si bien qu'apprendre a se servir de PAW permet par la meme occasion de se familiariser avec ces langages.

  • Macro produisant un film de 50s. Cette macro montre la methode de temporisation pour creer une succession d'images separees par un laps de temps donne (ici 49ms).

  • Macro de fabrication de couleurs. Cette macro montre comment produire des couleurs a volonte par melange des 3 couleurs primaires en proportions variables.

  • Macro lisant et ecrivant sur des fichiers. Cette macro (c'est-a-dire un sous-programme realisant certaines taches) fait 4 choses: (i) elle lit des donnees sur des fichiers per01.1.txt,... donnes ci-dessous (ii) a titre de verification elle ecrit ces memes donnees sur un autre fichier verif.txt (iii) elle fait un graphique montrant les mouvements de poissons dans un bassin circulaire. (iv) elle cree un fichier postscript du graphique.

  • Donnees decrivant les mouvements d'un poisson dans un bassin. Ces donnees sont basees sur les images d'une video; l'intervalle entre deux lignes successives de donnees est de 1/12 s.

  • Donnees decrivant les mouvements de 2 poissons dans un bassin (1).
  • Donnees decrivant les mouvements de 2 poissons dans un bassin (2).

  • Macro ''visage.kumac'' pour dessiner et modifier un visage.

  • Dessin produit avec ''visage.kumac''.

  • Deux portraits de Tintin Notez la bouche qui est composee de 2 demies-ellipses en vue de son animation ulterieure. On trouvera des explications complementaires dans pawfrancais.txt, section relative a la realisation de motifs importes.

  • Cadre historique des guerres de religion en France. De 1525 a 1648 des guerres de religion ravagerent l'Europe. Ce texte en donne une breve chronologie. L'episode qui se produisit a Beaulieu-sur-Dordogne en octobre 1569 fut un element d'une fresque bien plus large.

  • FILM 1a: Animation montrant le lever du jour sur la Dordogne. Pour decrire l'arrivee du jour le 31 octobre 1569 cette animation fait appel a des changements de couleur du sol, du ciel et de la Dordogne. Les images de ce film sont produites par la macro ANIM#LEVERJOUR. Pour s'executer correctement cette macro a besoin des donnees du fichier ``dordo.motif'' donne ci-dessous.

  • FILM 1b: La meme animation avec son On a utilise le logiciel ``ffmpeg;; pour rajouter une bande son a l'animation precedente. Cependant, comme ``ffmpeg'' ne reconnait pas le format gif, il a fallu d'abord transformer le film gif en film avi. Ceci peut se faire grace aux sites Internet proposant cette conversion. Puis la bande son ``son1.mp3'' a ete rajoutee par la commande suivante: ffmpeg -i son1.mp3 -i tbar.avi tbar.mpg. Helas, ces tranformations successives ont conduit a une perte de qualite des images. On peut noter que le film tbar.mpg a ete visionne par la commande: ffplay 'tbar.mpg'. Il est possible qu'une partie de la perte de qualite soit due a ce visionneur.

  • Fichier dordo.motif. Ce fichier donne le motif du cours de la Dordogne qui est necessaire a la macro ANIM#LEVERJOUR qui fabrique le film ``Animation montrant le lever du jour sur la Dordogne''.

  • FILM 2: Animation-test en 3 dimensions. Comme beaucoup d'eglises, l'abbatiale de Beaulieu a deux clochers: un clocher eleve surplombant l'entree et un clocher de moindre envergure a l'aplomb de l'autel. Dans la presente animation ces deux clochers sont schematises par les deux gaussiennes. Il serait bien sur possible de representer l'edifice de facon plus realiste. On a voulu faire ici un test preliminaire avant d'investir davantage de temps dans cette technique. Cette animation a ete produite par la macro ANIM#3DGAUSS; pour s'executer cette macro a besoin du fichier Fortran ``gauss.for'' donne ci-dessous.

  • Fichier gauss.for Ce fichier (ecrit en Fortran) est necessaire a la macro ANIM#3DGAUSS. Elle appelle la fonction ``gauss.for'' pour le calcul des valeurs de l'histogramme.

  • FILM 3: Animation en 3 dimensions: abbaye de Beaulieu. Cette animation montre de facon schematique ce qu'aurait vu au 16e siecle un oiseau arrivant sur l'abbaye par le sud-est et faisant le tour de l'eglise dans le sens horaire. Les fluctuations dans la premiere partie du film sont dues au fait que les details a visualiser sont trop petits par rapport au maillage de la figure. Cette animation a ete produite par la macro ANIM#3DABBAYE; pour s'executer cette macro a besoin du fichier Fortran ``abbaye.for'' donne ci-dessous.

  • Fichier abbaye.for Ce fichier (ecrit en Fortran) est necessaire a la macro ANIM#3DABBAYE. Cette derniere appelle la fonction ``abbaye.for'' pour le calcul des valeurs de l'histogramme.

  • Fichier test0.for. Ce fichier contient du code ecrit en langage FORTRAN. Ce code est necessaire pour l'execution de la commande FUN2 10 TEST0.FOR [NX] [X1] [X2] [NY] [Y1] [Y2] ' ' qui est utilisee dans la macro ANIM#TESTPLOT pour dessiner un cube.

  • Fichier test.for. Ce fichier contient du code ecrit en langage FORTRAN. Ce code est necessaire pour l'execution de la commande FUN2 10 TEST.FOR [NX] [X1] [X2] [NY] [Y1] [Y2] ' ' qui est utilisee dans la macro ANIM#TESTPLOT

  • Fichier motif.zip contenant les fichiers arbre.motif, cavalier.motif, etc. Un fichier ``.zip'' est en fait plutot une ``boite'' contenant de nombreux fichiers (ici plus de 40). Une fois cette ``boite'' telechargee dans votre ordinateur (dans le repertoire ou se trouve PAW), il faudra l'ouvrir (sous Linux avec ``unzip'' et il y a une commande equivalente sous Windows) pour recuperer tous les fichiers qu'elle contient. Ces fichiers sont necessaires a chaque fois que vous utilisez la macro ANIM#LECM, premiere etape dans la fabrication d'un motif. ANIM#LECM essait de lire les fichiers relatifs au motif considere et s'il ne les trouve pas il renvoie une avalanche de messages d'erreur.

  • FILM 4a: Film caval.gif Ce film montre un groupe de cavaliers qui s'approchent. Il est realise par la macro ANIM#CAVALIERS (partie no 10). C'est un film qui n'a que peu d'images mais il montre le principe. Pour obtenir un film plus convaincant il faudrait reajuster les couleurs (choisies ici au hasard), ameliorer le decor (en rajoutant des arbres ou des maisons) et augmenter le nombre des images.

  • FILM 4b: Film avec son (fichier cavalson.avi) Au film precedent on a ajoute une bande-son au format mp3 grace au logiciel ``Movie Maker'' de Windows. La bande son etant legerement plus longue que la bande image vous continuerez d'entendre la musique apres la fin de l'animation. Il conviendrait d'harmoniser son et image ce que permet ``Movie Maker''. Un grand merci a notre camarade Ernest Chiche qui nous a initie a ``Movie Maker''. Notons que l'association d'une bande son a une video peut aussi se faire avec le logiciel ffmpeg.

  • FILM 4c: Film avec son (fichier caval3.mpg) A titre de test, au film 4a on a ajoute une bande son grace a la commande ffmpeg -i reagan.wav -i caval.gif caval3.mpg Il semble que seules les versions les plus recentes de ffmpeg acceptent le format gif.

  • Script ``film.sh'' produisant un film a partir des images paw*.ps generees par PAW. Ce script (``script'' est un synonyme de ``macro'') fait successivement deux operations: (i) D'abord la transformation des fichiers paw*.ps en fichiers paw*.jpg. (ii) Puis, la creation du film par la mise bout a bout des images paw*.jpg. Ces operations se font a l'aide de commandes utilisant le logiciel ``convert''.

  • FILM 5: Film chape1.gif Ce film 3D explore l'architecture de la Chapelle des Penitents de Beaulieu-sur-Dordogne telle qu'elle apparaitrait a une corneille qui s'approcherait de la chapelle en venant du nord-ouest, puis en ferait le tour. Ce fichier comporte 400 images et fait 36 MB. Il a ete realise avec les macros: ANIM#FILMEXEC+ANIM#FILMGIF+ANIM#FILMPAW (n0 1+2); ANIM#FILMPAW fait appel a la fonction ``test.for'' (ecrit en Fortran) et ANIM#FILMGIF fait appel au script ``film.sh'' (ecrit en LINUX-bash)

  • FILM 6: Film chape2.gif Ce film 3D explore l'architecture de la Chapelle des Penitents de Beaulieu-sur-Dordogne telle qu'elle apparaitrait a un papillon qui s'eleverait d'abord le long du clocher puis plongerait vers le cote oppose, c'est-a-dire la partie voutee qui abrite le choeur. Ce fichier comporte 400 images et fait 35MB. Il a ete realise avec les macros: ANIM#FILMEXEC+ANIM#FILMGIF+ANIM#FILMPAW (n0 3+4); ANIM#FILMPAW fait appel a la fonction ``test.for'' (ecrit en Fortran) et ANIM#FILMGIF fait appel au script ``film.sh'' (ecrit en LINUX-bash)

  • FILM 7: Film ent.gif Ce film montre une troupe de cavaliers traversant le pont sur la Dordogne qui marque l'entree de Beaulieu-sur-Dordogne. C'est le premier des films qui essait de reproduire un decor ``realiste'' en ce sens qu'il utilise plusieurs motifs pour composer le decor (arbres, gabares, chapelle, pont, tourelles). Ce film a ete fabrique par ANIM#ENTREE2. Il comporte 400 images et fait 20MB. Sa realisation a pris 30mn pour la production des fichiers paw*.ps et 9mn pour la partie relative a ``convert''. La troupe de cavaliers est definie et traitee comme un ``super-motif''. Pour corriger l'impression de rigidite venant de ce deplacement en bloc on a introduit des petits mouvements (aleatoires) des cavaliers les uns par rapport aux autres. L'amplitude de ces mouvements est du meme ordre que l'avancee des cavaliers entre deux images successives.