\documentclass{usiinfbachelorproject}

\usepackage[]{caption}
\usepackage[]{url}
\usepackage[]{subcaption}
\usepackage[]{float}
\usepackage[]{multicol}
\usepackage{mathtools}
\usepackage[]{listings}

\usepackage{tikz}
\usepackage{tkz-euclide}
\usetikzlibrary{external,shapes,through,arrows}

\tikzexternalize[prefix=figures/]
\tikzstyle{none}=[]
\input{./tikzs/styles.tikzstyles}

\tikzset{>=stealth}

\pgfdeclarelayer{nodelayer}
\pgfdeclarelayer{edgelayer}
\pgfsetlayers{edgelayer,nodelayer,main}


\lstset{language=C++,
	basicstyle=\ttfamily,
	keywordstyle=\color{blue}\ttfamily,
	stringstyle=\color{red}\ttfamily,
	commentstyle=\color{green}\ttfamily,
	morecomment=[l][\color{magenta}]{\#},
	emph={std, vector, vec2d, polygon, collision},
	emphstyle=\color{orange}\ttfamily,
	numbers=left,
	morekeywords={uint},
	numberstyle=\footnotesize,
	numbersep=5pt,
	frame=lines,
	% breaklines=true,
	% breaklines=true,
	% postbreak=\raisebox{0ex}[0ex][0ex]{\space\ensuremath{\hookrightarrow}},
}

\graphicspath{{../figures/}{./figures/}}

\newcommand*{\vv}[1]{\overrightarrow{#1}}
\newcommand*{\figref}[1]{\figurename~\ref{#1}}

\captionsetup{labelfont={bf}}
\newcommand{\diff}{\mathop{}\!\mathrm{d}}

\author{Arnaud Fauconnet}

\title{From Flying Balls to Colliding Polygons}
\subtitle{2D Physics Engine: Rigid Body Simulation}
\versiondate{\today}

\begin{committee}
	\advisor[Universit\`a della Svizzera Italiana,
		Switzerland]{Prof.}{Antonio}{Carzaniga}
\end{committee}

\newcommand{\inputtikz}[2][1]{
	\resizebox{#1 \textwidth}{!}{
		\tikzsetnextfilename{#2}
		\input{../tikzs/#2.tikz}
	}
}

\abstract {Physics engines are a fun and interesting way to learn
  about a the laws of physics, as well as computer science.  They
  provide a real-time simulation of common physical phenomena, and
  therefore illustrate theoretical concepts such as the equations that
  dictate the motion of objects, The goal of this project was to
  extend an existing physics engine built for demonstration purposes.
  This engine was initially designed and developed to simulate
  circular objects (``balls'') in 2D. With this project, we intended
  to extend this engine to also simulate arbitrary polygons, again in
  a physically accurate way. The main technical challenges of the
  project is therefore the correct simulation of the dynamics of
  rigid, polygonal objects.  In particular, we developed a model of
  polygonal rigid objects; we implemented a simulation of their
  inertial motion, possibly in the presence of a constant force field
  such as gravity; we detect collisions between objects; we compute
  and then simulate the dynamic effects of collisions.  The
  simulations are animated and displayed in real-time.  It is also
  therefore crucial that the simulation code be efficient to obtain
  smooth animations.}

\counterwithin{figure}{section}
\counterwithin{equation}{section}

\usepackage{subfiles} % Best loaded last in the preamble

\begin{document}
\maketitle
\tableofcontents
\newpage


\subfile{./sections/intro.tex}
\newpage
\subfile{./sections/tech_background.tex}
\newpage
\subfile{./sections/theoretical_background.tex}
\newpage
\subfile{./sections/implementation.tex}
\newpage
\subfile{./sections/conclusion.tex}
\newpage

%%%%%
\bibliographystyle{unsrt}
\bibliography{references}
\newpage
\subfile{./sections/appendix.tex}

\end{document}
