mirror of https://github.com/CGAL/cgal
89 lines
4.3 KiB
TeX
89 lines
4.3 KiB
TeX
\subsection{Overview \label{sec:overview}}
|
|
|
|
The package is structured around five main concepts. See
|
|
Figure~\ref{fig:kds_uml_usage} for a schematic of how a kinetic data
|
|
structure interacts with the various parts. The main concepts are
|
|
|
|
% MK:: why is there a + before less_x_1_object() ?
|
|
% Another thing is that I am not really sure that we really want this
|
|
% figure to appear here. I prefer to have it at the end as it was before.
|
|
% I leave it up to you to decide this.
|
|
\begin{figure}
|
|
\begin{ccTexOnly}
|
|
\begin{center}
|
|
\includegraphics[scale=.8,viewport=0 18 470 250, clip]{Kinetic_data_structures/sort_usage_pct}
|
|
\end{center}
|
|
\end{ccTexOnly}
|
|
\begin{ccHtmlOnly}
|
|
<img src="./sort_usage_pct.gif" align=middle alt="Sort Usage"><br>
|
|
\end{ccHtmlOnly}
|
|
\caption{\label{fig:kds_uml_usage} The figure shows the interaction between
|
|
the \ccc{Kinetic::Sort<Traits, Visitor>} kinetic data structure and
|
|
the various pieces of our package. Other, more complicated, kinetic
|
|
data structures will also use the \ccc{Kinetic::InstantaneousKernel} in order
|
|
to insert/remove geometric primitives and audit
|
|
themselves. \ccc{Kinetic::Sort<Traits, Visitor>} uses the sorting
|
|
functionality in STL instead.}
|
|
\end{figure}
|
|
|
|
\begin{itemize}
|
|
|
|
\item the \ccc{Kinetic::Simulator}. Models of this concept process events in
|
|
the correct order and audit kinetic data structures. There should be
|
|
one instance of a model of this concept per simulation.
|
|
\item the \ccc{Kinetic::Kernel}. The structure of a
|
|
\ccc{Kinetic::Kernel} is analogous to the static \cgal\ (i.e.,
|
|
non-kinetic) kernels in that it defines a set of primitives and
|
|
functors which generate certificates from the primitives.
|
|
\item the \ccc{Kinetic::ActiveObjectsTable}. Models of this concept hold a
|
|
collection of kinetic primitives in a centralized manner. This
|
|
structure centralizes management of the primitives in order to
|
|
properly disseminate notifications when trajectories change, new
|
|
primitives are added or primitives are deleted.
|
|
There is generally one instance of a model of this concept per simulation.
|
|
\item the \ccc{Kinetic::InstantaneousKernel}. Models of this concept allow
|
|
existing non-kinetic \cgal\ data structures to be used on a snapshot
|
|
of kinetic data. As a result, pre-existing static structures can be
|
|
used to initialize and audit kinetic data structures.
|
|
\item the \ccc{Kinetic::FunctionKernel}. This concept is the computational
|
|
kernel of our framework. Models of this concept are responsible for
|
|
representing, generating and manipulating the motional and
|
|
certificate functions and their roots. It is this concept that
|
|
provides the kinetic data structures framework with the necessary
|
|
algebraic operations for manipulating event times. The
|
|
\ccc{Kinetic::FunctionKernel} is discussed in detail in Section
|
|
\ref{sec:kds_algebraic_kernel}.
|
|
\end{itemize}
|
|
|
|
For simplicity, we added an additional concept, that of
|
|
\ccc{Kinetic::SimulationTraits}, which wraps together a particular set of
|
|
choices for the above concepts and is responsible for creating
|
|
instances of each of the models. The addition of this concept reduces
|
|
the choices the user has to make to picking the dimension of the
|
|
ambient space and choosing between exact and inexact computations. The
|
|
model of \ccc{Kinetic::SimulationTraits} creates an instance each of the
|
|
\ccc{Kinetic::Simulator} and \ccc{Kinetic::ActiveObjectsTable}. Handles for
|
|
these instances as well as instances of the \ccc{Kinetic::Kernel}
|
|
and \ccc{Kinetic::InstantaneousKernel} can be requested from the simulation
|
|
traits class. Both the \ccc{Kinetic::Kernel} and the
|
|
\ccc{Kinetic::Simulator} use the \ccc{Kinetic::FunctionKernel}, the former to find
|
|
certificate failure times and the later to operate on them. For
|
|
technical reasons, each supplied model of \ccc{Kinetic::SimulationTraits} also
|
|
picks out a particular type of kinetic primitive which will be used by
|
|
the kinetic data structures.
|
|
|
|
|
|
% Both the \object{KineticKernel}
|
|
%and the \object{Simulator} query the \object{FunctionKernel} for
|
|
%constructing certificate functions, as well as getting their failure
|
|
%times.
|
|
|
|
Surrounding these central set of concepts, there are a large number of
|
|
smaller concepts, the models of which act either as glue between
|
|
objects or as helper classes. The key smaller concepts will be described along
|
|
with the appropriate central concepts in the corresponding subsections
|
|
of Section \ref{sec:kds_architecture}.
|
|
|
|
|
|
|