diff --git a/.gitignore b/.gitignore
index 4324113da5c0350bb082a6a6cf356c1bdef63804..a1f0b22b4f21a400d820d7167c625f51ef46f5d6 100644
--- a/.gitignore
+++ b/.gitignore
@@ -8,6 +8,8 @@ _minted-doc/
 *.fls
 *.bcf
 *.run.xml
+*.md5
+*.auxlock
 
 # PDF output - usually a bad idea to keep this in Git
 *.pdf
diff --git a/doc/figures/cover-field.png b/doc/figures/cover-field.png
index fa0257b2e615b3115c483fbb546bc2a31fc82d30..73eda5c0d5b89a5257d39a3c86c59b36ae0bb7ff 100644
Binary files a/doc/figures/cover-field.png and b/doc/figures/cover-field.png differ
diff --git a/doc/figures/field-lines-2.png b/doc/figures/field-lines-2.png
new file mode 100644
index 0000000000000000000000000000000000000000..e3af37cba689cdc90ec308d03acddc16a2b0ba8c
Binary files /dev/null and b/doc/figures/field-lines-2.png differ
diff --git a/doc/figures/field-lines-4.png b/doc/figures/field-lines-4.png
new file mode 100644
index 0000000000000000000000000000000000000000..ae1fe6243c3494573e56d391bbe5abb179397617
Binary files /dev/null and b/doc/figures/field-lines-4.png differ
diff --git a/doc/figures/field-lines-6.png b/doc/figures/field-lines-6.png
new file mode 100644
index 0000000000000000000000000000000000000000..4584a22b19602eeec4ee38579357f3d621e74046
Binary files /dev/null and b/doc/figures/field-lines-6.png differ
diff --git a/doc/figures/heatmap-12.png b/doc/figures/heatmap-12.png
new file mode 100644
index 0000000000000000000000000000000000000000..35d8100bf5cdfb05c91d8612ffaea6f9f8a78eae
Binary files /dev/null and b/doc/figures/heatmap-12.png differ
diff --git a/doc/figures/heatmap-6.png b/doc/figures/heatmap-6.png
new file mode 100644
index 0000000000000000000000000000000000000000..d5c9b4be8ddb5ba260ce22050521f56c6dd30666
Binary files /dev/null and b/doc/figures/heatmap-6.png differ
diff --git a/doc/figures/vector-field-12.png b/doc/figures/vector-field-12.png
new file mode 100644
index 0000000000000000000000000000000000000000..7bd99e05d08b1ce56d12cdcc519d18472b69aaec
Binary files /dev/null and b/doc/figures/vector-field-12.png differ
diff --git a/doc/figures/vector-field-6.png b/doc/figures/vector-field-6.png
new file mode 100644
index 0000000000000000000000000000000000000000..499cb92d83ac018cb52c555030114e06baeff148
Binary files /dev/null and b/doc/figures/vector-field-6.png differ
diff --git a/doc/layout/hepia-report.cls b/doc/layout/hepia-report.cls
index cf4566beb65c6cac0fcc0bf8188b695b76af526e..243e234d07b49a434685615d7cd99ff0b9c66869 100644
--- a/doc/layout/hepia-report.cls
+++ b/doc/layout/hepia-report.cls
@@ -23,6 +23,7 @@
 \RequirePackage{booktabs}   % Publication quality tables
 \RequirePackage{longtable}  % Allow tables to flow over page boundaries
 \RequirePackage{multirow}   % Create tabular cells spanning multiple rows
+\RequirePackage{multicol}
 
 \RequirePackage{graphicx}   % Enhanced support for images
 \RequirePackage{float}      % Improved interface for floating objects
@@ -36,6 +37,7 @@
 \RequirePackage{tikz}       % Create PostScript and PDF graphics
 \RequirePackage{xspace}     % Define commands that appear not to eat spaces
 \RequirePackage{microtype}  % Refinements towards typographical perfection
+\RequirePackage{pgfplots}   % Advanced ploting
 
 \RequirePackage{geometry}   % Customize document dimensions
 \RequirePackage{titlesec}   % Select alternative section titles
