Update Rapport
This commit is contained in:
parent
4c65f8f81b
commit
f300c71020
@ -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 s’est finalement porté sur le "Générateurs de flores vidéos-ludiques" et donc la réalisation d’un simulateur de L-système végétalproduisant une image 2D et 3D de l’objet 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 s’est finalement porté sur le "Générateurs de flores vidéos-ludiques" et donc la réalisation d’un simulateur de L-système végétal produisant une image 2D et 3D de l’objet 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.
|
||||
|
||||
|
@ -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.
|
@ -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}
|
||||
|
@ -22,6 +22,7 @@
|
||||
\usepackage{algorithmicx}
|
||||
\usepackage[noend]{algpseudocode}
|
||||
\usepackage{listings}
|
||||
\usepackage{enumitem}
|
||||
\hyphenpenalty 10000
|
||||
|
||||
\definecolor{link}{HTML}{4169E1}
|
||||
|
@ -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"
|
||||
|
Loading…
Reference in New Issue
Block a user