blob: ca839ea4fca3ce2a36aed55c445e1191638e3b07 [file] [log] [blame]
%%% Build instructions
%%% pdflatex -shell-escape ceres && bibtex ceres && pdflatex -shell-escape ceres && pdflatex -shell-escape ceres
\documentclass[11pt,letterpaper,oneside]{memoir}
\usepackage{fouriernc}
\usepackage[T1]{fontenc}
\usepackage{minted,amsmath,amssymb,amsthm,url,booktabs}
\usepackage[pdftex]{graphicx}
\usepackage[sort&compress]{natbib}
\usepackage[breaklinks=true,letterpaper=true,colorlinks,bookmarks=false]{hyperref}
\usepackage{algorithm}
\usepackage{algorithmic}
% page dimensions
\addtolength{\textwidth}{1.5in}
\addtolength{\oddsidemargin}{-0.75in}
\addtolength{\evensidemargin}{-0.75in}
\addtolength{\spinemargin}{-0.75in}
\addtolength{\foremargin}{-0.75in}
\setlength{\parindent}{0.0in}
\setlength{\parskip}{0.12in}
% Our pagestyle
\copypagestyle{ceres}{headings}
\makeevenhead{ceres}{\thepage}{}{\scshape\rightmark}
\makeoddhead{ceres}{\scshape\rightmark}{}{\thepage}
%% ceres chapter style
\makechapterstyle{ceres}{%
\renewcommand{\chapterheadstart}{}%
\renewcommand{\printchaptername}{}%
\renewcommand{\chapternamenum}{}%
\renewcommand{\printchapternum}{}%
\renewcommand{\afterchapternum}{}%
\renewcommand{\printchaptertitle}[1]{%
\raggedright\Large\scshape\MakeLowercase{##1}}%
\renewcommand{\afterchaptertitle}{%
\vskip\onelineskip \hrule\vskip\onelineskip}%
}%
\renewcommand{\cftchapterfont}{\normalfont}%
\renewcommand{\cftchapterpagefont}{\normalfont}%
\renewcommand{\cftchapterpresnum}{\bfseries}%
\renewcommand{\cftchapterleader}{}%
\renewcommand{\cftchapterafterpnum}{\cftparfillskip}%
%% Section title style
\setsecheadstyle{\raggedright\scshape\MakeLowercase}%
\setbeforesecskip{-\onelineskip}%
\setaftersecskip{\onelineskip}%
%% Subsection title style
\setsubsecheadstyle{\sethangfrom{\noindent ##1}\raggedright\itshape}%
\setbeforesubsecskip{-\onelineskip}%
\setaftersubsecskip{\onelineskip}%
\captiontitlefont{\small\sffamily}%
\let\caption\legend
\title{\Huge\scshape
\MakeLowercase{Ceres Solver: Tutorial \& Reference}
}
\author{
\scshape\MakeLowercase{Sameer Agarwal} \\ \texttt{sameeragarwal@google.com}
\and
\scshape\MakeLowercase{Keir Mierle} \\ \texttt{ keir@google.com}
}
\checkandfixthelayout
\pagestyle{ceres}
\newcommand{\ceres}{{Ceres }}
\newcommand{\reals}{\mathbb{R} }
\def\eg{\emph{e.g. }}
\def\ie{\emph{i.e. }}
\newcommand{\glog}{\texttt{google-glog}}
\newcommand{\gflags}{\texttt{gflags}}
\newcommand{\eigen}{\texttt{Eigen3}}
\newcommand{\suitesparse}{\texttt{SuiteSparse}}
\newcommand{\cholmod}{\texttt{CHOLMOD}}
\newcommand{\amd}{\texttt{AMD}}
\newcommand{\colamd}{\texttt{COLAMD}}
\newcommand{\lapack}{\texttt{LAPACK}}
\newcommand{\blas}{\texttt{BLAS}}
\newcommand{\denseschur}{\texttt{DENSE\_SCHUR}}
\newcommand{\sparseschur}{\texttt{SPARSE\_SCHUR}}
\newcommand{\iterativeschur}{\texttt{ITERATIVE\_SCHUR}}
\newcommand{\cmake}{\texttt{cmake}}
\newcommand{\protobuf}{\texttt{protobuf}}
\settocdepth{chapter}
\begin{document}
\chapterstyle{ceres}
\maketitle
\thispagestyle{empty}
\newpage
\pagestyle{ceres}
\tableofcontents
\newpage
\chapter{A Note to the Reader}
Building this pdf from source requires a relatively recent installation of \texttt{LaTeX}~\footnote{\url{http://www.tug.org/texlive/}}, \texttt{minted.sty}\footnote{\url{http://code.google.com/p/minted/}} and \texttt{pygments}\footnote{\url{http://pygments.org/}}.
Despite our best efforts, this manual remains a work in progress and the source code for Ceres Solver remains the ultimate reference.
\input{changes}
\input{introduction}
\input{build}
%% Tutorial
\part{Tutorial}
\label{part:tutorial}
\input{nnlsq}
\input{helloworld}
\input{powell}
\input{curvefitting}
\input{bundleadjustment}
%% Reference
\part{Reference}
\label{part:reference}
\input{reference-overview}
\input{modeling}
\input{solving}
\input{faq}
\input{further}
\bibliographystyle{plain}
\bibliography{ceres}
\end{document}