mirror of
https://github.com/moparisthebest/Simba
synced 2025-01-09 04:38:01 -05:00
More doc.
This commit is contained in:
parent
5f6a767750
commit
c914269e35
@ -4,4 +4,5 @@ digraph DTM {
|
||||
DTM -> Tolerances
|
||||
DTM -> "Area Sizes"
|
||||
DTM -> "Area Shapes"
|
||||
DTM -> "Point Match"
|
||||
}
|
||||
|
@ -13,6 +13,11 @@
|
||||
% For correct line-breaking.
|
||||
\usepackage[english]{babel}
|
||||
|
||||
% Syntax highlighting.
|
||||
\usepackage{listings}
|
||||
|
||||
\usepackage{color}
|
||||
|
||||
\setlength{\parskip}{1.5ex}
|
||||
|
||||
\begin{document}
|
||||
@ -20,6 +25,13 @@
|
||||
\author{Merlijn Wajer (Wizzup?) \and Raymond van Veneti\"{e} (mastaraymond)}
|
||||
\maketitle
|
||||
\tableofcontents
|
||||
\lstset{language=Pascal}
|
||||
\definecolor{lightgray}{rgb}{0.9,0.9,0.9}
|
||||
\definecolor{mycommentcol}{rgb}{0.2,0.2,0.8}
|
||||
|
||||
\lstset{morecomment=[l][\color{mycommentcol}]{//},
|
||||
morecomment=[s][\color{mycommentcol}]{/*}{*/}}
|
||||
\lstset{backgroundcolor=\color{lightgray}}
|
||||
|
||||
\chapter{Foreword}
|
||||
|
||||
@ -120,16 +132,131 @@ and dtm's in TMBitmaps and TMDTM.
|
||||
|
||||
\section{TMDTM}
|
||||
|
||||
\subsection{The DTM}
|
||||
|
||||
DTM is shorthand for Deformable Template Model. \\
|
||||
|
||||
\emph{``DTM'' is the term used in SCAR. If it is actually a Deformable Template
|
||||
Model is definately debateable; but for now we will stick to ``DTM''.} \\
|
||||
|
||||
A DTM is in my view just a relatively simple way of defining a relationship
|
||||
between several points. Each of these points have a relative offset to each
|
||||
other, and may differ in colour, tolerance, area size and shape.
|
||||
A DTM consists out of one \textbf{Main Point}, and several \textbf{Sub Points}
|
||||
The structure of a DTM looks like this:
|
||||
|
||||
\begin{figure}[ht]
|
||||
\includegraphics[scale=0.4]{Pics/DTM}
|
||||
\caption{Structure of a DTM.}
|
||||
\end{figure}
|
||||
|
||||
Where each point in a DTM has a colour, tolerance, area size and area shape
|
||||
entity. The main point's ``point'' is typically $ (0, 0) $, and all the
|
||||
sub point points are arelative to the main point. ``Point Match'' defines if a point should match or should \textbf{Not} match.
|
||||
|
||||
Of course, the actual representation in Pascal is slightly different:
|
||||
|
||||
|
||||
\begin{lstlisting}
|
||||
pDTM = record
|
||||
l: Integer;
|
||||
p: TPointArray;
|
||||
c, t, asz, ash: TIntegerArray;
|
||||
bp: Array Of Boolean;
|
||||
n: String;
|
||||
end;
|
||||
\end{lstlisting}
|
||||
|
||||
\subsubsection{DTM Example}
|
||||
|
||||
If one was to create his own DTM, he\footnote{Or she} would first have to
|
||||
think of a useful DTM structure.
|
||||
|
||||
Say:
|
||||
$$ MainPoint = (123, 456) $$
|
||||
$$ SubPoint_1 = (122, 460) $$
|
||||
$$ SubPoint_2 = (120, 450) $$
|
||||
|
||||
Then we could create the following pDTM structure:
|
||||
|
||||
\begin{lstlisting}
|
||||
// Give dtm.p a length of three.
|
||||
// Mainpoint
|
||||
dtm.p[0] = Point(123, 456);
|
||||
|
||||
// Subpoints
|
||||
dtm.p[1] = Point(122, 460)
|
||||
dtm.p[2] = Point(120, 450)
|
||||
\end{lstlisting}
|
||||
|
||||
Note that we do not include other variables, such as colour, tolerance, area
|
||||
size and area shape; but they should be handled in a similar manner.
|
||||
|
||||
However, this code is not very clear about the relation between the DTM's
|
||||
points. Better would be to write:
|
||||
|
||||
\begin{lstlisting}
|
||||
// Give dtm.p a length of three.
|
||||
// Mainpoint
|
||||
dtm.p[0] = Point(0, 0);
|
||||
|
||||
// Subpoints
|
||||
dtm.p[1] = Point(-1, 4) // 122 - 123 = -1, 460 - 456 = 4
|
||||
dtm.p[2] = Point(-3, -6) // 120 - 123 = -3, 450 - 456 = -6
|
||||
\end{lstlisting}
|
||||
|
||||
As you can see it is perfectly valid to use negative points.
|
||||
|
||||
\subsubsection{Color and Tolerance}
|
||||
|
||||
The colour value of a point in a DTM is just a RGB integer value.
|
||||
Black = 0, Red = 255, White = 16777215, et cetera.
|
||||
|
||||
The value tolerance decides if a colour is similar enough to the given
|
||||
colour; if this is the case, we say that the colours \textbf{matched}.
|
||||
|
||||
With no Area Size and Area Shape specified\footnote{Read: with Area
|
||||
Size = 0 and Area Shape = Rectangle} we say that a DTM matches if for each
|
||||
point in the DTM, the colour at the relative point matches the colour in dtm
|
||||
with the given tolerance.
|
||||
|
||||
$$ \forall p \in P, \forall t \in Tol, \forall c \in Col : T(C(p), c) \leq t
|
||||
$$
|
||||
|
||||
With C() defining the colour at the given point, and T() defining the tolerance
|
||||
between the two given colours.
|
||||
|
||||
\subsubsection{Area Size and Shape}
|
||||
|
||||
Area Size and Shape add that nifty extra functionality to DTM's.
|
||||
\textbf{Area Size} defines the area that should all match the colour
|
||||
with the given tolerance. \\
|
||||
\textbf{Area Shape} is currently not implemented, mainly because
|
||||
we haven't found a good use for area shapes.
|
||||
|
||||
\subsection{How does TMDTM fit in?}
|
||||
|
||||
The TMDTM class is a DTM manager. It provides methods to add, store, load
|
||||
and free DTM's. It has a few other features. One of it's other features
|
||||
is keeping track of what DTMs are unfreed. It can also, for example help you
|
||||
find a bug in your code, by printing out information of the DTM that you forgot to free.
|
||||
You can also give names to DTMs, which eases debugging even further.
|
||||
|
||||
If you try to access an invalid DTM, the MML will throw an exception.
|
||||
|
||||
\section{TMOCR}
|
||||
|
||||
\section{TMFiles}
|
||||
|
||||
\section{Finding algorithms}
|
||||
|
||||
\section{Portability to other languages}
|
||||
|
||||
Since it is near to impossible to simply import the MML classes, we are
|
||||
currently writing a library called `libmml', which offers a non-OOP wrapper
|
||||
around the MML library.
|
||||
|
||||
|
||||
\chapter{Simba - General}
|
||||
% Loading/Saving
|
||||
% Auto updating
|
||||
|
@ -223,7 +223,7 @@ class, just use the \textbf{CopyClientToBitmap} functions.
|
||||
\section{TMDTM}
|
||||
|
||||
The TMDTM class is a DTM manager. It provides methods to add, store, load
|
||||
and free DTM's. It has a few few other features. One of it's other features
|
||||
and free DTM's. It has a few other features. One of it's other features
|
||||
is keeping track of what DTMs are unfreed. It can, for example, help you find
|
||||
a bug in your code, by printing out information of the DTM that you forgot to
|
||||
free. You can also give names to DTMs, which eases debugging even further.
|
||||
|
@ -3,17 +3,20 @@
|
||||
\usepackage{url}
|
||||
\usepackage{amsmath}
|
||||
\begin{document}
|
||||
\title{Mufasa Intro}
|
||||
\title{Simba Intro}
|
||||
\author{Merlijn Wajer \and Raymond van Veneti\"{e}}
|
||||
\maketitle
|
||||
\tableofcontents
|
||||
|
||||
\chapter{Introduction}
|
||||
|
||||
\emph{This is the official Mufasa Documentation.
|
||||
The main purpose of this document is to provide a clear view on Mufasa's
|
||||
\emph{This is the official Simba Documentation.}
|
||||
|
||||
The main purpose of this document is to provide a clear view on Simba's
|
||||
philosophy and features.
|
||||
|
||||
interal structure. This guide is aimed at developers and other persons
|
||||
interested in project Mufasa.}
|
||||
interested in project Mufasa.
|
||||
|
||||
\section{What is Mufasa?}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user