This commit is contained in:
Thomas FORGIONE 2015-09-15 17:32:55 +02:00
parent d7fef5e857
commit 8667cc6e8c
5 changed files with 336 additions and 1 deletions

View File

@ -12,6 +12,9 @@ compress: build/main.pdf
all: build/main.pdf
push: compress
scp -P2222 build/main.pdf pi@dragonrock.no-ip.org:web/dragonrock/rapport.pdf
clean: FORCE
$(TEXC) -c

263
rapport/gantt.sty Normal file
View File

@ -0,0 +1,263 @@
\ProvidesPackage{gantt}[2011/03/20 Some macros for drawing gantt diagrams using tkiz v.1.3]
% Some macros for drawing gantt diagrams using tkiz.
%
% Martin Kumm, 17.05.2010 (Version 1.0)
% Alan Munn, Martin Kumm, 14.03.2011 (Version 1.2)
% Andrés Silva Marambio, 20.03.2011 (Version 1.3)
%
% Update 20.03.2011, Version 1.3
%
% changes from v1.2:
% change \ProvidesPackage{gantt.sty} for \ProvidesPackage{gantt}
% add \bfseries for the command \ganttgroup
% add two newcommands for doing Gantt Milestones: \ganttmilestone and \ganttmilestonecon
% usage: \ganttmilestone[color=<color>]{label}{start} - Create a gantt milestone using a diamond
% usage: \ganttmilestonecon[color=<color>]{label}{start} - Create a gantt milestone using a diamond and conect with the previuos itemg
% fixed the issue when \ganttbarcon or \ganttmilestonecon connect in decimal positions
%
% Update 15.03.2011, Version 1.2
%
% changes from v1.1:
% px sizes has ben changed ot pt due to problems with some LaTeX distributions (thanks to Michael Kubovy and Loïc Le Guyader!)
% Correction of the text aligned in \titleelement (thanks to Josh Hykes!)
% \unitlength was changed to \ganttunitlength (thanks to Alan Munn!)
% \RequirePackage was added (thanks to Alan Munn!)
%
% Update 05.08.2010, Version 1.1
%
% changes from v1.0:
% \ganttbar and \ganttbarcon have been extended with the xkeyval syntax
% The pattern of the bar is now independent of the color and can be set by
% e.g. \ganttbar[pattern=horizontal lines,color=blue]{...}{1}{1}
% This syntax is incompatible with the previous ones!
% replace \ganttbar[<pattern>] with \ganttbar[pattern=<pattern>]
\RequirePackage{tikz,pgffor,xkeyval,ifthen,calc,forloop}
\usetikzlibrary{patterns}
\usetikzlibrary{arrows}
\newcounter{ganttnum}
\newcounter{ganttwidth}
\newlength{\ganttlastx}
\setlength{\ganttlastx}{0cm}
\newlength{\nextganttlastx}
\newlength{\gantttmpa}
\newlength{\gantttmpb}
\newlength{\ganttunitlength}
\setlength{\ganttunitlength}{1cm}
\newlength{\titleunitlength}
\setlength{\titleunitlength}{1cm}
\newcounter{gantttitlenum}
\define@key{ganttx}{xunitlength}{%
\setlength{\ganttunitlength}{#1}
}
\define@boolkey{ganttx}{drawledgerline}{}
\define@key{ganttx}{fontsize}{\def\ganttfontsize{#1}}
\define@key{ganttx}{titlefontsize}{\def\gantttitlefontsize{#1}}
\presetkeys{ganttx}{drawledgerline=false,xunitlength=1cm,titlefontsize=\small,fontsize=\normalsize}{}
\define@key{ganttbarx}{pattern}{\def\ganttbarpattern{#1}}
\define@key{ganttbarx}{color}{\def\ganttbarcolor{#1}}
\presetkeys{ganttbarx}{pattern=north west lines,color=black}{}
% The gantt environment draws the canvas of a gantt figure (realized as tikzpicture)
% The usage is \begin{gantt}[...]{no of Tasks to plot}{no of time slots}
% The optional argument [...] can be filled in a key=value syntax, using one or more of the following keys:
%
% xunitlength - length of one time slot (default: 1 cm)
% fontsize - fontsize of labels (default: \normalsize)
% titlefontsize - fontsize of title section (default: \small)
% drawledgerline - Switch to enable/disable the drawing of horizontal ledger lines (default value: false)
\newenvironment{gantt}[3][]{%
\begin{tikzpicture}[draw=black, yscale=.7,xscale=1]
\tikzstyle{time}=[coordinate]
\setkeys{ganttx}{#1}{%
\setcounter{ganttwidth}{#3}
\setcounter{ganttnum}{0}
\newcount\ganttx
\newcount\ganttheight
\ganttheight=#2 %define the number of Y ticks
\advance\ganttheight by 1
\def\ganttxstringtop{};
\def\ganttxstringbottom{};
\ganttx=0
\draw (0,0.5) node[above] {\ganttxstringtop} -- (0,1.4-\ganttheight) node[below] {\ganttxstringbottom};
\draw (\value{ganttwidth}*\ganttunitlength,0.5) node[above] {\ganttxstringtop} -- (\value{ganttwidth}*\ganttunitlength,1.4-\ganttheight) node[below] {\ganttxstringbottom};
%draw grid
\foreach \t in {1,2,...,\value{ganttwidth}}{
\ganttx=1
\multiply\ganttx by \t
\draw[dotted] (\ganttunitlength*\t,-0.5) node[above] {\ganttxstringtop} -- (\ganttunitlength*\t,1.4-\ganttheight) node[below] {\ganttxstringbottom};
}
%draw x axis
\draw[] (0,-#2+0.4) -- (\value{ganttwidth}*\ganttunitlength,-#2+0.4);
}
}{\end{tikzpicture}}
% ganttitle is the environment for drawing the title section
\newenvironment{ganttitle}[1][]{%
\setlength{\ganttlastx}{0 cm}
}{%
\setlength{\ganttlastx}{0 cm}
\addtocounter{ganttnum}{-1}%
}
% \titleelement draws one element of the title
% usage: \titleelement{label}{length}
\newcommand{\titleelement}[2]{
\setlength{\gantttmpa}{\ganttunitlength*#2}
\divide\gantttmpa by 2;
\draw (\the\ganttlastx,\value{ganttnum}) rectangle (\the\ganttlastx+#2*\ganttunitlength,\value{ganttnum}+0.6);
\node [text height=1.5ex,text depth=0.7ex] at (\the\ganttlastx+\the\gantttmpa,\value{ganttnum}+0.25) {%
\gantttitlefontsize #1%
};
\setlength{\ganttlastx}{\ganttlastx+\ganttunitlength*\real{#2}}
}
% \numtitle draws a numbered sequence of title elements
% usage: \numtitle{start number}{increment}{end number}{length of each title element}
\newcommand{\numtitle}[4]{
\forloop[#2]{gantttitlenum}{#1}{\(\value{gantttitlenum} < #3\) \or \(\value{gantttitlenum} = #3\)}%
{%
\titleelement{\thegantttitlenum}{#4}
}
}
% \ganttbar draws a single, unconnected bar for representing a task
% usage: \ganttbar[pattern=<pattern>,color=<color>]{label}{start}{length}
% where the optional comma separated arguments are:
% pattern - is a tikz pattern (e.g. north west lines (default), north east lines, crosshatch, crosshatch dots, grid, ...)
% color - a tikz color of the pattern (e.g. red, green blue gray, dark gray)
% for more information see the tikz documentation
\newcommand{\ganttbar}[4][]{
\setlength{\gantttmpa}{#3\ganttunitlength}
\setlength{\gantttmpb}{#4\ganttunitlength}
\setlength{\gantttmpb}{\gantttmpa+\gantttmpb}
\ifKV@ganttx@drawledgerline
\draw[dotted] (0,\value{ganttnum}-0.2) -- (\value{ganttwidth}*\ganttunitlength,\value{ganttnum}-0.2);
\fi
\node at (0,\value{ganttnum}) [anchor=base east] {%
\ganttfontsize #2%
};
\setkeys{ganttbarx}{#1}{%
\draw[pattern=\ganttbarpattern,pattern color=\ganttbarcolor] (\gantttmpa,\value{ganttnum}+0.1) rectangle (\gantttmpb,\value{ganttnum}+0.5);
}
\setlength{\ganttlastx}{\gantttmpb}
\addtocounter{ganttnum}{-1}
}
% \ganttcon draws an arrow between to bars with specified coordinates
% usage: \ganttcon{startx}{starty}{endx}{endy}
\newcommand{\ganttcon}[4]{
\draw[-latex,rounded corners=1pt] (#1\ganttunitlength,-#2+0.1 + 0.2) -- (#1\ganttunitlength+0.4*\ganttunitlength,-#2+0.1+0.2) -- (#1\ganttunitlength+0.4*\ganttunitlength,-#2-0.4+0.2) -- (#1\ganttunitlength-0.4*\ganttunitlength,-#2-0.4+0.2) -- (#1\ganttunitlength-0.4*\ganttunitlength,-#4+0.1+0.2) -- (#3\ganttunitlength,-#4+0.1+0.2);
}
% \ganttbarcon draws a single bar *and* connects the bar with the previous bar for
% consecutive tasks
% usage: \ganttbarcon[pattern=<pattern>,color=<color>]{label}{start}{length}
% where the optional pattern argument are the same as for \ganttbar
\newcommand{\ganttbarcon}[4][]{
\setlength{\nextganttlastx}{\the\ganttlastx+1\ganttunitlength}
\ifdim\nextganttlastx>#3\ganttunitlength
\draw[-latex,rounded corners=1pt] (\the\ganttlastx,\value{ganttnum}+1.1 + 0.2) -- (\the\ganttlastx+0.4*\ganttunitlength,\value{ganttnum}+1.1+0.2) -- (\the\ganttlastx+0.4*\ganttunitlength,\value{ganttnum}+0.6+0.2) -- (\the\ganttlastx-0.4*\ganttunitlength,\value{ganttnum}+0.6+0.2) -- (\the\ganttlastx-0.4*\ganttunitlength,\value{ganttnum}+0.1+0.2) -- (#3\ganttunitlength,\value{ganttnum}+0.1+0.2);
\else
\draw[-latex,rounded corners=1pt] (\the\ganttlastx,\value{ganttnum}+1.1 + 0.2) -- (\the\ganttlastx+0.4*\ganttunitlength,\value{ganttnum}+1.1+0.2) -- (\the\ganttlastx+0.4*\ganttunitlength,\value{ganttnum}+0.1+0.2) -- (#3\ganttunitlength,\value{ganttnum}+0.1+0.2);
\fi
\ganttbar[#1]{#2}{#3}{#4}
}
% \ganttgroup draws a bar to group tasks
% usage: \ganttgroup{label}{start}{length}
\newcommand{\ganttgroup}[3]{%
\setlength{\gantttmpa}{#2\ganttunitlength}
\setlength{\gantttmpb}{#3\ganttunitlength}
\setlength{\gantttmpb}{\gantttmpa+\gantttmpb}
\ifKV@ganttx@drawledgerline
\draw[dotted] (0,\value{ganttnum}-0.2) -- (\value{ganttwidth}*\ganttunitlength,\value{ganttnum}-0.2);
\fi
\node at (0,\value{ganttnum}) [anchor=base east] {%
\ganttfontsize\bfseries #1%
};
\fill[black] (\gantttmpa-0.14cm,\value{ganttnum}+0.2) rectangle (\gantttmpb+0.14cm,\value{ganttnum}+0.4);
\draw[diamond-diamond] (\gantttmpa-0.14cm,\value{ganttnum}+0.2) -- (\gantttmpb+0.14cm,\value{ganttnum}+0.2);
\setlength{\ganttlastx}{\gantttmpb}
\addtocounter{ganttnum}{-1}
}
% \ganttmilestone, draw a diamond to represent a milestone
% usage: \ganttgroup[fill=<color>]{label}{start}
% color - a tikz color of the pattern (e.g. red, green blue gray, dark gray)
% for more information see the tikz documentation
% Declaring layers to abvoid superposition when you connect a \ganttmileston with a task
\pgfdeclarelayer{background}
\pgfdeclarelayer{foreground}
\pgfsetlayers{background,main,foreground}
\newcommand{\ganttmilestone}[3][]{
\setlength{\gantttmpa}{#3\ganttunitlength}
\setlength{\gantttmpb}{0\ganttunitlength}
\setlength{\gantttmpb}{\gantttmpa+\gantttmpb}
\ifKV@ganttx@drawledgerline
\draw[dotted] (0,\value{ganttnum}-0.2) -- (\value{ganttwidth}*\ganttunitlength,\value{ganttnum}-0.2);
\fi
\node at (0,\value{ganttnum}) [anchor=base east] {%
\ganttfontsize #2%
};
\setkeys{ganttbarx}{#1}{%
\pgfonlayer{foreground}
\draw[diamond-, color=\ganttbarcolor] (\gantttmpa,\value{ganttnum}+0.1) -- (\gantttmpb,\value{ganttnum}+0.4);
\endpgfonlayer
}
\setlength{\ganttlastx}{\gantttmpb}
\addtocounter{ganttnum}{-1}
}
% \ganttmilestonecon draws a single diamond *and* connects the diamond with the previous task
% usage: \ganttmilestonecon[color=<color>]{label}{start}{length}
% where the optional color argument are the same as for \ganttbar and \ganttmilestone
\newcommand{\ganttmilestonecon}[3][]{
\setlength{\nextganttlastx}{\the\ganttlastx+1\ganttunitlength}
\ifdim\nextganttlastx>#3\ganttunitlength
\draw[-latex,rounded corners=1pt] (\the\ganttlastx,\value{ganttnum}+1.1 + 0.2) -- (\the\ganttlastx+0.4*\ganttunitlength,\value{ganttnum}+1.1+0.2) -- (\the\ganttlastx+0.4*\ganttunitlength,\value{ganttnum}+0.6+0.2) -- (\the\ganttlastx-0.4*\ganttunitlength-1.8,\value{ganttnum}+0.6+0.2) -- (\the\ganttlastx-0.4*\ganttunitlength-1.8,\value{ganttnum}+0.1+0.2) -- (#3\ganttunitlength-1.8,\value{ganttnum}+0.1+0.2);
%
\else
\draw[-latex,rounded corners=1pt] (\the\ganttlastx,\value{ganttnum}+1.1 + 0.2) -- (\the\ganttlastx+0.4*\ganttunitlength,\value{ganttnum}+1.1+0.2) -- (\the\ganttlastx+0.4*\ganttunitlength,\value{ganttnum}+0.1+0.2) -- (#3\ganttunitlength-1.8,\value{ganttnum}+0.1+0.2);
\fi
% \fi
\ganttmilestone[#1]{#2}{#3}
}
\endinput

View File

@ -48,5 +48,35 @@ différentes choses à faire tester aux encadrants se sont retrouvées sur des
pages à cette adresse.
\newpage
\begin{landscape}
\section{Planning}
% TODO
\begin{figure}[H]
\begin{gantt}{20}{20}
\begin{ganttitle}
\titleelement{Mars}{2}
\titleelement{Avril}{2}
\titleelement{Mai}{2}
\titleelement{Juin}{2}
\titleelement{Juillet}{2}
\titleelement{Août}{2}
\titleelement{Septembre}{2}
\titleelement{Octobre}{2}
\titleelement{Novembre}{2}
\titleelement{Décembre}{2}
\end{ganttitle}
\ganttmilestone{Début du stage}{1}
\ganttbar{Bibliographie}{1}{2}
\ganttbar{Choix des technos}{1}{2}
\ganttbar{Interface (base)}{3}{1}
\ganttbar{Recommandation (\emph{viewport})}{4}{2}
\ganttbar{Recommandation (\emph{arrow})}{6}{2}
\ganttbar{Recherche de scènes}{2}{2}
\ganttbar{Système de pièces}{7}{4}
\ganttbar[color=green]{Fermeture du labo}{9}{1}
\ganttbar{Étude utilisateur (labo)}{11}{1}
\ganttbar{Rapport / Slides}{11}{2}
\ganttmilestone{Fin du stage}{12}
\end{gantt}
\caption{Planning du projet}
\end{figure}
\end{landscape}

View File

@ -19,6 +19,8 @@ anchorcolor = blue]{hyperref}
\usepackage{tikz}
\usepackage{pgfplots}
\usepackage{subcaption}
\usepackage{pdflscape}
\usepackage{gantt}
\lstset{language=matlab}
\setlength{\hoffset}{-18pt}

View File

@ -1 +1,38 @@
\part{Présentation du projet, contexte et objectifs}
\section{Contexte}
\paragraph{}
Ce travail s'inscrit dans la progression des anciens travaux de Vincent
Charvillat et d'Axel Carlier sur la prédicabilité du comportement d'un
utilisateur en interaction avec un lecteur vidéo. L'objectif était alors de
proposé un modèle de préchargement plus intelligent que le préchargement
linéaire qui est actuellement implémenté sur les sites de streaming vidéo comme
YouTube.
\paragraph{}
L'idée était de suggérer à l'utilisateur des zones intéressantes dans la vidéo
de sorte à biaiser son comportement. Lorsqu'un utilisateur parcourt une vidéo,
il peut sauter des passages et aller directement à d'autres. En ajoutant des
recommandations sur une barre de navigation, on peut espérer que l'utilisateur
clique sur ces zones intéressantes plutôt qu'ailleurs. Plutôt que de précharger
toute la vidéo linéairement, on peut donc précharger les zones intéressantes et
réduire la latence lorsque l'utilisateur va sauter une partie pour aller vers
une zone recommandée.
\section{Objectifs}
\paragraph{}
Ce projet a pour but d'appliquer les idées citées précédemment dans le contexte
de la navigation et du streaming de modèles 3D. Nous avons donc développé une
interface permettant de naviguer dans une scène 3D de manière plus simples que
les interfaces actuellement existantes (et qui sont, le plus souvent, utilisées
dans le monde du jeux vidéo). En effet, de nombreuses personnes n'ont pas
l'habitude de jouer aux jeux vidéo, et peinent à utiliser les interfaces
actuelles.
\paragraph{}
L'objectif est de faciliter la navigation grâce à un système de recommandations
qui permettent à l'utilisateur de se déplacer facilement d'un point de vue
intéressant à un autre, quitte à devoir utiliser les interactions classiques
s'il désire un point de vue plus précis. En supposant que l'utilisateur soit
susceptible de sauter vers les vues recommandées, on peut précharger des
parties d'un modèle plutôt que d'autres de sorte à éviter que l'utilisateur se
retrouve dans une zone de la scène qui n'est pas encore chargée.