bachelor-project-report/bachelorproject.tex
2023-08-02 12:08:41 +02:00

119 lines
3.3 KiB
TeX

\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}