This repository has been archived on 2024-05-19. You can view files and clone it, but cannot push or open issues or pull requests.
l-systems/report/document.tex
2024-05-19 01:24:47 +02:00

181 lines
5.5 KiB
TeX

\DocumentMetadata{testphase = {phase-II,sec,toc,graphic,minipage,float,text}}
\documentclass[a4paper]{article}
% Font
\usepackage[T1]{fontenc}
\renewcommand{\familydefault}{\sfdefault}
\usepackage[nopatch=footnote]{microtype}
% Languages
\usepackage[french]{babel}
\frenchsetup{SmallCapsFigTabCaptions=false}
\usepackage{csquotes}
\MakeOuterQuote{"}
% Images
\usepackage{svg}
\usepackage{multicol}
\usepackage{subcaption}
\usepackage{float}
\newcommand{\img}[1]{
\begin{subfigure}[b]{0.3\textwidth}
\includesvg[width=\textwidth]{imgs/#1.svg}
\caption{\MakeUppercase #1}
\end{subfigure}
}
% Add \extra info to title
\makeatletter
\providecommand{\extra}[1]{
\apptocmd{\@author}{
\end{tabular}
\par\vspace*{0.7em}
\begin{tabular}[t]{c}
#1}{}{}
}
\makeatother
% Alias
\def\matthieu{Matthieu Tonino}
\def\anri{Anri Kennel}
\def\lsys{L-système}
\def\xml{\texttt{XML}}
\def\xsl{\texttt{XSL}}
\def\xsd{\texttt{XSD}}
\def\csv{\texttt{CSV}}
\def\svg{\texttt{SVG}}
% Metadatas
\def\docTitle{Rapport de projet sur les~\lsys{}s}
\def\docAuthor{\matthieu~et \anri}
\def\docSubject{Format de documents et XML}
\def\docLocation{Université Paris Cité}
\usepackage[
pdfauthor={\docAuthor}, % author metadata
pdftitle={\docTitle}, % title metadata
pdfsubject={\docSubject}, % subject metadata
hidelinks, % clickable links in table of contents
]{hyperref}
\title{\docTitle}
\author{\matthieu\thanks{\matthieu : 22309517}~
et \anri\thanks{\anri : 22302653}}
\extra{\docSubject~$\cdot$ \docLocation}
\date{Année universitaire 2023-2024}
\begin{document}
\maketitle
\flushbottom
\tableofcontents
\clearpage
\section[Description]{Description du projet}
Le projet a pour but de générer un fichier \svg~en partant d'un \lsys~en
utilisant des transformations de \xml~par \xsl.
\subsection{Gestion de projet}
Nous avons écrit un \texttt{Makefile} pour nous faciliter le développement.
\subsubsection*{Une cible qui fait tout}
\begin{description}
\item[\texttt{make nom=snow n=3}] génère une image \svg~sous
\texttt{image.svg} qui correspond au \lsys~"snow" avec trois itérations.
\end{description}
\subsubsection*{Possibilité de faire une étape à la fois}
\begin{description}
\item[\texttt{make generation}] génère le fichier \xml~des \lsys{}s.
\item[\texttt{make tortue nom=koch5 n=4}] génère le fichier \xml~du
\lsys{}~"koch5" avec quatre itérations.
\item[\texttt{make traceur}] génère le fichier \xml~du traceur.
\item[\texttt{make svg}] génère le fichier \svg.
\end{description}
\subsubsection*{Utilitaires}
\begin{description}
\item[\texttt{make saxon}] télécharge Saxon pour la transformation
des fichiers \xml~via \xsl.
\item[\texttt{make clean}] supprime les fichiers générés.
\end{description}
\section{Explication des choix}
Dans cette partie, nous justifions nos décisions.
\subsection{Conception}
Nous avons choisi le langage de programmation Python pour réaliser la
première partie du projet parce que c'est un langage simple pour ce que nous
voulons faire. Il est doté d'une librairie qui permet de générer des fichiers
\xml~et que nous maîtrisons tous les deux.
\section{Répartition des tâches}
La conversion du fichier \csv~en fichier \xml, ainsi que la transformation
du fichier XML ainsi généré en fichier \xml~de la tortue ont été faites
par \anri.
La conversion du fichier \xml~de la tortue en fichier \xml~du traceur a été
écrite par \matthieu.
La conversion du fichier \xml~du traceur en fichier \svg~a été écrite par \anri.
Chacun a écrit les fichiers \xsd~correspondant à ses fichiers \xml.
\subsection[Chronologie]{Chronologie des tâches}
\def\sp{\hspace{8pt}} % petit espace pour l'alignement
\begin{description}
\item[15 avril] Début de l'écriture du parseur \csv~vers \xml
\item[17 avril] Transformation du fichier \csv~vers \xml~achevée
\item[26 avril] Écriture du schéma \xml~validant le format du fichier \xml~généré
\item[27 avril] Écriture des fichiers \xsl~et \xsd~pour la tortue
\item[2 mai\sp] Écriture des fichiers \xsl~et \xsd~pour le traceur
\item[4 mai\sp] Écriture des fichiers \xsl~pour la conversion en \svg
\item[5 mai\sp] Essaie pour centrer les images \svg.
\item[6 mai\sp] Correction de bugs pour \texttt{STORE} et \texttt{RESTORE}
\item[6 mai\sp] Gestion de déplacements pour les \svg~et optimisation
\item[6 mai\sp] Ajout de quelques \lsys{}s trouvés sur
\href{https://onlinetools.com/math/l-system-generator}{onlinetools}
et \href{https://anvaka.github.io/lsystem/}{anvaka/lsystem}
\item[18 mai\,] Images \svg~correctement centrés
\item[18 mai\,] Finalisation du rapport
\end{description}
\section{Limitations}
Dans cette partie, nous abordons les limitations de notre projet.
\subsection{Difficultés rencontrées}
Nous avons eu des difficultés a correctement géré les \texttt{STORE} et
les \texttt{RESTORE} dans une pile dans le \xsl~du traceur. Aussi la méthode
pour centrer les images \svg~générées a été plus compliqué a réalisé que prévu.
\newpage
\appendix
\section{Images générées}
\pagenumbering{gobble}
\begin{figure}[H]
Quelques exemples d'images générés\dots
\begin{multicols}{3}
\img{blocks}
\img{br1}
\img{br2}
\img{br3}
\img{gosp6}
\img{koch}
\img{koch3}
\img{levey}
\img{moore}
\img{pentaplexy}
\img{pentl}
\img{sierp}
\img{snow}
\img{square}
\img{star}
\img{triangles}
\end{multicols}
\end{figure}
\end{document}