@@ -56,6 +58,9 @@
 %% Scaling the margins to be slightly smaller than default (.7)
 \geometry{a4paper,hscale=0.75,vscale=0.8}
 
+%% Plots configuration
+\pgfplotsset{width=10cm,compat=1.9}
+
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 %%%%% I. Loading the fonts %%%%%
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
diff --git a/doc/mainmatter/chapter-3.tex b/doc/mainmatter/chapter-3.tex
deleted file mode 100644
index a778ea8f2fda31ff4089caff2edb2c2bc96f8d1f..0000000000000000000000000000000000000000
--- a/doc/mainmatter/chapter-3.tex
+++ /dev/null
@@ -1,2 +0,0 @@
-%\chapter{Title}
-%\label{chapter:title}
diff --git a/doc/mainmatter/conclusion.tex b/doc/mainmatter/conclusion.tex
index 01f26e519f3c4dd7b37e2342235e23dbf7e97aa9..2478ed5a37754149f67613151466c0d830f247cb 100644
--- a/doc/mainmatter/conclusion.tex
+++ b/doc/mainmatter/conclusion.tex
@@ -1,4 +1,60 @@
 \chapter{Conclusion}
 \label{chapter:conclusion}
 
-\emph{A conclusion...}
+\section{Évolution du temps de calcul}
+\label{sec:time-evolution}
+
+Le temps de calcul varie grandement en fonction du nombre de particules dans l'univers
+ainsi que l'espacement fixé entre les points de la grille utilisée pour calculer les lignes de champs.
+Comme le graphique ci-dessous le montre, la croissance du temps est presque exponentielle.
+Il est clair que la façon dont les lignes sont calculées n'est donc pas efficace et qu'il est
+nécessaire de changer de méthode s'il on veut pouvoir avoir un nombre de particules plus élevé et
+un espacement entre points de grille plus petit (sachant que moins de 5px les lignes deviennent un
+amas illisible tant la distances entre elles est faible).
+
+\begin{figure}[h]
+    \centering
+    \caption{Variance du temps de calcul des lignes de champs}
+    \begin{tikzpicture}[scale=.7]
+        \begin{axis}[
+                ybar,
+                bar width=10pt,
+                ymin=0,
+                xmin=0,
+                ylabel=Secondes,
+                xlabel=Nombre de particules,
+                xtick={2, 10, 15},
+                legend pos=north west
+            ]
+            \addlegendimage{empty legend}
+            \addplot+[error bars/.cd,
+                y dir=both,y fixed=0.01,
+            ]
+            coordinates {
+                    (2, 0.1630385)
+                    (10, 0.2835994)
+                    (15, 0.3111888)
+                };
+            \addplot+[error bars/.cd,
+                y dir=both,y fixed=0.03,
+            ]
+            coordinates {
+                    (2, 0.4662245)
+                    (10, 0.8618891)
+                    (15, 0.733422)
+                };
+            \addplot+[error bars/.cd,
+                y dir=both,y fixed=0.1,
+            ]
+            coordinates {
+                    (2, 1.6592141)
+                    (10, 3.2944945)
+                    (15, 3.4218168)
+                };
+            \addlegendentry{\hspace{-.3cm}\textbf{Espacement}}
+            \addlegendentry{16px}
+            \addlegendentry{10px}
+            \addlegendentry{5px}
+        \end{axis}
+    \end{tikzpicture}
+\end{figure}
\ No newline at end of file
diff --git a/doc/mainmatter/experiences.tex b/doc/mainmatter/experiences.tex
new file mode 100644
index 0000000000000000000000000000000000000000..699cfac3b68ce1867e99f05125b879f41c509c67
--- /dev/null
+++ b/doc/mainmatter/experiences.tex
@@ -0,0 +1,212 @@
+\chapter{Expériences}
+\label{chapter:experiences}
+
+Pour représenter de façon graphique le champs électrostatique, il nous faut définir un
+univers discret. Cet univers est défini comme $[0,1]\times[0,1]$. Chaque particule du
+système aura donc une position dans cet univers, ainsi qu'une charge (mutliple de la charge
+élémentaire).
+
+\section{Ligne de champs}
+
+Le dessin numérique d'une courbe se fait en l'approximant à l'aide de plusieurs petits
+ségments de droite mis bout à bout. Pour dessiner cette courbe, il nous faut trouver un
+ensemble de points appartenant à cette lignes. Pour cela on procède ainsi :
+
+\begin{enumerate}
+    \item Tirage aléatoire d'un point dans l'univers $P_0$.
+    \item Assignation $P = P_0$.
+    \item On calcul ensuite $P_{suivant}$ en fonction de l'intensité et de la direction du champ
+          en $P$. Ce qui donne l'équation \ref{eqn:next-point}. Cependant, dans notre cas nous
+          voulons avancer d'une distance identique à chaque fois, et qui ne soit pas trop grande.
+          Il faut donc commencer par normaliser notre champs, puis le multiplier par une constante
+          $\delta x$ fixe définie en fonction de la taille de la fenêtre. Ce qui nous donne :
+          $P_{suivant} = P \pm \delta x \cdot \frac{\vec{E}}{||\vec{E}||}$ avec $\delta x = \frac{1}{\sqrt{largeur^2 + hauteur^2}}$
+          et $\vec{E} = \sum_{i=1}^N E_i \frac{\lvec{q_i P_n}}{||\lvec{q_i P_n}||}$. \textit{En fonction du sens du dessin
+              de la ligne, $+$ ou $-$ $\delta x$}.
+    \item Si $P$ et $P_{suivant}$ sont à une distance des particules supérieur à un seuil choisi
+          et qu'ils sont toujours dans notre univers, on trace un segment entre $P$ et $P_{suivant}$. Sinon on quitte la boucle.
+    \item On assigne $P = P_{suivant}$ et on revient à l'étape 3.
+\end{enumerate}
+
+\begin{figure}[h]
+    \centering
+    \caption{Dessin d'une ligne de champs}
+    \begin{tikzpicture}[line/.style={->,shorten >=0.4cm,shorten <=0.4cm},very thick, scale=0.7]
+        \coordinate (Plus) at (0, 0);
+        \coordinate (Minus) at (6, 0);
+        \coordinate (P) at (3, 2);
+
+        \path [red, line, bend right] (P) edge (Plus);
+        \path [blue, line, bend left] (P) edge (Minus);
+        \filldraw (P) circle (3pt);
+        \filldraw (Plus) node[white] {$+$} circle (0.3);
+        \filldraw (Minus) node[white] {$-$} circle (0.3);
+    \end{tikzpicture} \\
+    {\fontsize{8}{8}
+    \textit{Le sens des flèches est seulement indicative du sens du calcul de $P_{suivant}$. Ce n'est
+        pas le sens de la ligne de champ.}
+    }
+\end{figure}
+
+\noindent Le résultat est très concluant, quoique lent lorsque beaucoup de lignes doivent être déssinées. \textit{c.f. \ref{sec:time-evolution}}.
+Comme les images le montre, les lignes sont clairement visible, mais il se peut que quelquefois il y aie des espaces
+plus grand que d'autres entre les lignes. Ceci est dû à la manière dont les points de départ des lignes sont choisie.
+Pour ne plus avoir ces espace, il serait possible de prendre des points de départ équidistant.
+
+\begin{figure}[H]
+    \centering
+    \caption{Résultats de simulation}
+    \begin{subfigure}[t]{.3\linewidth}
+        \centering
+        \frame{\includegraphics[width=.7\linewidth]{figures/field-lines-2.png}}
+        \caption{2 particules}
+    \end{subfigure}
+    \begin{subfigure}[t]{.3\linewidth}
+        \centering
+        \frame{\includegraphics[width=.7\linewidth]{figures/field-lines-4.png}}
+        \caption{4 particules}
+    \end{subfigure}
+    \begin{subfigure}[t]{.3\linewidth}
+        \centering
+        \frame{\includegraphics[width=.7\linewidth]{figures/field-lines-6.png}}
+        \caption{6 particules}
+    \end{subfigure}
+\end{figure}
+
+\section{Champs vectoriel}
+
+En plus des lignes de champs, deux autres représentations sont disponible. (Chacune en appuyant sur
+\verb|l|, \verb|v|, \verb|h|). La première est un champs vectoriel. Il est généré de la façon suivante :
+
+\begin{enumerate}
+    \item Calcul de la valeur minimum et maximum du champs électrostatique normalisé pour tout $P$
+          dans une grille orthogonale à espacement égale, et sauvegarde du champs en $P$
+          inséré dans une liste de longueur identique aux points de la grille.
+    \item Assignation de $P = P_0$
+    \item Pour tout $P$ dans la liste de champs électrostatique calculée à l'étape 1.
+    \item On normalise le champs $\hat{E} = \frac{\vec{E}(P)}{||\vec{E}(P)||}$ et on le multiplie par une valeur fixe
+          permettant de correctement distinguer les différentes tailles de vecteurs.
+    \item On dessine le vecteur en $P$.
+    \item Assignation de $P = P_{i + 1}$ et on revient à l'étape 4.
+\end{enumerate}
+
+\begin{figure}[H]
+    \centering
+    \caption{Dessin d'un champs vectoriel}
+    \begin{tikzpicture}[vecline/.style={green!50!black, ->, thick}, scale=.7]
+        \coordinate (Plus) at (0, 0);
+        \newcommand{\VSA}{0.5}
+        \newcommand{\VA}{1.15}
+        \newcommand{\VSB}{1.5}
+        \newcommand{\VB}{2}
+        \newcommand{\VSC}{2.5}
+        \newcommand{\VC}{2.8}
+
+        \filldraw (Plus) node[white] {$+$} circle (0.3);
+        % Right
+        \draw[vecline] (\VSA, 0) -- (\VA, 0);
+        \draw[vecline] (\VSB, 0) -- (\VB, 0);
+        \draw[vecline] (\VSC, 0) -- (\VC, 0);
+        % Left
+        \draw[vecline] (-\VSA, 0) -- (-\VA, 0);
+        \draw[vecline] (-\VSB, 0) -- (-\VB, 0);
+        \draw[vecline] (-\VSC, 0) -- (-\VC, 0);
+        % Up
+        \draw[vecline] (0, \VSA) -- (0, \VA);
+        \draw[vecline] (0, \VSB) -- (0, \VB);
+        \draw[vecline] (0, \VSC) -- (0, \VC);
+        % Down
+        \draw[vecline] (0, -\VSA) -- (0, -\VA);
+        \draw[vecline] (0, -\VSB) -- (0, -\VB);
+        \draw[vecline] (0, -\VSC) -- (0, -\VC);
+        % Up Right
+        \draw[vecline] (45:\VSA) -- (45:\VA);
+        \draw[vecline] (45:\VSB) -- (45:\VB);
+        \draw[vecline] (45:\VSC) -- (45:\VC);
+        % Up Left
+        \draw[vecline] (45:-\VSA) -- (45:-\VA);
+        \draw[vecline] (45:-\VSB) -- (45:-\VB);
+        \draw[vecline] (45:-\VSC) -- (45:-\VC);
+        % Down Right
+        \draw[vecline] (-45:\VSA) -- (-45:\VA);
+        \draw[vecline] (-45:\VSB) -- (-45:\VB);
+        \draw[vecline] (-45:\VSC) -- (-45:\VC);
+        % Down Left
+        \draw[vecline] (-45:-\VSA) -- (-45:-\VA);
+        \draw[vecline] (-45:-\VSB) -- (-45:-\VB);
+        \draw[vecline] (-45:-\VSC) -- (-45:-\VC);
+    \end{tikzpicture}
+\end{figure}
+
+\noindent Le résultant que quelque peu décevant sur un point précis. Les vecteur déssinés auraient pu
+être plus précis car quelque fois leur taille est trop différente des vecteur voisins, et de ce fait,
+créer une représentation un peu erronée.
+
+\begin{figure}[H]
+    \centering
+    \caption{Résultats de simulation}
+    \begin{subfigure}[t]{.4\linewidth}
+        \centering
+        \frame{\includegraphics[width=.7\linewidth]{figures/vector-field-6.png}}
+        \caption{6 particules}
+    \end{subfigure}
+    \begin{subfigure}[t]{.4\linewidth}
+        \centering
+        \frame{\includegraphics[width=.7\linewidth]{figures/vector-field-12.png}}
+        \caption{12 particules}
+    \end{subfigure}
+\end{figure}
+
+\section{Heatmap}
+
+La dernière représentation graphique est une heatmap en fonction de l'intensité du champs en tout point
+de l'univers.
+
+\begin{enumerate}
+    \item Cacule de la valeur minimum et maximum de la norme du champs électrostatique normalisé pour tout les
+          pixels de l'écran, et sauvegarde de la valeur courante dans une liste de longueur $largeur \cdot hauteur$.
+    \item Assignation de $P = P_0$.
+    \item Pour tout $I$ dans la liste d'intensitées sauvegardée à l'étape 1.
+    \item On dessine un point de couleur en fonction de l'intensité en ce point.
+    \item Assignation de $I = I_{i + 1}$ et on revient à l'étape 3.
+\end{enumerate}
+
+\begin{figure}[h]
+    \centering
+    \caption{Dessin d'une heatmap}
+    \begin{tikzpicture}[scale=.7]
+        \filldraw (0, 0) node[white] {$+$} circle (0.3);
+        \draw[blue] (0, 0) circle (0.5);
+        \draw[blue!80] (0, 0) circle (0.8);
+        \draw[blue!60] (0, 0) circle (1.2);
+        \draw[blue!40] (0, 0) circle (1.8);
+        \draw[blue!20] (0, 0) circle (2.8);
+    \end{tikzpicture}
+\end{figure}
+
+\noindent Cette représentation est selon moi la mieux réussie. Combinée aux lignes de champs, il est possible
+de voir la puissance du champs électrostatique autour des charges ainsi que leur impact sur leur voisinage, ce qui
+est très utile pour avoir une idée macroscoptique du champs. Cependant, le cacul du rendu graphique reste très lent.
+Ceci est dû au fait qu'un calcul d'intensité du champs est fait pour tout pixel.
+
+\begin{figure}[h]
+    \centering
+    \caption{Résultats de simulation}
+    \begin{subfigure}[t]{.4\linewidth}
+        \centering
+        \frame{\includegraphics[width=.7\linewidth]{figures/heatmap-6.png}}
+        \caption{6 particules}
+    \end{subfigure}
+    \begin{subfigure}[t]{.4\linewidth}
+        \centering
+        \frame{\includegraphics[width=.7\linewidth]{figures/heatmap-12.png}}
+        \caption{12 particules}
+    \end{subfigure}
+\end{figure}
+
+\section{Rendu graphique}
+
+L'utilisation de la librairie graphique OpenGL a été privilégié de part son efficacité de rendu
+ainsi que sa flexibilité d'utilisation. Grâce à cela, il a été possible d'afficher du texte
+en dessous des particules indicant leur charge respective, utilisation d'antialiasing par défaut
+pour un rendu de ligne et de cercle très bon, et calcul graphique fait sur le GPU au lieu du CPU.
\ No newline at end of file
diff --git a/doc/mainmatter/introduction.tex b/doc/mainmatter/introduction.tex
index 5d2986bb8795f0d7a2d2436befbbc73d58184dda..217115b82cda638274f442bbb751b7f4bbe99b59 100644
--- a/doc/mainmatter/introduction.tex
+++ b/doc/mainmatter/introduction.tex
@@ -1,16 +1,9 @@
 \chapter{Introduction}
 \label{chapter:introduction}
 
-\color{red}Dans le cadre du cours de physique appliquée à l'ingénerie 1 (ISC 123) donné par M. Malaspinas Orestis,
-nous devons réaliser une simulation élémentaire de lignes de champs électrostatique de particules.
-Cette simulation se base sur les notions vues et pratiquée en cours, et est réalisée en C avec un
-répertoire git \cite{git-repo} obligatoire.
-
-\color{black}Le rendu graphique doit être fait en utilisant la librarie SDL2. Cependant, ne la trouvant pas optimale,
-j'opte pour une version utilisant OpenGL, branche \verb|opengl|. La version SDL2 sur la branche \verb|master|
-est disponible.
-
-\textit{\color{red}Plus de blabla... (qu'est ce que l'électrostatique, a quoi ça sert, dans champ d'application, etc)}
+L'électrostatique est une branche de la physique étudiant les charges électriques au repos.
+Les phénomènes électrostatiques proviennent des forces que les charges électriques produisent entre elles.
+Ces forces sont décrites par la loi de Coulomb.
 
 La simulation de lignes de champs permet d'avoir une représentation graphique claire de
 l'impact électrostatique inter-particules dans un univers discret. À plus grande echelle, il est possible
diff --git a/doc/mainmatter/chapter-2.tex b/doc/mainmatter/theory.tex
similarity index 96%
rename from doc/mainmatter/chapter-2.tex
rename to doc/mainmatter/theory.tex
index af871ecdc4ba5facb39508581698ccd7a26696c0..b6656206ebae361a61c80cc1763520e6b030806b 100644
--- a/doc/mainmatter/chapter-2.tex
+++ b/doc/mainmatter/theory.tex
@@ -12,7 +12,7 @@ j'utilise deux lois de l'électrostatique qui sont la loi de Coulomb et les cham
     Pour rappel, toute particule à une charge $Q$ valant $\pm n \cdot e$, où $e = 1.602176634 * 10^{-19}[C]$.
 }
 
-\section*{Loi de Coulomb}
+\section{Loi de Coulomb}
 
 Cette loi nous dis que :
 \begin{center}
@@ -38,7 +38,7 @@ $q$ et $Q$ est :
     Dans le SI, $k_0 = \frac{1}{4 \pi \epsilon_0} \approx 8.987551792*10^{-9} [Nm^2C^{-2}]$
 \end{center}
 
-\section*{Champ électrique}
+\section{Champ électrique}
 
 Le champ électrique, $\vec{E}$, en newton par coulomb, ou volt par mètre, est un champ vectoriel
 pouvant être défini en tout point, excepté sur la position de la charge.
@@ -52,7 +52,7 @@ charge émettant le champ.
     \end{equation}
 \end{center}
 
-\subsection*{Lignes de champs}
+\section{Lignes de champs}
 
 Les lignes de champs sont utiles afin de visualiser le champs électrique. Ces lignes commencent
 sur des charges négatives et terminent sur des charges positives.
@@ -64,6 +64,7 @@ Soit une collection de $N$ charges de charge $q_i$, le champ en $P_{n+1}$ est :
 
 \begin{center}
     \begin{equation}
+        \label{eqn:next-point}
         \vec{E}(\vec{P}_{n+1}) = \vec P_n+ \sum_{i=1}^N E_i \frac{\lvec{q_i P_n}}{||\lvec{q_i P_n}||}
     \end{equation}
 \end{center}
\ No newline at end of file
diff --git a/doc/report.tex b/doc/report.tex
index f255ddc9f14352e060b8acbae49ff700af3dc6fb..9d6f276c06e4c69b2267b83fbb42748b07831a0a 100644
--- a/doc/report.tex
+++ b/doc/report.tex
@@ -39,8 +39,8 @@
 
 \input{mainmatter/introduction}
 
-\input{mainmatter/chapter-2}
-\input{mainmatter/chapter-3}
+\input{mainmatter/theory}
+\input{mainmatter/experiences}
 %\input{mainmatter/chapter-4} % Create file to add
 
 \input{mainmatter/conclusion}