From 8f4d2297bc7f06c11fc915caa41041ca2f4379c4 Mon Sep 17 00:00:00 2001 From: Jakob Odersky Date: Sun, 29 May 2011 21:54:08 +0000 Subject: Commit final apres avoir rendu le projet. --- JOURNAL.txt | 541 ++++++++++++++++++++++++++++++- NOMS | 2 + README.txt | 4 + REPONSES.pdf | Bin 0 -> 134310 bytes jean-daniel-g84.zip | Bin 0 -> 399116 bytes reponses.lyx | 899 ---------------------------------------------------- src/gui/Main.cc | 213 ------------- structure.lyx | 331 ------------------- structure.pdf | Bin 67225 -> 0 bytes 9 files changed, 538 insertions(+), 1452 deletions(-) create mode 100644 NOMS create mode 100644 REPONSES.pdf create mode 100644 jean-daniel-g84.zip delete mode 100644 reponses.lyx delete mode 100644 src/gui/Main.cc delete mode 100644 structure.lyx delete mode 100644 structure.pdf diff --git a/JOURNAL.txt b/JOURNAL.txt index 849d5b2..aa0f1f1 100644 --- a/JOURNAL.txt +++ b/JOURNAL.txt @@ -1,9 +1,532 @@ -[26/02/2011 jakob] Creation de la classe `Vector3', essais divers. -[01/03/2011] Discussion sur la structure du projet, conventions de style de code, mise en place d'un serveur SVN: https://svn.epfl.ch/svn/virtual-hadron-collider/. -[02/03/2011 jakob] Repondu a la premiere question. Amelioration de la classe `Vector3'. -[08/03/2011] Installation de linux et configuration de l'environement de developpement sur le portable de Christian. -[08/03/2011] Traduction des commentaires en francais. Desormais, tout identificateur restera en anglais mais tous les commentaires seront ecris en francais. -[10/03/2011 jakob] Definition de la classe particule. -[12/03/2011 jakob] Mise en place d'un systeme de makefiles recursifs. Le makefile principale appelle des makefiles dans les differents repertoires source. Voir document "structure.pdf" pour plus de detailles. -[13/03/2011 jakob] Creation d'un systeme de test automatise. Les fichiers test compiles sont executes par un script shell et leurs valeurs de retour indiquent leurs succes respectifs (0=PASSE). Ce script est aussi appele par make, via la commande `make test'. -[../03/2011 christian] Premiers widgets (boutons, fenêtres, curseurs) sous QT. +------------------------------------------------------------------------ +r1 | root | 2011-03-01 14:51:26 +0100 (Tue, 01 Mar 2011) | 1 line + +Initial structure +------------------------------------------------------------------------ +r2 | jnodersk | 2011-03-01 18:03:20 +0100 (Tue, 01 Mar 2011) | 1 line + +Initial import. +------------------------------------------------------------------------ +r3 | jnodersk | 2011-03-02 14:07:26 +0100 (Wed, 02 Mar 2011) | 1 line + +Created configuration file for doxygen `Doxyfile'. Modified Vector3.getUnit(), now throws exception when called on null vector. +------------------------------------------------------------------------ +r4 | jnodersk | 2011-03-02 14:12:20 +0100 (Wed, 02 Mar 2011) | 1 line + +Modified svn ignore property to ignore `doc' and `Debug' directories. +------------------------------------------------------------------------ +r5 | jnodersk | 2011-03-02 15:30:59 +0100 (Wed, 02 Mar 2011) | 1 line + +Added `reponses.lyx'. +------------------------------------------------------------------------ +r6 | jnodersk | 2011-03-02 15:53:18 +0100 (Wed, 02 Mar 2011) | 1 line + +Made Vector3 static variables Null, i, j, k constant. +------------------------------------------------------------------------ +r7 | jnodersk | 2011-03-02 15:55:03 +0100 (Wed, 02 Mar 2011) | 1 line + +Updated JOURNAL. +------------------------------------------------------------------------ +r8 | jnodersk | 2011-03-05 20:35:05 +0100 (Sat, 05 Mar 2011) | 1 line + +Renamed `Vector3' to `Vector3D'. +------------------------------------------------------------------------ +r9 | jnodersk | 2011-03-08 20:50:22 +0100 (Tue, 08 Mar 2011) | 1 line + +[FR] Traduit les commentaires en francais. Desormais tout commentaire sera ecrit en francais. +------------------------------------------------------------------------ +r10 | jnodersk | 2011-03-08 21:36:26 +0100 (Tue, 08 Mar 2011) | 1 line + +Corrige une erreur dans la methode `getUnit()' de `Vector3D'. +------------------------------------------------------------------------ +r11 | jnodersk | 2011-03-09 14:05:35 +0100 (Wed, 09 Mar 2011) | 1 line + +Ajout du fichier compile `REPONSES.pdf'. +------------------------------------------------------------------------ +r12 | jnodersk | 2011-03-09 14:20:04 +0100 (Wed, 09 Mar 2011) | 1 line + +Traduit le commentaire de `vhc.cc' en francais. +------------------------------------------------------------------------ +r13 | cdvazque | 2011-03-09 15:39:33 +0100 (Wed, 09 Mar 2011) | 1 line + +tests divers +------------------------------------------------------------------------ +r14 | jnodersk | 2011-03-09 15:50:19 +0100 (Wed, 09 Mar 2011) | 1 line + +blabla +------------------------------------------------------------------------ +r15 | jnodersk | 2011-03-09 15:51:21 +0100 (Wed, 09 Mar 2011) | 1 line + +supprime tests +------------------------------------------------------------------------ +r16 | jnodersk | 2011-03-11 13:42:06 +0100 (Fri, 11 Mar 2011) | 1 line + +Mise a jour de `Vector3D'. +------------------------------------------------------------------------ +r17 | jnodersk | 2011-03-11 21:13:06 +0100 (Fri, 11 Mar 2011) | 1 line + +Mise en place d'un systeme de Makefiles. Lancer `make all' _dans_le_repertoire_du_projet_ pour une compilation du projet. +------------------------------------------------------------------------ +r18 | jnodersk | 2011-03-12 12:20:07 +0100 (Sat, 12 Mar 2011) | 1 line + +Reorganisation du repertoire source. Les sources principaux sont dans `src/main' et les tests dans `src/test'. +------------------------------------------------------------------------ +r19 | jnodersk | 2011-03-12 12:24:05 +0100 (Sat, 12 Mar 2011) | 1 line + +suppression de residus de la reorganisation +------------------------------------------------------------------------ +r20 | jnodersk | 2011-03-12 14:04:12 +0100 (Sat, 12 Mar 2011) | 1 line + +Ajout des cibles make dans eclipse. Ajout d'une explication sur la structure du projet (structure.pdf). +------------------------------------------------------------------------ +r21 | jnodersk | 2011-03-13 15:25:15 +0100 (Sun, 13 Mar 2011) | 1 line + +Creation d'un systeme de test automatise. +------------------------------------------------------------------------ +r22 | jnodersk | 2011-03-13 15:28:03 +0100 (Sun, 13 Mar 2011) | 1 line + +Mise a jour de `structure.pdf' et du Makefile, doc et test ne sont plus inclus dans all. +------------------------------------------------------------------------ +r23 | jnodersk | 2011-03-13 16:34:13 +0100 (Sun, 13 Mar 2011) | 1 line + +Modification des makefiles. +------------------------------------------------------------------------ +r24 | jnodersk | 2011-03-16 16:22:22 +0100 (Wed, 16 Mar 2011) | 1 line + +ajout de printable +------------------------------------------------------------------------ +r25 | cdvazque | 2011-03-17 16:12:23 +0100 (Thu, 17 Mar 2011) | 1 line + +implémenté le produit mixte +------------------------------------------------------------------------ +r26 | jnodersk | 2011-03-17 22:54:24 +0100 (Thu, 17 Mar 2011) | 6 lines + +-creation d'un espace de nom contenant des constantes physiques +-changement du makefile des tests: les tests ne doivent plus etre manuellement ajoutes au makefile (a condition que le fichier s'appelle *Test.cc) +-completion de la classe particule, j'ai toujours des questions sur l'implementation de l'energie, il faudrait en parler prochainement +-repondu a la question 5.1 mais j'ai egalement des doutes +-completion de la classe element +-documentation divers +------------------------------------------------------------------------ +r27 | jnodersk | 2011-03-17 22:54:46 +0100 (Thu, 17 Mar 2011) | 6 lines + +-creation d'un espace de nom contenant des constantes physiques +-changement du makefile des tests: les tests ne doivent plus etre manuellement ajoutes au makefile (a condition que le fichier s'appelle *Test.cc) +-completion de la classe particule, j'ai toujours des questions sur l'implementation de l'energie, il faudrait en parler prochainement +-repondu a la question 5.1 mais j'ai egalement des doutes +-completion de la classe element +-documentation divers +------------------------------------------------------------------------ +r28 | cdvazque | 2011-03-19 10:48:08 +0100 (Sat, 19 Mar 2011) | 3 lines + +Implémenté une méthode rotation vectorielle, à optimiser. +Rajouté les accents dans les commentaires, mis à jour le journal. +Subsiste une erreur dans le fichier Particule.h. +------------------------------------------------------------------------ +r29 | cdvazque | 2011-03-22 07:43:46 +0100 (Tue, 22 Mar 2011) | 1 line + +Complété le fichier réponses, crée la classe courbe, modifié la fonction rotation vectorielle. +------------------------------------------------------------------------ +r30 | jnodersk | 2011-03-22 11:19:28 +0100 (Tue, 22 Mar 2011) | 1 line + +genere pdf reponses +------------------------------------------------------------------------ +r31 | jnodersk | 2011-03-22 14:39:41 +0100 (Tue, 22 Mar 2011) | 1 line + +resolu problemes avec veteurs +------------------------------------------------------------------------ +r32 | jnodersk | 2011-03-22 16:01:48 +0100 (Tue, 22 Mar 2011) | 1 line + +Ajoute elements courbes et droits. Leur implementation est en cours... +------------------------------------------------------------------------ +r33 | cdvazque | 2011-03-22 16:04:38 +0100 (Tue, 22 Mar 2011) | 1 line + +corrigé des réponses +------------------------------------------------------------------------ +r34 | jnodersk | 2011-03-22 22:06:08 +0100 (Tue, 22 Mar 2011) | 1 line + +Modifie quelques problemes avec les elements. Element droits sont implementes, elements courbes pas encore mais j'ai l'idee sur papier. +------------------------------------------------------------------------ +r35 | cdvazque | 2011-03-23 13:10:41 +0100 (Wed, 23 Mar 2011) | 1 line + + +------------------------------------------------------------------------ +r36 | cdvazque | 2011-03-23 13:12:05 +0100 (Wed, 23 Mar 2011) | 1 line + +Class Accelerator created. To be continued. +------------------------------------------------------------------------ +r37 | cdvazque | 2011-03-23 13:13:21 +0100 (Wed, 23 Mar 2011) | 1 line + +Completed file reponses.lyx +------------------------------------------------------------------------ +r38 | jnodersk | 2011-03-23 14:31:54 +0100 (Wed, 23 Mar 2011) | 1 line + +Implemente element courbe. Ajoute `virtual' a toutes les methodes virtuelles heritees. +------------------------------------------------------------------------ +r39 | jnodersk | 2011-03-23 15:32:56 +0100 (Wed, 23 Mar 2011) | 1 line + +Resolu probleme avec construction de Element. +------------------------------------------------------------------------ +r40 | jnodersk | 2011-03-23 15:46:29 +0100 (Wed, 23 Mar 2011) | 1 line + +Mofifie Straight et Curved en StraightElement et CurvedElement. +------------------------------------------------------------------------ +r41 | jnodersk | 2011-03-24 12:10:15 +0100 (Thu, 24 Mar 2011) | 1 line + +Creation de CompositeElement, une classe representant des elements composes. +------------------------------------------------------------------------ +r43 | jnodersk | 2011-03-24 20:29:58 +0100 (Thu, 24 Mar 2011) | 3 lines + +*Change `CompositeElement' en classe abstraite. +*Commentaires divers. +*Creation du repertoire src/gui pour tout code concernant l'interface graphique. +------------------------------------------------------------------------ +r44 | jnodersk | 2011-03-24 21:30:11 +0100 (Thu, 24 Mar 2011) | 1 line + +Implementation d'un "framework" d'exceptions, c.f. `exceptions.h'. +------------------------------------------------------------------------ +r45 | jnodersk | 2011-03-24 22:50:25 +0100 (Thu, 24 Mar 2011) | 3 lines + +*Implementation d'une methode d'affichage polymorphique d'elements. +*Suppression des methodes set dans elements. +*Mise en place d'un fichier test pour elements. +------------------------------------------------------------------------ +r46 | jnodersk | 2011-03-24 23:16:40 +0100 (Thu, 24 Mar 2011) | 1 line + +Defini element electrique. +------------------------------------------------------------------------ +r47 | jnodersk | 2011-03-24 23:18:55 +0100 (Thu, 24 Mar 2011) | 1 line + +Corrige erreurs dans ElectricElement (commit auparavant). +------------------------------------------------------------------------ +r48 | cdvazque | 2011-03-27 16:55:09 +0200 (Sun, 27 Mar 2011) | 5 lines + +Updated 'Reponses'. +New class Accelerator and related test file. +Updated makefile from ./main +few doxygen comments added + +------------------------------------------------------------------------ +r49 | jnodersk | 2011-03-28 19:36:20 +0200 (Mon, 28 Mar 2011) | 2 lines + +*Suppression de `MagneticElement' et `ElectricElement', les valeurs de B et E en fonction de la position sont definis dans `Element' et prennent comme valeur par defaut le vecteur nul. +*Creation du dipole. +------------------------------------------------------------------------ +r50 | jnodersk | 2011-03-28 19:39:39 +0200 (Mon, 28 Mar 2011) | 1 line + +Resolu quelques erreurs du dernier commit. +------------------------------------------------------------------------ +r51 | jnodersk | 2011-03-29 19:15:43 +0200 (Tue, 29 Mar 2011) | 1 line + +Implementation de quadripole et de maille FODO. +------------------------------------------------------------------------ +r52 | jnodersk | 2011-03-29 21:21:17 +0200 (Tue, 29 Mar 2011) | 1 line + +Modification de `ParticleTest'. +------------------------------------------------------------------------ +r53 | jnodersk | 2011-03-30 20:40:50 +0200 (Wed, 30 Mar 2011) | 1 line + +Essais avec OpenGL +------------------------------------------------------------------------ +r54 | jnodersk | 2011-03-31 16:55:08 +0200 (Thu, 31 Mar 2011) | 1 line + +Essais OpenGL +------------------------------------------------------------------------ +r55 | jnodersk | 2011-04-02 21:41:50 +0200 (Sat, 02 Apr 2011) | 1 line + +Implemente le `Visitor Pattern' pour les elements. +------------------------------------------------------------------------ +r56 | jnodersk | 2011-04-03 22:50:45 +0200 (Sun, 03 Apr 2011) | 1 line + +Essais graphiques, modifications du VisitorPattern. +------------------------------------------------------------------------ +r57 | jnodersk | 2011-04-05 00:13:09 +0200 (Tue, 05 Apr 2011) | 1 line + +Continuation de l'interface graphique, changements du visitor pattern. +------------------------------------------------------------------------ +r58 | jnodersk | 2011-04-05 21:02:15 +0200 (Tue, 05 Apr 2011) | 1 line + +foo +------------------------------------------------------------------------ +r59 | jnodersk | 2011-04-05 21:07:27 +0200 (Tue, 05 Apr 2011) | 1 line + + +------------------------------------------------------------------------ +r61 | jnodersk | 2011-04-06 15:07:59 +0200 (Wed, 06 Apr 2011) | 1 line + +Une camera qui fonctionne! +------------------------------------------------------------------------ +r62 | cdvazque | 2011-04-06 15:35:06 +0200 (Wed, 06 Apr 2011) | 2 lines + +répondu à des questions + +------------------------------------------------------------------------ +r63 | jnodersk | 2011-04-06 17:03:36 +0200 (Wed, 06 Apr 2011) | 1 line + +Amelioration de la camera, mise en scene de plusieurs elements. Debut d'implementation de la `vraie' classe de rendement graphique. +------------------------------------------------------------------------ +r64 | cdvazque | 2011-04-07 07:53:12 +0200 (Thu, 07 Apr 2011) | 1 line + +2 nouvelles méthodes add et killall +------------------------------------------------------------------------ +r65 | jnodersk | 2011-04-12 19:42:39 +0200 (Tue, 12 Apr 2011) | 1 line + +Debut de creation d'une classe scene pour la simulation graphique. +------------------------------------------------------------------------ +r66 | jnodersk | 2011-04-12 19:44:08 +0200 (Tue, 12 Apr 2011) | 1 line + +Modifictaion de svn:ignore dans gui +------------------------------------------------------------------------ +r67 | jnodersk | 2011-04-12 22:16:56 +0200 (Tue, 12 Apr 2011) | 1 line + +Changements mineures dans la classe 'Accelerator'. Je me suis permis de faire ces changemenets car j'ai besoin de l'accelerateur pour la simulation graphique. +------------------------------------------------------------------------ +r68 | jnodersk | 2011-04-12 23:07:01 +0200 (Tue, 12 Apr 2011) | 1 line + +Ajout de la methode 'copy()' pour chaque element. +------------------------------------------------------------------------ +r69 | jnodersk | 2011-04-12 23:31:48 +0200 (Tue, 12 Apr 2011) | 1 line + +Renomme la methode 'copy()' a 'clone()'. Cette methode est declaree dans une classe abstraite 'Cloneable' +------------------------------------------------------------------------ +r70 | jnodersk | 2011-04-13 00:09:47 +0200 (Wed, 13 Apr 2011) | 1 line + +Changements mineures de l'accelerateur. Les elements sont copies lors de leur ajout. +------------------------------------------------------------------------ +r71 | jnodersk | 2011-04-13 00:38:46 +0200 (Wed, 13 Apr 2011) | 1 line + +Unites convertis en unites SI pour l'utilisation interne. +------------------------------------------------------------------------ +r72 | jnodersk | 2011-04-13 02:10:05 +0200 (Wed, 13 Apr 2011) | 1 line + +Continuation de la classe Stage. On arrive maintenant a visualiser un accelerateur. +------------------------------------------------------------------------ +r73 | jnodersk | 2011-04-13 15:26:54 +0200 (Wed, 13 Apr 2011) | 1 line + +version amelioree de l'interface graphique +------------------------------------------------------------------------ +r74 | jnodersk | 2011-04-13 15:36:58 +0200 (Wed, 13 Apr 2011) | 1 line + +rajout de 'Cloneable', oublie auparavant +------------------------------------------------------------------------ +r75 | jnodersk | 2011-04-15 17:48:34 +0200 (Fri, 15 Apr 2011) | 1 line + +Resolu probleme avec rendement a l'envers d'elements courbes. Interface graphique amelioree. +------------------------------------------------------------------------ +r76 | jnodersk | 2011-04-16 18:12:04 +0200 (Sat, 16 Apr 2011) | 1 line + +Ajoute une classe abstraite 'Renderer' pour dessiner tout objet. Par consequent j'ai remarque une erreur de const-correctness dans le visitor pattern. J'ai donc modifie celui-ci, c'est a dire un visiteur ne peut pas changer un element (pas d'appel a des methodes non-const) ni etre change par un element. +------------------------------------------------------------------------ +r77 | jnodersk | 2011-04-16 22:10:52 +0200 (Sat, 16 Apr 2011) | 1 line + +Amelioration de l'interface grap graphique. +------------------------------------------------------------------------ +r78 | jnodersk | 2011-04-17 22:05:38 +0200 (Sun, 17 Apr 2011) | 1 line + +Migration de tous les implementations dans les fichier .h vers les fichiers .cc +------------------------------------------------------------------------ +r79 | jnodersk | 2011-04-17 22:24:32 +0200 (Sun, 17 Apr 2011) | 1 line + +Repare erreur commise dans Vector3D, dans la revision precedente. +------------------------------------------------------------------------ +r80 | jnodersk | 2011-04-17 22:51:10 +0200 (Sun, 17 Apr 2011) | 1 line + +Nettoyage dans gui. +------------------------------------------------------------------------ +r81 | jnodersk | 2011-04-18 01:03:45 +0200 (Mon, 18 Apr 2011) | 1 line + +Ajoute possibilite de simuler! +------------------------------------------------------------------------ +r82 | cdvazque | 2011-04-19 09:49:34 +0200 (Tue, 19 Apr 2011) | 1 line + +ajouté qq lignes de commentaire. +------------------------------------------------------------------------ +r83 | jnodersk | 2011-04-19 17:49:14 +0200 (Tue, 19 Apr 2011) | 1 line + +Resolution de quelques bugs mineures. +------------------------------------------------------------------------ +r84 | jnodersk | 2011-04-20 13:02:36 +0200 (Wed, 20 Apr 2011) | 1 line + +Reparation du quadrupole. +------------------------------------------------------------------------ +r85 | cdvazque | 2011-04-21 07:54:15 +0200 (Thu, 21 Apr 2011) | 3 lines + +Mis à jour AccelTest et toString de Accelerator. +Rjouté quelques commentaires (dans FODO). +Crée un fichier P10ExerciceTest. +------------------------------------------------------------------------ +r86 | jnodersk | 2011-04-24 15:31:11 +0200 (Sun, 24 Apr 2011) | 12 lines + +*Ajout d'un pointeur sur les element precedents. +*Implementation de la methode 'close()' dans l'accelerateur. +*Restructuration des methodes geometriques des elements. + -Ajout d'une methode isBefore(): determine si un point est contenu dans l'espace avant le plan de la face d'entree. + -Ajout d'une methode isBeside(): determine si un point est plus proche de la trajectoire ideal que le rayon de section. + -Ajout d'une methode isAfter(): determine si un point est contenu dans l'espace apres le plan de la face de sortie. + -Ajout d'une methode contains(): determine si un point est contenu dans l'element (contains = !(isBefore || isBeside || isAfter)) + -La methode isPast() (passe_au_suivant selon projet) a ete supprimee, elle est a remplacer par isAfter(). + -La methode hitWall() (heurte_bord selon projet) a ete supprimee, elle est a remplacer par isBeside(). +*Resolution d'un bug dans la methode isBeside() de StraightElement, avant une particule ne pouvait jamais heuter le bord! +*Ajout des cibles gui et gui-build dans eclipse. + +------------------------------------------------------------------------ +r87 | jnodersk | 2011-04-24 19:41:29 +0200 (Sun, 24 Apr 2011) | 1 line + +Modification de la mise en page de toString +------------------------------------------------------------------------ +r88 | jnodersk | 2011-04-24 19:42:21 +0200 (Sun, 24 Apr 2011) | 1 line + +Suppression du Makefile gui. On n'en a pas besoin car celui-ci est genere par qmake! +------------------------------------------------------------------------ +r89 | jnodersk | 2011-04-25 12:23:20 +0200 (Mon, 25 Apr 2011) | 1 line + +Resolu quelques warinings, ajout de l'accelerateur donne en exemple. +------------------------------------------------------------------------ +r90 | jnodersk | 2011-04-25 14:58:55 +0200 (Mon, 25 Apr 2011) | 2 lines + +*J'ai revu les 3 premier exercises du projet et modifie quelques reponses (jusqu'a P7.2 compris) et fichiers tests. +*Rajoute la classe MutableVector3D pour representer des vecteurs mutables. +------------------------------------------------------------------------ +r91 | jnodersk | 2011-05-01 16:07:41 +0200 (Sun, 01 May 2011) | 3 lines + +Changements importants dans l'accelerateur. Nous travaillons maintenant avec une list au lieu d'un vector. Ceci pour pouvoir supprimer une particule a temps constant qui aurait heurte le bord d'un element. On ne peut donc plus acceder a un element quelconque de la liste mais il faut l'iterer! +Mais comme, de toutes facons, on ne fait que d'iterer sur une liste lors d'une simulation deterministe ceci convient. Peut-etre il faudra adapter cette conception pour une simulation monte-carlo. + +------------------------------------------------------------------------ +r92 | jnodersk | 2011-05-03 15:50:04 +0200 (Tue, 03 May 2011) | 1 line + +Repare bug dans la fermeture de l'accelerateur. Ajout d'un test de performance de l'accelerateur. +------------------------------------------------------------------------ +r93 | cdvazque | 2011-05-03 17:37:07 +0200 (Tue, 03 May 2011) | 2 lines + +crée un nouveau dossier pour les exercices à rendre. +Il faudrait recréer un makefile dans ce dossier exercice. +------------------------------------------------------------------------ +r94 | cdvazque | 2011-05-04 16:05:32 +0200 (Wed, 04 May 2011) | 3 lines + +1)mis à jour le fichier acceltest +2)modifié la methode applyforce dans particle.h pas l'ajout d'un asin +3)déplacé le fichier exerciceP10 dans le dossier 'Test' +------------------------------------------------------------------------ +r95 | jnodersk | 2011-05-04 17:13:27 +0200 (Wed, 04 May 2011) | 1 line + +Migration de la gestion des evenements clavier de Stage a KeyManager +------------------------------------------------------------------------ +r96 | cdvazque | 2011-05-04 17:30:43 +0200 (Wed, 04 May 2011) | 3 lines + +1)créé le fichier ElementsSimulationTest +2)mis a jour acceltest +3)mis a jour exerciceP10test +------------------------------------------------------------------------ +r97 | cdvazque | 2011-05-11 14:05:20 +0200 (Wed, 11 May 2011) | 1 line + +modifié le test sur la simulation dans des éléments séparés. (test ne fonctionne pas) +------------------------------------------------------------------------ +r98 | jnodersk | 2011-05-11 16:59:00 +0200 (Wed, 11 May 2011) | 1 line + +Rajoute getHorizontalAt() pour tous les elements, en vue des faisceaux +------------------------------------------------------------------------ +r99 | cdvazque | 2011-05-13 16:26:30 +0200 (Fri, 13 May 2011) | 6 lines + +Créé: +exerciceP13 +Parser (.cc et .h) +exerciceP11test +Mis é jour: +elementsimulationtest +------------------------------------------------------------------------ +r100 | jnodersk | 2011-05-17 17:37:32 +0200 (Tue, 17 May 2011) | 1 line + +Implementation de faisceaux. +------------------------------------------------------------------------ +r101 | cdvazque | 2011-05-18 07:38:32 +0200 (Wed, 18 May 2011) | 1 line + +Crée la classe Parser et le fichier d'essai simulation.cc +------------------------------------------------------------------------ +r102 | jnodersk | 2011-05-19 10:33:16 +0200 (Thu, 19 May 2011) | 5 lines + +Migration des particules vers les faisceau. +Il reste une subtilite a gerer: pour des raisons de compatibilite, un accelerateur contient toujours une methode getParticles(). Celle-ci renvoi une concatenation de tous les particules de tous les faisceaux de l'accelerateur. +Or il y a un probleme d'allocation de la memoire avec cette methode (temporairement repare dans cette revision mais degeu!). Je vois deux solutions: +1) changer tous les test qui appellent la methode getParticles() +2) essayer de reparer le probleme d'allocation (difficile et je ne sais pas si c'est possible) +------------------------------------------------------------------------ +r103 | jnodersk | 2011-05-23 18:19:06 +0200 (Mon, 23 May 2011) | 1 line + +Ajout des bunchs :) +------------------------------------------------------------------------ +r104 | cdvazque | 2011-05-24 08:53:59 +0200 (Tue, 24 May 2011) | 10 lines + +1)mis à jour les test d'accélérateur et l'exercice P11 + +2)rajouté une exception 'ReadException' que j'ai dotée d'une méthode 'addReadExceptionMessage' car il y a un endroit (dans la classe parseur) où une telle exception déjà existante est récupérée, mais il faudrait juste rajouter une information supplémentaire avant de la relancer pour un traitment à une niveau plus haut. + +3)mis à jour ou créé simulation.cc simulation.xml et classe Parseur + +j'ai rempli le fichier simulation.xml sur la base de l'exerciceP11, mais cela ne comile certainement plus depuis l'ajout des faisceaux, donc c'est encore à voir. + +dans la classe parseur, reste encore à voir comment inclure les constantes car on va en avoir besoin, et aussi comment construire l'accélérateur renvoyé par la méthode 'extract' contenant les éléments et particules... +du reste la classe parseur est encore en plein chantier. +------------------------------------------------------------------------ +r105 | jnodersk | 2011-05-24 16:25:00 +0200 (Tue, 24 May 2011) | 1 line + +Ajoute un modele de publisher/subscriber en vue des interactions entre particules. +------------------------------------------------------------------------ +r106 | jnodersk | 2011-05-26 22:45:09 +0200 (Thu, 26 May 2011) | 3 lines + +*Creation des interacteurs, une maniere de gerer les interactions entre particules orientee evenement. +*Completion de commentaires de tous les fichiers de main +*Reponses aux questions +------------------------------------------------------------------------ +r107 | jnodersk | 2011-05-26 23:26:27 +0200 (Thu, 26 May 2011) | 2 lines + +*Repare le dernier commit (oops :@) +* Ajout d'encore plus de commentaires +------------------------------------------------------------------------ +r108 | cdvazque | 2011-05-27 19:14:52 +0200 (Fri, 27 May 2011) | 1 line + +Mis à jour la classe parceur et le fichier xml. +------------------------------------------------------------------------ +r109 | cdvazque | 2011-05-27 20:56:22 +0200 (Fri, 27 May 2011) | 1 line + +Créé la classe Color. A voir si on en fait hériter quelques classes filles de Printable (p.ex. les Particles) ... +------------------------------------------------------------------------ +r110 | cdvazque | 2011-05-27 21:10:46 +0200 (Fri, 27 May 2011) | 1 line + +Corrigé quelques erreurs. reste encore à voir comment initialiser dans le .cc les tableaux de taille fixe statiques du header...=( +------------------------------------------------------------------------ +r111 | cdvazque | 2011-05-28 17:13:39 +0200 (Sat, 28 May 2011) | 5 lines + +Mis à jour le parseur, et la fichier simulation.cc (renommé en simulation.cc et déplacé dans le dossier test). + +Modifié le fichier simulation.xml. + +La classe parseur ne compile pas ('undefined reference to'). Après consultation du forum, c'est peut-être un problème en rapport avec le makefile. +------------------------------------------------------------------------ +r112 | cdvazque | 2011-05-28 19:26:04 +0200 (Sat, 28 May 2011) | 3 lines + +Corrigé quelques erreurs du parser. déplacé 'simulation.xml' dans dossier 'test'. + +Créé le fichier 'simulationTest.cc' qui ne marche pas du tout. +------------------------------------------------------------------------ +r113 | cdvazque | 2011-05-29 12:56:33 +0200 (Sun, 29 May 2011) | 4 lines + +Mis à jour le parser. +Renommé et déplacé le fichier ParserTest.cc +Renommé et déplacé le fichier accelerator.xml + +------------------------------------------------------------------------ +r114 | cdvazque | 2011-05-29 13:23:10 +0200 (Sun, 29 May 2011) | 1 line + +Répondu aux questions p14.1 et p19.1 +------------------------------------------------------------------------ +r115 | jnodersk | 2011-05-29 22:09:19 +0200 (Sun, 29 May 2011) | 3 lines + +*Ajoute interactions avancees +*Ecrit conception +*Commentaires +------------------------------------------------------------------------ +r116 | jnodersk | 2011-05-29 23:33:34 +0200 (Sun, 29 May 2011) | 1 line + +Plein de commentaires derniere minute, creation de readme. +------------------------------------------------------------------------ diff --git a/NOMS b/NOMS new file mode 100644 index 0000000..b8bead5 --- /dev/null +++ b/NOMS @@ -0,0 +1,2 @@ +Odersky, Jakob, Physique +Vazquez, Christian, Physique diff --git a/README.txt b/README.txt index 2b22926..e7a8c46 100644 --- a/README.txt +++ b/README.txt @@ -32,8 +32,12 @@ Interface graphique: ======================== navigation: touches w,a,s,d pour bouger, souris pour changer tourner +clique gauche: capturer/lacher la souris + 1: vue pleine 2: vue grille 3: vue points 0: afficher points/spheres pour particules +REMARQUE: nous avons constate des problemes avec le rendement graphique en salles CO. Ses probleme ne se manifestent que sur les machines virtuelles. + diff --git a/REPONSES.pdf b/REPONSES.pdf new file mode 100644 index 0000000..0a7becb Binary files /dev/null and b/REPONSES.pdf differ diff --git a/jean-daniel-g84.zip b/jean-daniel-g84.zip new file mode 100644 index 0000000..4303f5d Binary files /dev/null and b/jean-daniel-g84.zip differ diff --git a/reponses.lyx b/reponses.lyx deleted file mode 100644 index c8d1fd7..0000000 --- a/reponses.lyx +++ /dev/null @@ -1,899 +0,0 @@ -#LyX 1.6.7 created this file. For more info see http://www.lyx.org/ -\lyxformat 345 -\begin_document -\begin_header -\textclass article -\begin_preamble -\usepackage{color} -\end_preamble -\use_default_options true -\language french -\inputencoding auto -\font_roman charter -\font_sans default -\font_typewriter cmtt -\font_default_family default -\font_sc false -\font_osf false -\font_sf_scale 100 -\font_tt_scale 100 - -\graphics default -\paperfontsize default -\spacing single -\use_hyperref false -\papersize default -\use_geometry true -\use_amsmath 1 -\use_esint 1 -\cite_engine basic -\use_bibtopic false -\paperorientation portrait -\leftmargin 2cm -\topmargin 2cm -\rightmargin 2cm -\bottommargin 2cm -\secnumdepth 3 -\tocdepth 3 -\paragraph_separation indent -\defskip medskip -\quotes_language english -\papercolumns 1 -\papersides 1 -\paperpagestyle default -\tracking_changes false -\output_changes false -\author "" -\author "" -\end_header - -\begin_body - -\begin_layout Title -Réponses aux questions -\end_layout - -\begin_layout Author -J. - Odersky -\begin_inset ERT -status collapsed - -\begin_layout Plain Layout - - -\backslash -and -\end_layout - -\end_inset - - C. - Vázquez -\end_layout - -\begin_layout Section* -Question P1.1 -\end_layout - -\begin_layout Standard -Un vecteur est représenté par la classe `Vector3D'. - Cette classe comprend trois champs privés du type double: x, y et z corresponda -nt aux composantes du vecteur. - Ces champs peuvent être accédés respectivement par les méthodes publiques - getX(), getY() et getZ(). - Les méthodes -\begin_inset Quotes eld -\end_inset - -opérateurs -\begin_inset Quotes erd -\end_inset - - sur les vecteurs (par exemple l'addition, la norme, etc...) sont toutes publiques. -\end_layout - -\begin_layout Standard -Ces méthodes s'appuient entre-elles, par exemple la méthode `opposée' retourne - le vecteur multiplié par moins un et la méthode `soustraction' additionne - l'opposé. - C'est à partir de cette idee que nous avons aussi implémenté une norme - au carré (=produit scalaire du vecteur avec lui-même) et une norm (=racine - de la norme au carré). - Ces appels consécutifs diminuent la performance d'une façon minimale mais - évitent un duplicage de code considérable. -\end_layout - -\begin_layout Standard -Un vecteur est complètement invariable. - C'est-à-dire qu'une fois un vecteur initialisé, on ne peut plus changer - ses composantes (pas de méthodes `set'). - De même, tous les opérations internes du sens mathématique (qui renvoyent - un vecteur), renvoyent une nouvelle instance d'un vecteur. - En aucun cas l'instance d'un vecteur n'est modifiée! Ceci facilite énormément - le raisonement sur toute variable de type vecteur, c'est-à-dire qu'on peut - toujours être sûr que personne n'a modifié le vecteur sur lequel on travaille. - De plus, l'invariance d'un vecteur paraît naturelle, comme celle d'un nombre - réel. -\end_layout - -\begin_layout Standard -Quelques vecteurs remarquables sont définis comme variables statiques constantes. - Parmi ceux-ci notamment le vecteur nulle (Null) et les vecteurs unitaires - i, j, k selon respectivement les axes x, y et z. -\end_layout - -\begin_layout Standard -Pour contourner la perte de performance due à l'immutabilité des vecteurs, - nous avons rajouté un classe `MutableVector3D'. - Cette classe représente des vecteurs mutables lesquelles peuvent changer - leurs coordonnées. - Ces vecteurs sont presque exclusivement utilisés pour représenter des champs - qui varient souvent tel que la position d'une particule. -\end_layout - -\begin_layout Section* -Question P3.1 -\end_layout - -\begin_layout Standard -Nous n'avons pas rajouté un constructeur de copie. - Comme la classe `Vector3D' est invariable et ne contient pas de pointeurs - ou références sur d'autres objets mutables, elle n'a pas d'état et donc - l'utilisation du constructeur de copie par défaut suffit. -\end_layout - -\begin_layout Standard -En revanche la classe `MutableVector3D' contient un constructeur de copie - qui copie les champs d'un vecteur donné. -\end_layout - -\begin_layout Section* -Question P3.2 -\end_layout - -\begin_layout Standard -Lorsque l'on décide d'implémenter le constructeur par défaut (qui crée un - vecteur nul) et le constructeur par coordonnés cartésiennes dans une seule - et même méthode, il se peut que lorsque l'on crée une nouvelle instance - de Vector3D sans l'initialiser (en laissant donc le soin au constructeur - par défaut de le faire), on se retrouve avec un vecteur nul à un endroit - où il vaudrait mieux ne pas en avoir. - Par conséquent, en séparant ces deux méthodes, le programmeur est amené - à penser dès l'instanciation à quelle fin il crée son objet. -\end_layout - -\begin_layout Section* -Question P3.3 -\end_layout - -\begin_layout Subsection* -a -\end_layout - -\begin_layout Standard -En ajoutant un constructeur par coordonnées sphériques, les attributs de - la classe ne devraient pas forcémant être changées. - Il serait toute à fait envisageable, de garder les coordonnées carthésiennes - comme attributs et de convertir les coordonnées sphériques avec le constructeur. - L'accès et la modification des coordonnées shpériques pourrait égelement - se faire par un méthode convertissant les deux types de coordonnées. -\end_layout - -\begin_layout Subsection* -b -\end_layout - -\begin_layout Standard -La surcharge serait une difficulté majeur pour créer un constructeur par - coordonnées sphériques. - Etant donné qu'un tel constructeur prendrait comme paramètres deux angles - et une longueur, représentés par trois doubles, il serait en conflit avec - le constructeur de coordonnées carthésiennes. - Il serait alors impossible d'avoir les deux constructeurs dans une classe. -\end_layout - -\begin_layout Standard -Néanmoins, une solution alternative serait d'implémenter une méthode statique - ( -\begin_inset Quotes eld -\end_inset - -factory method -\begin_inset Quotes erd -\end_inset - -) qui prendrait comme paramètres des coordonnées sphériques et qui renverait - un vecteur ayant des coordonnées carthésiennes équivalentes (par exemple - -\family typewriter -Vector3D Vector3D::fromSpherical(double phi, double theta, double r) -\family default -). -\end_layout - -\begin_layout Section* -Question P3.4 -\end_layout - -\begin_layout Standard -La méthode `affiche()' d'un vecteur a été implémenté sous forme de l'opérateur - `<<' de `std::ostream'. - La méthode `compare' est équivalent à l'opérateur `=='. -\end_layout - -\begin_layout Section* -Question P5.1 -\end_layout - -\begin_layout Standard -Les membres d'une particule représentant le facteur gamma -\begin_inset Formula $\gamma$ -\end_inset - - et l'énergie -\begin_inset Formula $E$ -\end_inset - - peuvent être implémentés soit sous forme d'attributs soit sous forme de - méthodes. - Il y a des avantages et inconvénients pour chaque forme. -\end_layout - -\begin_layout Standard -L'avantage d'un attribut est que son accès est très rapide et ne prend (presque) - pas de temps de calcul. - Par contre, si la valeur d'un attribut est relié logiquement à la valeur - d'un autre attribut et que ce dernier est modifié, il faudra manuellement - changer le premier. - Par exemple, le facteur gamma étant défini par: -\end_layout - -\begin_layout Standard -\begin_inset Formula \[ -\gamma=\frac{1}{\sqrt{1-\left(\frac{v}{c}\right)^{2}}}\] - -\end_inset - - -\end_layout - -\begin_layout Standard -si il est défini comme variable, il faudrait le mettre à jour à chaque fois - que la vitesse change. -\end_layout - -\begin_layout Standard -Contrairement à un attribut, une méthode est évaluée à chaque fois qu'on - l'appelle. - Ceci a l'avantage que si le résultat d'une méthode dépend d'une variable, - la variable pourra être modifiée sans autre considération. - Ainsi, si le facteur gamma est une méthode, une mise à jour de la vitesse - pourra être effectuée directement sans explicitement changer -\begin_inset Formula $\gamma$ -\end_inset - -. -\end_layout - -\begin_layout Standard -Dans le cas de notre projet, nous avons décidés d'implémenter l'énergie - sous forme de méthode et le facteur gamma sous forme d'attribut. - Ceci pour plusieurs raisons: -\end_layout - -\begin_layout Enumerate -Au cours de la simulation, le facteur gamma est accédé autant de fois que - la vitesse, il est donc plus rapide de n'evoluer une racine qu'une seule - fois pour un pas de temps. -\end_layout - -\begin_layout Enumerate -L'énergie est accédée beaucoup plus rarement que la vitesse mais dépend - quand même de cette dernière, ainsi nous avons décidé de l'implémenter - sous forme de méthode. -\end_layout - -\begin_layout Section* -Question P6.1 -\end_layout - -\begin_layout Standard -Pour représenter et organiser les éléments, nous avons créé une classe abtsraite - `Element'. - Celle-ci contient tous les attributs généraux d'un élément. - De plus, elle contient des méthodes virtuelles pures tels que la détermination - si une particule a heurté le bord ou est passé au suivant. -\end_layout - -\begin_layout Standard -Dans la hierarchie en dessous de `Element' se trouvent deux classes representant -s les élements droits et courbes. - Ceux-ci implémentent tout méthode relatif à la géométrie d'un élément (p.ex. - les méthodes mentionés ci-dessus). -\end_layout - -\begin_layout Standard -Finalement, en dessous de ces classes se trouvent les implémentations concrètes - telles que les quadripoles, dipoles, etc... -\end_layout - -\begin_layout Standard -Nous n'avons pas faits de classes séparés pour des élements générants un - champ électrique ou magnétique car nous considérons qu'un élément ne générant - pas de champ -\emph on -possède -\emph default - un champ nul. - (voir question P6.2) -\end_layout - -\begin_layout Section* -Question P6.2 -\end_layout - -\begin_layout Standard -Les champs magnétiques et électriques sont représentés par les méthodes - `magneticFieldAt' et `electricFieldAt'. - Ces méthodes prennent comme paramètre une position et renvoyent un vecteur - représentant le champ à cette position. -\end_layout - -\begin_layout Standard -Ceci représente concrètement les lignes de champs à un endroit donné. -\end_layout - -\begin_layout Standard -En effet, en physique on représente les lignes de champ par des lignes continues. - Or dans ce projet, cela ne nous intéresse pas de représenter ces lignes. - Puisque les seules interactions de ces champs avec les particules invoquent - des vecteurs représentant l'intensité et la direction du champ à l'endroit - où se trouve la particule par rapport à l' -\family typewriter -\size small -Element -\family default -\size default -, on n'a besoin que d'un -\family typewriter -\size small -Vector3D -\family default -\size default -. -\end_layout - -\begin_layout Section* -Question P6.3 -\end_layout - -\begin_layout Standard -Nous représentons le centre de courbure -\family typewriter -\size small -curvatureCenter -\family default -\size default - à l'aide d'un attribut du type -\family typewriter -\size small -Vector3D -\family default -\size default - que l'on instancie indirectement en fournissant la courbure -\family typewriter -\size small -k -\family default -\size default - au constructeur des éléments courbes. -\end_layout - -\begin_layout Standard -En effet, le centre de courbure d'une courbe est défini d'une manière unique - si nous avons : -\end_layout - -\begin_layout Itemize -une position d'entrée -\family typewriter -\size small -entry -\family default -\size default -; -\end_layout - -\begin_layout Itemize -une position de sortie -\family typewriter -\size small -exit -\family default -\size default -; -\end_layout - -\begin_layout Itemize -une courbure -\family typewriter -\size small - k -\family default -\size default - (donc un rayon de courbure -\family typewriter -\size small -curvatureRadius -\family default -\size default - ) avec son signe !; -\end_layout - -\begin_layout Itemize -une convention à l'aide de laquelle nous savons, en fonction du signe du - rayon, de quel côté de l'Element la courbe se courbe. -\begin_inset Foot -status open - -\begin_layout Plain Layout -Les éléments courbes auront de plus une courbure k, constante (l’inverse - du rayon de courbure), dont le signe indique le sens de courbure par rapport - à l’orientation donnée par l’opposé de l’axe vertical (noté - -\begin_inset Formula $\overrightarrow{\textrm{e}{}^{3}}$ -\end_inset - -) . -\end_layout - -\end_inset - - -\end_layout - -\begin_layout Section* -Question P6.4 -\end_layout - -\begin_layout Standard -Afin qu'une particule soit dans un et un seul -\family typewriter -\size small -Element -\family default -\size default - à la fois, nous avons décidé de rajouter un attribut privé (un pointeur) - à chaque particule, qui soit responsable de lui indiquer dans quel -\family typewriter -\size small -Element -\family default -\size default - elle se trouve. - Elle ne peut se retrouver dans deux -\family typewriter -\size small -Element -\family default -\size default -s. - C'est un moyen simple de coller une étiquette 'Où je suis ?' sur une particule, - et on pourra facilement vérifier qu'à chaque évolution du système, notre - particule ne soit que dans un et un seul -\family typewriter -\size small -Element -\family default -\size default - à la fois. - Cela modifie la classe -\family typewriter -\size small -Particule -\family default -\size default -. -\end_layout - -\begin_layout Section* -Question P7.1 -\end_layout - -\begin_layout Standard -La classe -\family typewriter -\size small -Accelerator -\family sans - -\family default -\size default -un accélerateur. - Elle contient une collection de particules et d'élements (en attributs). - De plus, nous avons décidé qu'un accélérateur sera entièrement responsable - de la gestion de ses particules et elements. - Cela implique que lors de l'ajout d'un de ces derniers, il sera copié. -\end_layout - -\begin_layout Standard -Cette copie entraîne d'eutres conséquences tel que le rajout d'un méthode - `clone' dans les éléments et particules. -\end_layout - -\begin_layout Section* -Question P7.2 -\end_layout - -\begin_layout Standard -Le constructeur de copie privé : il doit servir à empêcher tout appel au - constructeur de copie par défaut, puisqu'il ne fait rien, on ne pourra - simplement pas faire de copie d' -\family typewriter -\size small -Accelerator -\family default -\size default -, donc pas de passage par valeur. -\end_layout - -\begin_layout Standard -L'opérateur '=' : de même que pour le constructeur de copie, sa déclaration - en privé empêche la copie d'un accélérateur vers un autre. -\end_layout - -\begin_layout Standard -Ces restrictions sont présents pour éviter des problèmes de responsabilités - d'allocation et de délocation de mémoire (car un accélérateur contient - beaucoup de pointeurs d'éléments et de particules qui eux-mêmes pointent - vers des particules). - Mais aussi d'un point de vue logique: comment serait-ce physiquement possible - de copier un accélérateur dans un état donné avec tous ses particules? -\end_layout - -\begin_layout Section* -Question P8.1 -\end_layout - -\begin_layout Standard -En termes de POO, cela signifie que la méthode -\family typewriter -\size small -heurte_bord -\family default -\size default - (`isBeside' dans notre cas) est virtuelle (même virtuelle pure à l'intérieur - de la classe -\family typewriter -\size small -Element -\family default -\size default -). -\end_layout - -\begin_layout Section* -Question P8.2 -\end_layout - -\begin_layout Standard -Cela implique donc que la classe -\family typewriter -\size small -Element -\family default -\size default - est -\emph on -abstraite -\emph default -. -\end_layout - -\begin_layout Section* -Question P8.3 -\end_layout - -\begin_layout Standard -La méthode `dessine' est elle aussi virtuelle pure dans la classe dessinable. -\end_layout - -\begin_layout Section* -Question P9.1 -\end_layout - -\begin_layout Standard -FODO -\end_layout - -\begin_layout Section* -Question P10.1 -\end_layout - -\begin_layout Standard -Concernant les classes contenant des pointeurs, il s'agit de fixer une manière - de gérer les pointeurs, les montrer ou non. - Si on choisi de les montrer, alors il faut gérer les -\family typewriter -\size small -delete -\family default -\size default - en externe, et cela induit un plus grand risque d'erreurs, plus que si - on choisi la deuxième option. - Dans ce cas, on peut envisager d'écrire les -\family typewriter -\size small -new -\family default -\size default - et les -\family typewriter -\size small -delete -\family default -\size default - en interne, ce qui implique qu'on est tout seul à manipuler des pointeurs, - ce qui est plus élégant. -\end_layout - -\begin_layout Section* -Question P10.2 -\end_layout - -\begin_layout Standard -Dans le cadre de la programmation oritentée-objets, on créerait une classe - abstraite (p.ex. - -\begin_inset Quotes eld -\end_inset - -Dessinable -\begin_inset Quotes erd -\end_inset - -) contenant la methode dessine() virtuelle pure. - Tout objet dessinable hériterait ensuite de cette classe et implémenterait - la méthode. -\end_layout - -\begin_layout Section* -Question P10.3 -\end_layout - -\begin_layout Standard -La reponse à la dernière question n'implique pas de changement de notre - code car, depuis le début du projet, nous avons défini la classe -\begin_inset Quotes eld -\end_inset - -Printable -\begin_inset Quotes erd -\end_inset - - ( -\begin_inset Quotes eld -\end_inset - -Dessinable -\begin_inset Quotes erd -\end_inset - - ci-dessus) et tout nos objets dessinables (notamment l'accelerateur, les - particules et les elements) heritent de cette dernière et implémentent - la méthode virtuelle pure -\begin_inset Quotes eld -\end_inset - -print() -\begin_inset Quotes erd -\end_inset - - qui affiche l'objet. -\end_layout - -\begin_layout Section* -Question P10.4 -\end_layout - -\begin_layout Standard -Voir réponse à question P10.3. -\end_layout - -\begin_layout Section* -Question P12.1 -\end_layout - -\begin_layout Standard -Comme tous ces propriétés changent pendant l'evolution de la simulation, - nous les avons implémentés en tant que méthodes. -\end_layout - -\begin_layout Section* -Question P14.1 -\end_layout - -\begin_layout Standard -Nous avons créé une classe Color qui implémente les couleurs données en - exemple. - Elle est en outre dotée de quelques méthodes pratiques (voir dans doxygen). -\end_layout - -\begin_layout Section* -Question P15.1 -\end_layout - -\begin_layout Standard -Il faut comparer chaque particule a chaque autre. - Avec n particules il faut donc faire n tests. - La complexite est donc de -\begin_inset Formula $O(n^{2})$ -\end_inset - - -\end_layout - -\begin_layout Section* -Question P16.1 -\end_layout - -\begin_layout Standard -Au pire des cas, si tous les particules se retrouvent dans une case, la - complexites est de -\begin_inset Formula $O(n^{2})$ -\end_inset - -. -\end_layout - -\begin_layout Section* -Question P16.2 -\end_layout - -\begin_layout Standard -Nous n'avons pas implémentés cette méthode mais une autre, voir la doc (SAPInter -actor.h). -\end_layout - -\begin_layout Section* -Question P17.1 -\end_layout - -\begin_layout Standard -Comme avant, au pire des cas la complexite est de -\begin_inset Formula $O(n^{2})$ -\end_inset - -. - En moyenne elle serait de -\begin_inset Formula $O(n\: log\: n)$ -\end_inset - -. -\end_layout - -\begin_layout Section* -Question P19.1 -\end_layout - -\begin_layout Standard -Voici l'ensemble de balises (ouvrantes) que nous utilisons (dans l'ordre - d'apparition dans le fichier -\begin_inset Quotes eld -\end_inset - -accelerator.xml -\begin_inset Quotes erd -\end_inset - -) : -\end_layout - -\begin_layout Itemize - -\end_layout - -\begin_layout Itemize - -\end_layout - -\begin_layout Itemize - -\end_layout - -\begin_layout Itemize - -\end_layout - -\begin_layout Itemize - -\end_layout - -\begin_layout Itemize - -\end_layout - -\begin_layout Itemize - -\end_layout - -\begin_layout Itemize - -\end_layout - -\begin_layout Itemize - -\end_layout - -\begin_layout Itemize - -\end_layout - -\begin_layout Itemize - -\end_layout - -\begin_layout Itemize - -\end_layout - -\begin_layout Itemize - -\end_layout - -\begin_layout Itemize - -\end_layout - -\begin_layout Itemize - -\end_layout - -\begin_layout Itemize - -\end_layout - -\begin_layout Itemize - -\end_layout - -\begin_layout Itemize - -\end_layout - -\begin_layout Itemize - -\end_layout - -\begin_layout Standard -Voici les balises pour les commentaires : -\end_layout - -\begin_layout Itemize - -\end_layout - -\begin_layout Standard -Il n'y a donc pas de balises pour les constantes, car elles font partie - d'un namespace commun au projet. - Par ailleurs, l'aspect graphique de projet est séparé du reste du projet, - ce qui explique qu'il n'y ait pas de balise de type ou . -\end_layout - -\begin_layout Section* -Question P19.2 -\end_layout - -\begin_layout Standard -Comme il s'agit d'une méthode de fabrication qui n'a pour bute de créer - un accélérateur, la méthode prendrait en string le nom d'un fichier contenant - la description xml du systeme et renverrait un pointeur sur un accélérateur - aloué dynamiquement. -\end_layout - -\end_body -\end_document diff --git a/src/gui/Main.cc b/src/gui/Main.cc deleted file mode 100644 index b480830..0000000 --- a/src/gui/Main.cc +++ /dev/null @@ -1,213 +0,0 @@ -/* - * Main.cc - * - * Created on: Mar 24, 2011 - * Author: jakob - */ - -#include -#include -#include -#include -#include "exceptions.h" -#include "Stage.h" -#include "Accelerator.h" -#include "StraightElement.h" -#include "Dipole.h" -#include "Particle.h" -//#include "FODO.h" -#include "Quadrupole.h" -#include "Element.h" -#include "Vector3D.h" -#include "constants.h" -#include -#include "CircularBeam.h" -#include "Bunch.h" -#include "events.h" -#include "SAPInteractor.h" - -using namespace std; -using namespace vhc; - -std::vector< Particle > createParticles(const Vector3D& position, int n, double mass = constants::PROTON_MASS, double charge = constants::E, double energy = 2E9 * constants::E, Vector3D direction = -Vector3D::j) { - std::vector< Particle > v; - - double r = 0.1; - - for (int i = 0; i < n; ++i) { - double x = (rand() % 1000) / 1000.0 * r; - double y = (rand() % 1000) / 1000.0 * sqrt(r * r - x * x); - double z = (rand() % 1000) / 1000.0 * sqrt(r * r - y * y - x * x); - v.push_back(Particle(position + Vector3D(x, y, z), mass, charge, energy, direction)); - } - - return v; -} - -Element** FODO(Vector3D entry, Vector3D exit, double Rs, double L, double b) { - double l = (entry - exit).norm() / 2.0 - 1; - Vector3D d = (exit - entry).unit(); - Quadrupole* fq = new Quadrupole(entry, entry + d * l, Rs, b); - StraightElement* s1 = new StraightElement(fq->getExitPosition(), fq->getExitPosition() + d * L, Rs); - Quadrupole* dq = new Quadrupole(s1->getExitPosition(), s1->getExitPosition() + d * l, Rs, -b); - StraightElement* s2 = new StraightElement(dq->getExitPosition(), exit, Rs); - Element** fodo = new Element*[4]; - (fodo)[0] = fq; - (fodo)[1] = s1; - (fodo)[2] = dq; - (fodo)[3] = s2; - - return fodo; -} - -class Foo: public Listener, public Listener { -public: - virtual void react(const ParticleAddedEvent& event) { - cout << "+ Particle added!\n"; - } - - virtual void react(const ParticleRemovedEvent& event) { - cout << "- Particle removed!\n"; - } - -}; - -Accelerator* standard() { -/* - * L'accélérateur est constitué des 20 éléments suivants : -Quadrupole : in = (3, 2, 0) ; out = (3, 1, 0) ; Re = 0.1 ; b = 1.2 -Section droite : in = (3, 1, 0) ; out = (3, 0, 0) ; Re = 0.1 -Quadrupole : in = (3, 0, 0) ; out = (3, -1, 0) ; Re = 0.1 ; b = -1.2 -Section droite : in = (3, -1, 0) ; out = (3, -2, 0) ; Re = 0.1 -Dipole : in = (3, -2, 0) ; out = (2, -3, 0) ; Re = 0.1 ; Rc = 1 ; Cc = (2, -2, 0) ; B=(0, 0, 5.89158) -Quadrupole : in = (2, -3, 0) ; out = (1, -3, 0) ; Re = 0.1 ; b = 1.2 -Section droite : in = (1, -3, 0) ; out = (0, -3, 0) ; Re = 0.1 -Quadrupole : in = (0, -3, 0) ; out = (-1, -3, 0) ; Re = 0.1 ; b = -1.2 -Section droite : in = (-1, -3, 0) ; out = (-2, -3, 0) ; Re = 0.1 -Dipole : in = (-2, -3, 0) ; out = (-3, -2, 0) ; Re = 0.1 ; Rc = 1 ; Cc = (-2, -2, 0) ; B=(0, 0, 5.89158) -Quadrupole : in = (-3, -2, 0) ; out = (-3, -1, 0) ; Re = 0.1 ; b = 1.2 -Section droite : in = (-3, -1, 0) ; out = (-3, 0, 0) ; Re = 0.1 -Quadrupole : in = (-3, 0, 0) ; out = (-3, 1, 0) ; Re = 0.1 ; b = -1.2 -Section droite : in = (-3, 1, 0) ; out = (-3, 2, 0) ; Re = 0.1 -Dipole : in = (-3, 2, 0) ; out = (-2, 3, 0) ; Re = 0.1 ; Rc = 1 ; Cc = (-2, 2, 0) ; B=(0, 0, 5.89158) -Quadrupole : in = (-2, 3, 0) ; out = (-1, 3, 0) ; Re = 0.1 ; b = 1.2 -Section droite : in = (-1, 3, 0) ; out = (0, 3, 0) ; Re = 0.1 -Quadrupole : in = (0, 3, 0) ; out = (1, 3, 0) ; Re = 0.1 ; b = -1.2 -Section droite : in = (1, 3, 0) ; out = (2, 3, 0) ; Re = 0.1 -Dipole : in = (2, 3, 0) ; out = (3, 2, 0) ; Re = 0.1 ; Rc = 1 ; Cc = (2, 2, 0) ; B=(0, 0, 5.89158) - * - * - *L'accélérateur contient les 2 particules suivantes : -Une particule : - position : (3.01, 0, 0) - vitesse : (0, -2.64754e+08, 0) - gamma : 2.13158 - energie (GeV) : 2 - masse (GeV/c^2) : 0.938272 - charge : 1.60217653e-19 - force : ( 0 ; 0 ; 0 ) - -Une particule : - position : (2.99, 0, 0) - vitesse : (0, -2.64754e+08, 0) - gamma : 2.13158 - energie (GeV) : 2 - masse (GeV/c^2) : 0.938272 - charge : 1.60217653e-19 - force : ( 0 ; 0 ; 0 ) - * - */ - - double B = 5.8915820038873; - double b = 1.2; - Element** e1 = FODO(Vector3D(3, 2, 0), Vector3D(3, -2, 0), 0.1, 1.0, b); - - //FODO e1 = FODO(Vector3D(3, 2, 0), Vector3D(3, -2, 0), 0.1, 1.0, b); - Dipole e2 = Dipole(Vector3D(3, -2, 0), Vector3D(2, -3, 0), 0.1, 1, Vector3D(0, 0, B)); - - Element** e3 = FODO(e2.getExitPosition(), Vector3D(-2, -3, 0), 0.1, 1, b); - Dipole e4 = Dipole(Vector3D(-2, -3, 0), Vector3D(-3, -2, 0), 0.1, 1, Vector3D(0, 0, B)); - Element** e5 = FODO(e4.getExitPosition(), Vector3D(-3, 2, 0), 0.1, 1.0, b); - Dipole e6 = Dipole(Vector3D(-3, 2, 0), Vector3D(-2, 3, 0), 0.1, 1, Vector3D(0, 0, B)); - Element** e7 = FODO(e6.getExitPosition(), Vector3D(2, 3, 0), 0.1, 1.0, b); - Dipole e8 = Dipole(Vector3D(2, 3, 0), Vector3D(3, 2, 0), 0.1, 1, Vector3D(0, 0, B)); - Accelerator* acc = new Accelerator(new SAPInteractor); - //acc->add(e1); - for (int i = 0; i < 4; ++i) acc->add(e1[i][0]); - acc->add(e2); - for (int i = 0; i < 4; ++i) acc->add(e3[i][0]); - //acc->add(e3); - acc->add(e4); - for (int i = 0; i < 4; ++i) acc->add(e5[i][0]); - //acc->add(e5); - acc->add(e6); - for (int i = 0; i < 4; ++i) acc->add(e7[i][0]); - //acc->add(e7); - acc->add(e8); - - - //proton - Particle p1 = Particle(Vector3D(3.01, 0, 0), constants::PROTON_MASS, constants::E, 2 * constants::GeV, -Vector3D::j); - Particle p2 = Particle(Vector3D(2.99, 0, 0), constants::PROTON_MASS, constants::E, 2 * constants::GeV, -Vector3D::j); - acc->add(p1); - acc->add(p2); - - //anti-proton - Particle ap1 = Particle(Vector3D(3.01, 0, 0), constants::PROTON_MASS, -constants::E, 2 * constants::GeV, Vector3D::j); - Particle ap2 = Particle(Vector3D(2.99, 0, 0), constants::PROTON_MASS, -constants::E, 2 * constants::GeV, Vector3D::j); - acc->add(ap1); - acc->add(ap2); - - acc->add(CircularBeam(p1, 20, 1)); - - double emittance = 5E-6; //m - double A_12 = 0.02; //1/m - double A_22 = 4;//E-19; // s² m-1 (dépend totalement de l'accélérateur) - double length = 300E-12 * constants::C; - double stdDev = 0.1; - acc->add(Bunch(p1, 5, 1, stdDev, length, emittance, A_12, A_22)); - - Foo* foo = new Foo; - Bunch& bch = (Bunch&) acc->add(Bunch(ap1, 5, 1, stdDev, length, emittance, A_12, A_22)); - //bch.Publisher::subscribe(foo); - //bch.Publisher::subscribe(foo); - - - acc->close(); - - /*std::vector< Particle > ps = createParticles(e1.getEntryPosition(), 1000); - - for (int i = 0; i < ps.size(); ++i) { - acc->add(ps[i]); - }*/ - - - return acc; -} - -int main(int argc, char *argv[]) -{ - try { - - QApplication app(argc, argv); - - vhc::Stage window; - Accelerator* acc = standard(); - window.setAccelerator(acc); - - window.setWindowTitle("Virtual Hadron Collider"); - window.resize(QSize(500, 500)); - window.show(); - - - // window.showFullScreen(); - - //app.setActiveWindow(&window); - return app.exec(); - - } catch (Exception& ex){ - std::cerr << ex.toString() << "\n"; - } -} - - diff --git a/structure.lyx b/structure.lyx deleted file mode 100644 index 8f136ed..0000000 --- a/structure.lyx +++ /dev/null @@ -1,331 +0,0 @@ -#LyX 1.6.7 created this file. For more info see http://www.lyx.org/ -\lyxformat 345 -\begin_document -\begin_header -\textclass article -\use_default_options true -\language english -\inputencoding auto -\font_roman default -\font_sans default -\font_typewriter courier -\font_default_family default -\font_sc false -\font_osf false -\font_sf_scale 100 -\font_tt_scale 100 - -\graphics default -\paperfontsize default -\spacing single -\use_hyperref false -\papersize default -\use_geometry false -\use_amsmath 1 -\use_esint 1 -\cite_engine basic -\use_bibtopic false -\paperorientation portrait -\secnumdepth 3 -\tocdepth 3 -\paragraph_separation indent -\defskip medskip -\quotes_language english -\papercolumns 1 -\papersides 1 -\paperpagestyle default -\tracking_changes false -\output_changes false -\author "" -\author "" -\end_header - -\begin_body - -\begin_layout Title -Structure du projet et makefiles -\end_layout - -\begin_layout Part* -Structure -\end_layout - -\begin_layout Standard -Le dosier du projet, nommé `vhc' (pour `Virtual Hadron Collider'), est structuré - de la manière suivante: -\end_layout - -\begin_layout Standard -\begin_inset listings -lstparams "basicstyle={\ttfamily}" -inline false -status open - -\begin_layout Plain Layout - -vhc -\end_layout - -\begin_layout Plain Layout - -|-- bin -\end_layout - -\begin_layout Plain Layout - -| |-- main -\end_layout - -\begin_layout Plain Layout - -| `-- test -\end_layout - -\begin_layout Plain Layout - -|-- doc -\end_layout - -\begin_layout Plain Layout - -|-- Doxyfile -\end_layout - -\begin_layout Plain Layout - -|-- JOURNAL.txt -\end_layout - -\begin_layout Plain Layout - -|-- Makefile -\end_layout - -\begin_layout Plain Layout - -|-- reponses.lyx -\end_layout - -\begin_layout Plain Layout - -|-- REPONSES.pdf -\end_layout - -\begin_layout Plain Layout - -`-- src -\end_layout - -\begin_layout Plain Layout - - |-- main -\end_layout - -\begin_layout Plain Layout - - `-- test -\end_layout - -\end_inset - - -\end_layout - -\begin_layout Section* -vhc -\end_layout - -\begin_layout Standard -Le répertoire principale (dit `de base') du projet est est `vhc'. - Dans celui-ci se trouvent les fichiers expliqués dans la description officielle - du projet. - Notamment: -\end_layout - -\begin_layout Itemize -JOURNAL -\end_layout - -\begin_layout Itemize -REPONSES -\end_layout - -\begin_layout Itemize -README -\end_layout - -\begin_layout Itemize -Makefile -\end_layout - -\begin_layout Standard -Il contient de plus le fichier `Doxyfile' utilisé pour générer de la documentati -on du code source. -\end_layout - -\begin_layout Section* -src -\end_layout - -\begin_layout Standard -Ce répertoire contient tout le code source, donc les fichiers les plus important -s du projet! Le code source est lui-meme reparti dans les sous-répertoires - suivantes: -\end_layout - -\begin_layout Itemize -main -\begin_inset Newline newline -\end_inset - -Contient le code source principale, c'est à dire tout les fichiers sources - du simulateur. -\begin_inset Newline newline -\end_inset - -Exemples: Vector3D.cc, Vector3D.h, Particle.cc, etc... -\end_layout - -\begin_layout Itemize -test -\begin_inset Newline newline -\end_inset - -Contient le code source des tests. - Les fichiers tests contenant une fonction `main' devraient se terminer - avec `Test'. -\begin_inset Newline newline -\end_inset - -Exemples: Vector3DTest.cc, etc... -\end_layout - -\begin_layout Section* -doc -\end_layout - -\begin_layout Standard -Contient de la documentation générée automatiquement par un outil comme - `doxygen'. -\end_layout - -\begin_layout Standard -Remarque: n'est pas sous contrôle de version. -\end_layout - -\begin_layout Section* -bin -\end_layout - -\begin_layout Standard -Contient les fichiers binaires (i.e. - executables, objets, librairies etc...) compilés du code source. - La structure de ce répertoire est identique a celle de `src', c'est-à-dire - que les tests seront compilés dans `bin/test/' et les sources principaux - dans `bin/main/'. -\end_layout - -\begin_layout Standard -Remarque: n'est pas sous contrôle de version. -\end_layout - -\begin_layout Part* -Makefiles -\end_layout - -\begin_layout Standard -Afin d'automatiser le processus de compilation, un Makefile est présent - dans le répertoire de base. - A cause de la compléxité du répertoire source, le Makefile est récursif. - Cela signifie que ce Makefile ne fait que de déléguer les commandes à deux - makefiles contenus dans les répertoires src/main et src/test. - Ainsi, lorsqu'on ajoute/supprime des fichiers des répertoires précédents, - il suffit de modifier le Makefile contenu dans le répertoire respectif. - En général, il ne faut pas modifer le Makefile de base. -\end_layout - -\begin_layout Standard -Pour plus d'informations voir les commantaires des Makefiles. -\end_layout - -\begin_layout Section* -Commandes -\end_layout - -\begin_layout Standard -Voici quelques commandes pour le Makefile principal. -\end_layout - -\begin_layout Itemize -build -\begin_inset Newline newline -\end_inset - -compile les sources principaux -\end_layout - -\begin_layout Itemize -test-build -\begin_inset Newline newline -\end_inset - -compile les tests -\end_layout - -\begin_layout Itemize -all -\begin_inset Newline newline -\end_inset - -lance un build, test-build -\end_layout - -\begin_layout Itemize -doc -\begin_inset Newline newline -\end_inset - -génère la documentation -\end_layout - -\begin_layout Itemize -clean -\begin_inset Newline newline -\end_inset - -supprime le répertoire bin pour une compilation -\begin_inset Quotes eld -\end_inset - -propre -\begin_inset Quotes erd -\end_inset - - -\end_layout - -\begin_layout Itemize -test -\begin_inset Newline newline -\end_inset - -lance tous les tests -\end_layout - -\begin_layout Section* -Compilation -\end_layout - -\begin_layout Itemize -Les fichiers source principaux sont compilés et regroupés dans une librairie - statique. - Cette libraire s'appelle `libvhc.a'. -\end_layout - -\begin_layout Itemize -Les tests sont compilés en éxécutables et reliés (linked) avec la librairie - statique `libvhc.a' -\end_layout - -\end_body -\end_document diff --git a/structure.pdf b/structure.pdf deleted file mode 100644 index bb44c39..0000000 Binary files a/structure.pdf and /dev/null differ -- cgit v1.2.3