From 8667cc6e8c2d68dab5818666ac0f1385b517699e Mon Sep 17 00:00:00 2001 From: Thomas FORGIONE Date: Tue, 15 Sep 2015 17:32:55 +0200 Subject: [PATCH] Commit --- rapport/Makefile | 3 + rapport/gantt.sty | 263 +++++++++++++++++++++++++++++++++++++++ rapport/gestion.tex | 32 ++++- rapport/main.tex | 2 + rapport/presentation.tex | 37 ++++++ 5 files changed, 336 insertions(+), 1 deletion(-) create mode 100644 rapport/gantt.sty diff --git a/rapport/Makefile b/rapport/Makefile index 156449d..45e7379 100644 --- a/rapport/Makefile +++ b/rapport/Makefile @@ -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 diff --git a/rapport/gantt.sty b/rapport/gantt.sty new file mode 100644 index 0000000..2ac637a --- /dev/null +++ b/rapport/gantt.sty @@ -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=]{label}{start} - Create a gantt milestone using a diamond +% usage: \ganttmilestonecon[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[] with \ganttbar[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=,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=,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=]{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=]{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 diff --git a/rapport/gestion.tex b/rapport/gestion.tex index 02f6c9f..ab0bd94 100644 --- a/rapport/gestion.tex +++ b/rapport/gestion.tex @@ -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} diff --git a/rapport/main.tex b/rapport/main.tex index a30d121..af294fc 100644 --- a/rapport/main.tex +++ b/rapport/main.tex @@ -19,6 +19,8 @@ anchorcolor = blue]{hyperref} \usepackage{tikz} \usepackage{pgfplots} \usepackage{subcaption} +\usepackage{pdflscape} +\usepackage{gantt} \lstset{language=matlab} \setlength{\hoffset}{-18pt} diff --git a/rapport/presentation.tex b/rapport/presentation.tex index 0e4e815..1eab30a 100644 --- a/rapport/presentation.tex +++ b/rapport/presentation.tex @@ -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.