diff --git a/doc/JOURNAL.txt b/doc/JOURNAL.txt index 82634f3..6c5db62 100644 --- a/doc/JOURNAL.txt +++ b/doc/JOURNAL.txt @@ -1,127 +1,137 @@ # PROGRESSION Format : [fait/� faire] TACHE Dur�e (en minutes; remplacer les ??) Vous pouvez ajouter vos propres t�ches si vous le jugez utile (p.ex. d�composition plus fine). [V] cr�er le JOURNAL 1 [V] lire compl�tement le descriptif g�n�ral ?? [V] s'inscrire en bin�me ?? -[ ] fusionner les deux projets (y compris les fichiers JOURNAL) ?? +[V] fusionner les deux projets (y compris les fichiers JOURNAL) ?? [V] Makefile ?? [V] Vecteur finie (pleinement op�rationnelle et test�e) ?? [V] fichier REPONSES ?? [ ] Oscillateur ?? [ ] int�grateur d'Euler-Cromer ?? [ ] Pendule ?? [ ] Ressort ?? [ ] Systeme ?? [ ] exerciceP10 ?? [ ] graphisme: cadre g�n�ral ?? [ ] graphisme: Pendule ?? [ ] OscillateurCouple ?? [ ] PenduleDouble ?? [ ] espace des phases ?? [ ] integrateur Newmark ?? [ ] fichier CONCEPTION ?? [ ] fichier README ?? [ ] fichier NOMS ?? ====================================================================== # A FAIRE (PROCHAINE ETAPE) Mettez ici ce que vous pensez devoir �tre la ou les 2 prochaines �tapes pour chacun. Par exemple : ATTENTION COMMENTER TOUJOURS SON PROPRE CODE Raffaele: Cr�er "class template Vector<size_t N>". D�bugger fonction copy/operator =. Armando: D�bugger le constructeur de copie. Controller fonction unit(). Mettre � jour JOURNAL.txt � fin de semaine. ====================================================================== # SUIVI ## Semaine 1 : Pris connaissance du projet, lu les documents d'information, pris connaissance des utils mat�matiques et num�riques n�cessaire pour l'implementation du projet ## Semaine 2 : Set up des r�pertoir: un r�pertoir commun pour le projet et deux autres pour le travail individuel. Creation et administration d'un milieu de travail appropri�. Creation d'un fichier CMake, pour le crossplatforming (fonctionnant sur Linux et Windows) dynamique permettant d'implemnter dynamiquements les diff�rentes composantes du projet. (Il sera complet� vers la fin du projet). Creation d'une classe Vector et test li�es. Debug de la classe Vector. Reponse aux questions de la semaine 2. -------------------------------------------------- ## Semaine 3 : Set up de Qt creator sur les deux machines (laptop personnels). Cr�ation d'un fichier ".pro" pour la compilation du projet. Prise connaissance de l'interface de Qt. Suivi tutoriel fourni par le cours sur Qt et OpenGl. -Cr�e prototype de classe: +Cr�� prototype de classe: -SVector(Vecteurs statiques(ex. positions force et acc�leration)) -Camera -Matpoint -Particle -Partsystem -Scene -Shape -------------------------------------------------- ## Semaine 4 : - +Implementation des classes: + -SVector + -Matpoint + -Particle + -Partsystem + -Scene + -Shape +S�rie li�e au projet: +Cr�ation de classe g�nerale "Oscillateur" et test li�s avec creation de classe h�r�ditaire +Mise � jour du fichier REPONSES.txt +Debug general des implementations graphiques. -------------------------------------------------- ## Semaine 5 : -------------------------------------------------- ## Semaine 6 : -------------------------------------------------- ## Semaine 7 : -------------------------------------------------- ## Semaine 8 : -------------------------------------------------- ## Semaine 9 : -------------------------------------------------- ## Semaine 10 : -------------------------------------------------- ## Semaine 11 : -------------------------------------------------- ## Semaine 12 : -------------------------------------------------- ## Semaine 13 : diff --git a/doc/REPONSES.txt b/doc/REPONSES.txt index 1407e08..58afec0 100644 --- a/doc/REPONSES.txt +++ b/doc/REPONSES.txt @@ -1,57 +1,90 @@ Ce Document sert pour r�pondre aux questions pos�es dans les diff�rentes s�ries li�es au projet -S�rie Semaine 1 +#S�rie Semaine 1 [Question P1.1] Comment repr�sentez-vous ces vecteurs ? Comment sont-ils organis�s : quels attributs ? quelles m�thodes ? quels droits d'acc�s ? Nous repr�sentons ces vecteurs sous forme de vectors dinamiques, ayant comme dimension de default 3, car on travaillera souvent avec des vecteurs de dimension trois: ex. vecteurs position, force, acc�leration etc. L'aspect dynamique des vectors nous permettrera de pouvoir mod�liser de fa�on plus libre ces vecteurs, pour les transformer par exemple en listes de param�tre qui pourraient �tre utiles comme entr�e de fonctions avanc�es pour l'integrations num�rique des �quations du mouvement, aspect fondamentale pour notre projet. -En attribut nous avons choisi un vector, lequel contiendra les coordonn�es du vecteur de la classe "Vector". +En attribut nous avons choisi un "vector<double> components", lequel contiendra les coordonn�es du vecteur de la classe "Vector". On a choisi d'utiliser un vector pour pouvoir exploiter de nombreuse fonctions d�j� existant dans la librairie corr�espondante, en les implementant pour notre classe (Voir par exemple la fonction Vector::size()). Ainsi faisant, nous pouvont rendre la classe plus dynamique et modulable. On a comme m�thodes: -Deux constructeurs et un destructeur nous facilitant les taches de cr�ation et d�struction d'un vecteur. +Trois constructeurs et un destructeur nous facilitant les taches de cr�ation et d�struction d'un vecteur. + Un constructeur par defaut qu'initialise le vecteur � une dimension de defaut identique pour chaque instance de la classe. + Un constructeur prenant en argument une liste de double et l'affectant au vecteur "components". + Un constructeur prenant en argument un vector de double et l'affectant au vecteur "components". + Des iterateurs, pour it�rer dans les coordonn�es des vecteurs. Une fonction Vectot::unit(), retournant un vecteur unitaire de m�me direction du vecteur d'int�r�t. tr�s util pour la construction des �quations de Newton. Trois Manipulateurs: La fonction Vector::augmente(), permettant d'ajouter une dimension et la coordonn�e corr�spondante au vecteur. La fonction Vector::clear(), nous permettant de vider le vecteur et le faire retourner � dimension 0. Ce manipulateur est utilis� par la suite, par l'operator "=" pour vider le vecteur dans lequel on veut copier l'autre avant de l'affecter. Plusieurs accesseurs dont: La fonction Vector::size(), qui permet d'utiliser la fonction size() d�ja presente dans la librairie <vector>, mais sur notre classe "Vector". Les fonctions Vector::module() et Vector::sq:module(), retournant respectivement le module et le carr� du module du vecteur. Plusieurs operators implement�s pour faciliter les operations � faire sur les vecteurs: Operator +, +=, - et -= pour la somme des vecteurs. Operator *, *=, / et /= pour la multiplicaton entre un scalaire et un vecteur. Operator * pour le produit scalaire entre deux vecteurs. Operator ^ pour le produit vectoriel entre deux vecteurs (de dimension 3). Operator [] pour pouvoir acc�der rapidement et intuitivement � une coordonn�e du vecteur. Ce dernier permet aussi d'affecter plus rapidement cette variable. C'est en effet le motif pour lequel nous n'avons pas choisi la foction set_coord(). Operator == nous retournant true ou false si les deux vecteurs compar�s sont �gaux ou non Ce dernier sobstitue la fonction compare(). Operator != ayant le comportement inverse de l'operator == . N.B. les operators + - * / sont definis en externe. L'acc�s est publique � toutes les m�thodes car toutes directement utiles dans la manipulation des vecteurs. Les attributs sont en acc�s priv�. [Question P1.2] Quel choix avez vous fait pour les op�rations entre vecteurs de dimensions diff�rentes ? Nous avons choisir de lancer une exception (un message d'erreur), lorsque l'utilisateur lance un produit scalaire ou vectoriel sur deux vecteurs n'ayant pas de dimensions compatibles. On pr�f�re traiter comme �a le probl�me et ensuite implementer des traitement plus particulier en fonction du cas sp�cifique, si il y aura besoin. Dans le cas de somme de deux vecteur ayant dimensions diff�rentes, on a choisi de donner priorit� au vecteur qui apparait en premier dans l'op�ration. -Ceci permettra � l'utilisateur de choisir d'obtenir le vecteur de dimension voulue. \ No newline at end of file +Ceci permettra � l'utilisateur de choisir d'obtenir le vecteur de dimension voulue. + + + +#S�rie semaine 4 + + +[Question P4.1] Avez-vous ajout� un constructeur de copie ? Pourquoi (justifiez votre choix) ? + +Nous avons ajout� constructeur de copie prenant en argument un Vector pour faciliter la tache de copie de vecteur � l'initialisation. + +[Question P4.2] Si l'on souhaitait ajouter un constructeur par coordonn�es sph�riques (deux angles et une longueur) pour les vecteurs de dimension 3, + + a] que cela impliquerait-il au niveau des attributs de la classe ? + b] quelle serait la difficult� majeure (voire l'impossibilit�) de sa r�alisation en C++ ? + +a]Dans notre cas rien car le seule attribut est un vecteur de double, et soit les angles soit les distances peuvent �tre represent�s comme double. +Cela par contre provoquerai le devoir re-conceptualiser les methodes concernant la manipulation des vecteurs, par exemple celle de l'operateur "^" +dont la definition "polaire" peut devenir vite compliqu�e. + +b]... On en voit pas +La conversion des angles en radians ??? + + +[Question P4.3] Quels op�rateurs avez vous introduits ? + +Les operateurs sont ceux itroduits la premiere semaine (Voir question P1.2). Nous avons ajout� par contre, dans "vector.cpp", la definition de l'operateur d'affichage << +pour notre classe Vector. La methode etant externe � la classe, et �tatn l'operateur un operateur d'affichage, on a d�cid� d'ins�rer son prototype +dans le fichier "iosymkit.h" o� l'on y declarera les op�rateur d'affichage de nos classes. +