Update Rapport

This commit is contained in:
Eideen 2021-04-18 23:28:31 +02:00
parent 4c65f8f81b
commit f300c71020
5 changed files with 29 additions and 16 deletions

View File

@ -1,7 +1,7 @@
\chapter{Introduction}
\section{Sujet et consiges}
Ce projet a pour objectif de réaliser une application appliquant des principes de programmation orientée objet en language de programmation Java. Nous avons eut le choix entre 6 sujets différents et, après études des propositions, notre choix sest finalement porté sur le "Générateurs de flores vidéos-ludiques" et donc la réalisation dun simulateur de L-système végétalproduisant une image 2D et 3D de lobjet par le biais de règles de réécritures.
\section{Sujet et consignes}
Ce projet a pour objectif de réaliser une application appliquant des principes de programmation orientée objet en langage de programmation Java. Nous avons eut le choix entre 6 sujets différents et, après études des propositions, notre choix sest finalement porté sur le "Générateurs de flores vidéos-ludiques" et donc la réalisation dun simulateur de L-système végétal produisant une image 2D et 3D de lobjet par le biais de règles de réécritures.
\info{Pour cela nous avions quelques consignes a respecter :
\begin{itemize}
@ -16,7 +16,7 @@ Après lecture des consignes nous avons pu entamer nos recherches.
Nos recherches se sont premièrement portées sur le L-Système (principalement sur Wikipedia\footnote{\href[textcolor=blue]{https://en.wikipedia.org/wiki/L-system}{https://en.wikipedia.org/wiki/L-system}}) pour comprendre son fonctionnement nous donnant des informations sur comment construire notre parser et notre moteur de réécriture. Nous nous sommes ensuite renseigné sur les différents moteurs de rendu graphique que nous pouvions utiliser et notre choix c'est finalement porté sur JOGL (Java Open Graphics Library \footnote{\href[textcolor=blue]{https://jogamp.org/jogl/www/}{https://jogamp.org/jogl/www/}}) qui était conseillé dans la liste des sujets, pouvant gérer un rendu 2D et un rendu 3D.
\\
\\
Suite a ça nous avons réfléchit a la structure de notre code, une première ébauche sur laquelle nous pourrions nous baser pour débuter notre projet ainsi qu'un ordre de priorité, certaines parties étant necessaires pour que d'autres fonctionnent ou puissent être amorcées (comme le parser, les bases du système de réécriture ou encore les différents moteurs de rendu).
Suite a ça nous avons réfléchit a la structure de notre code, une première ébauche sur laquelle nous pourrions nous baser pour débuter notre projet ainsi qu'un ordre de priorité, certaines parties étant nécessaires pour que d'autres fonctionnent ou puissent être amorcées (comme le parser, les bases du système de réécriture ou encore les différents moteurs de rendu).
\\
Puis, pour terminer notre mise en place, nous avons décidé que nous rajouterions une interface ainsi qu'une fenêtre d'aide a notre futur code dans le but de faciliter son utilisation.

View File

@ -3,14 +3,28 @@
\section{Principe et fonctionnement}
\subsection{Qu'est-ce que le le L-Système ?}
Le L-système \footnote{Le système de Lindebmayer}, inventé en 1968 par un biologiste hongrois du nom de Aristid Lindenmayer, est un système de réécriture \footnote{Modèle de calcul transformant des objets syntaxiques comme des mots, des termes ou encore des graphes en appliquant des règles données.} utilisé pour la modélisation de processus de developpement et de prolifération de bactéries ou de plantes.
Le L-Système \footnote{Le système de Lindebmayer}, inventé en 1968 par un biologiste hongrois du nom de Aristid Lindenmayer, est un système de réécriture \footnote{Modèle de calcul transformant des objets syntaxiques comme des mots, des termes ou encore des graphes en appliquant des règles données.} utilisé pour la modélisation de processus de developpement et de prolifération de bactéries ou de plantes.
\subsection{Comment fonctionne-t-il ?}
Ce système de réécriture fonctionne par le biais de plusieurs spécificités :
\begin{itemize}
\item Un alphabet : celui-ci représente l'ensemble des variables utilisées pour former des mots dans le L-système.
\item Un axiom : il représente le point de départ, l'état initial du système de réécriture.
\item Des règles :
\item Un alphabet : celui-ci est l'ensemble des variables et des constantes utilisées.
\item Un axiome : il représente le point de départ, l'état initial du système.
\item Des règles de réécriture : elles définissent les règles de développement du L-Système en utilisant l'alphabet donné dans le but de créer un mot.
\end{itemize}
En additionnant tout ces aspects, nous obtenons alors notre L-Système, commençant par l'axiome étant la base, puis, créant au fur et a mesure un mot grâce aux règles données (Dans la limite du nombre d'itérations imposés \footnote{Le nombre d'itérations ou nombre de générations correspond au nombre de réécriture de l'axiome pour obtenir le mot final} ), tout ceci étant possible grâce a l'alphabet qui les composes.
Ce mot passera ensuite par un moteur graphique dans le but d'être modélisé.
\section{}
\section{Notre L-Système}
\subsection{Alphabet}
Notre alphabet est composés de plusieurs constantes :
\begin{itemize}[label=\textbullet]
\item Peut
\item Etre
\item Faire
\item Une liste
\end{itemize}
\subsection{Axiome, règles de réécritures et nombre d'itérations}
Pour l'axiome, les règles de réécritures et le nombre d'itérations, ils seront définis par l'utilisateur dans les zones de textes de l'interface prévus a cet effet.
Un bouton "Aide" est présent sur cette même interface aidant a comprendre et mettre en place le L-Système.

View File

@ -7,7 +7,7 @@
\item engine
\begin{itemize}
\item Rewrite: Moteur de réécriture
\item Element, ElementProperties et Parser: voir section 4.1 \ref{sec:parser}
\item Element, ElementProperties et Parser: voir section \ref{sec:parser}
\end{itemize}
\item screen
\begin{itemize}

View File

@ -22,6 +22,7 @@
\usepackage{algorithmicx}
\usepackage[noend]{algpseudocode}
\usepackage{listings}
\usepackage{enumitem}
\hyphenpenalty 10000
\definecolor{link}{HTML}{4169E1}

View File

@ -10,7 +10,7 @@ public class Constants {
public static final float[] light_0_diffuse = {1.0f, 1.0f, 1.0f, 1.0f};
public static final float[] light_0_specular = {1.0f,1.0f, 1.0f, 1.0f};
public static final float[] material_specular = {0.8f, 0.8f, 0.8f, 0.8f};
public static final String HELP = "Alphabet{X,Y,Z}\r\n"
public static final String HELP = "Alphabet{X,Y}\r\n"
+ "\r\n"
+ "\r\n"
+ "Structure d'une requête:\r\n"
@ -28,17 +28,15 @@ public class Constants {
+ "\r\n"
+ " X -> avance d'une unité sur l'axe X\r\n"
+ " 0.25X -> avance de 0.25 unité sur l'axe X\r\n"
+ " 12Z -> avance de 12 unités sur l'axe Z\r\n"
+ "\r\n"
+ "On peut combiner les directions:\r\n"
+ "Exemple:\r\n"
+ " \r\n"
+ " X=Y -> avance d'une unité sur l'axe X et une sur l'axe Y\r\n"
+ " 2Y3X0.3Z -> avance de deux unités sur l'axe Y,\r\n"
+ " de trois unités sur l'axe X\r\n"
+ " de 0.3 unités sur l'axe Z.\r\n"
+ " 2Y0.3X -> avance de deux unités sur l'axe Y,\r\n"
+ " de 0.3 unités sur l'axe X\r\n"
+ "\r\n"
+ "Les expressions sont de la forme {X = 2X0.2YZ}\r\n"
+ "Les expressions sont de la forme {X = 2X0.2Y}\r\n"
+ "\r\n"
+ "On pourra changer de direction avec l'alphabet{x,y}\r\n"
+ "x et y font par défault une rotation de 45° autour de leur axe.\r\n"
@ -48,7 +46,7 @@ public class Constants {
+ "\r\n"
+ "Ainsi on pourra écrire:\r\n"
+ "\r\n"
+ " X = X2y0.2Z0.2x\r\n"
+ " X = X2y0.2Y0.2x\r\n"
+ "\r\n"
+ "On ajoute le principe d'ouverture et de fermeture des branches aux expressions,\r\n"
+ "on utilise donc pour ce faire les \"[ ]\".\r\n"