just testing

This commit is contained in:
Daniel Russel 2006-04-11 07:53:57 +00:00
parent e7306f97d0
commit eaecab2c5f
9 changed files with 138 additions and 56 deletions

3
.gitattributes vendored
View File

@ -625,7 +625,9 @@ Kinetic_data_structures/doc_tex/Kinetic_data_structures_ref/Delaunay_triangulati
Kinetic_data_structures/doc_tex/Kinetic_data_structures_ref/Delaunay_triangulation_visitor_base_3.tex -text
Kinetic_data_structures/doc_tex/Kinetic_data_structures_ref/Enclosing_box_2.tex -text
Kinetic_data_structures/doc_tex/Kinetic_data_structures_ref/Enclosing_box_3.tex -text
Kinetic_data_structures/doc_tex/Kinetic_data_structures_ref/Erase_event.tex -text
Kinetic_data_structures/doc_tex/Kinetic_data_structures_ref/EventLogVisitor.tex -text
Kinetic_data_structures/doc_tex/Kinetic_data_structures_ref/Insert_event.tex -text
Kinetic_data_structures/doc_tex/Kinetic_data_structures_ref/Qt_moving_points_2.tex -text
Kinetic_data_structures/doc_tex/Kinetic_data_structures_ref/Qt_triangulation_2.tex -text
Kinetic_data_structures/doc_tex/Kinetic_data_structures_ref/Qt_widget_2.tex -text
@ -666,7 +668,6 @@ Kinetic_data_structures/doc_tex/Kinetic_framework_ref/EventLogVisitor.tex -text
Kinetic_data_structures/doc_tex/Kinetic_framework_ref/EventQueue.tex -text
Kinetic_data_structures/doc_tex/Kinetic_framework_ref/Function.tex -text
Kinetic_data_structures/doc_tex/Kinetic_framework_ref/FunctionKernel.tex -text
Kinetic_data_structures/doc_tex/Kinetic_framework_ref/Insert_event.tex -text
Kinetic_data_structures/doc_tex/Kinetic_framework_ref/InstantaneousKernel.tex -text
Kinetic_data_structures/doc_tex/Kinetic_framework_ref/Key.tex -text
Kinetic_data_structures/doc_tex/Kinetic_framework_ref/KineticKernel.tex -text

View File

@ -1,10 +1,10 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{Kinetic Data Structures and Sweep Algorithms\label{sec:kds_intro}}
\section{An Overview of Kinetic Data Structures and Sweep Algorithms\label{sec:kds_intro}}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\subsection{Kinetic Data Structures}
%\subsection{Kinetic Data Structures}
Kinetic data structures were first introduced in by Basch et.\ al.\ in
1997~\cite{cgal:bgh-dsmd-97}. The idea stems from the observation that
most, if not all, computational geometry structures are built using
@ -79,7 +79,7 @@ possible. See Section~\ref{sec:kds_instantaneous_kernel} for an example of
where this equivalence is exploited.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{Terms Used\label{sec:kds_terms}}
\subsection{Terms Used\label{sec:kds_terms}}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

View File

@ -1,30 +1,20 @@
\subsection{Overview\label{sec:kds_overview}}
\section{An Overview of the Kinetic Framework\label{sec:kds_overview}}
The kinetic framework 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
The provided kinetic data structures are implemented on top of the
Kinetic framework presented in Chapter~\ref{chapter-kinetic}. It is
not necessary to know the details of the framework, but some
familiarity is useful. Here we presented a quick overview of the
framework.
The framework 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=center 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}
@ -55,22 +45,42 @@ interacts with the various parts. The main concepts are
\ref{sec:kds_algebraic_kernel}.
\end{itemize}
\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=center 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}
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
instances of each of the models. As a user of existing kinetic data
structures, this is the only framework object you will have to
create. 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.
\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}
@ -78,11 +88,5 @@ the kinetic data structures.
%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}.

View File

@ -1,7 +1,7 @@
\section{Provided Kinetic Data Structures\label{sec:kds_provided_kdss}}
\section{Using Kinetic Data Structures\label{sec:kds_provided_kdss}}
Along with the framework, we provide several already implemented kinetic data structures. They currently are
There are five provided kinetic data structures. They are
\begin{description}
\item[\ccc{Kinetic::Sort<Traits, Visitor>}] maintain a list of points
sorted by x-coordinate.

View File

@ -1,4 +1,4 @@
\subsection{Using a provided kinetic data structure \label{sec:kds_sort_example}}
\subsection{A Simple Example \label{sec:kds_sort_example}}
Using a kinetic data structure can be as simple as the following:
@ -44,6 +44,8 @@ Section~\ref{sec:kds_sweepline_example}.
%\subsection{Constructing Primitives}
%\label{sec:kds_constructing_primitives}
\subsection{Creating Kinetic Primitives}
One key part of the framework not shown is how to create kinetic
primitives (rather than just reading them in from a file). There are
two ways to construction the necessary motion functions (which are

View File

@ -1,20 +1,21 @@
\subsection{A Sweepline Algorithm\label{sec:kds_sweepline_example}}
\subsection{Extending Kinetic Data Structures\label{sec:kds_sweepline_example}}
Here we present a simple example that uses the kinetic data structures
framework to implement a sweepline to compute the arrangement of
x-monotone algebraic curves in the plane. The example builds on top of
the \ccc{Kinetic::Sort<Traits, Visitor>} kinetic data structure, using a visitor
to keep track of changes to the sorted order and newly inserted
points. To see an example using this kinetic data structure read the
example at examples/Kinetic\_data\_structures/sweepline.C.
Here we present a simple example that uses the
\ccc{Kinetic::Sort<Traits, Visitor>} kinetic data structure to compute
an arrangement of algebraic curves. It wraps the sorting data
structure and uses a visitor to monitor changes and map them to
corresponding features in the arrangement. To see an example using
this kinetic data structure read the example at
examples/Kinetic\_data\_structures/sweepline.C.
First we define the visitor class. An object of this type is passed to
the \ccc{Kinetic::Sort} data structure and turns events into calls on
the arrangement structure. This class has to be handled externally
since the arrangement will inherit from the sorting structure.
the \ccc{Kinetic::Sort<Traits, Visitor>} data structure and turns
events into calls on the arrangement structure. This class has to be
defined externally since the arrangement will inherit from the sorting
structure.
\begin{ccExampleCode}
template <class Arrangement>
@ -38,7 +39,7 @@ struct Arrangement_visitor: public Kinetic::Sort_visitor_base
\end{ccExampleCode}
Now we define the actual kinetic data structure.
Now we define the actual arrangement data structure.
\begin{ccExampleCode}
@ -111,6 +112,9 @@ public:
};
\end{ccExampleCode}
Finally, we have to set everything up. To do this we use some special
event classes: \ccc{Kinetic::Insert_event<>}
%%% Local Variables:
%%% mode: latex
%%% TeX-master: t

View File

@ -0,0 +1,71 @@
% +------------------------------------------------------------------------+
% | Reference manual page: Moving_object_inserter.tex
% +------------------------------------------------------------------------+
% | 20.03.2005 Author
% | Package: Kinetic_data_structures
% |
\RCSdef{\RCSMovingobjectinserterRev}{$Id: Insert_event.tex 29476 2006-03-14 01:51:03Z drussel $}
\RCSdefDate{\RCSMovingobjectinserterDate}{$Date: 2006-03-14 02:51:03 +0100 (Tue, 14 Mar 2006) $}
% |
%%RefPage: end of header, begin of main body
% +------------------------------------------------------------------------+
\begin{ccRefClass}{Kinetic::Insert_event<ActiveObjectsTable>} %% add template arg's if necessary
%% \ccHtmlCrossLink{} %% add further rules for cross referencing links
%% \ccHtmlIndexC[class]{} %% add further index entries
\ccDefinition
This event inserts a point into the \ccc{ActiveObjectsTable} when it
is processed.
\ccInclude{CGAL/Kinetic/Insert_event.h}
\ccIsModel
\ccc{Kinetic::Simulator::Event}
\ccCreation
\ccCreationVariable{i} %% choose variable name
\ccConstructor{Insert_event(ActiveObjectsTable::Data o,
ActiveObjectsTable::Handle t);}{Insert the object o, into the table
t when processed.}
\ccSeeAlso
\ccc{Kinetic::ActiveObjectsTable},
\ccc{Kinetic::Active_objects_vector<MovingObject>}.
\ccExample
\begin{ccExampleCode}
typedef CGAL::Kinetic::Exact_simulation_traits_2 Simulation_traits;
typedef Simulation_traits::Kinetic_kernel::Point_2 Moving_point_2;
typedef CGAL::Kinetic::Insert_event<Simulation_traits::Active_points_2_table> Insert_event;
typedef CGAL::Kinetic::Delaunay_triangulation_2<Simulation_traits> KDel;
Simulation_traits tr;
KDel kdel(tr);
Moving_point_2 mp(Moving_point_2::NT(0),
Moving_point_2::NT(0));
tr.simulator_handle()->new_event(Simulation_traits::Simulator::Time(3),
Insert_event(mp,
tr.active_points_2_table_handle()));
\end{ccExampleCode}
\end{ccRefClass}
% +------------------------------------------------------------------------+
%%RefPage: end of main body, begin of footer
% EOF
% +------------------------------------------------------------------------+

View File

@ -2,7 +2,7 @@
\begin{ccPkgDescription}{Kinetic Data Structures}
\ccPkgSummary{
Kinetic data structures allow combinatorial structures to be
Kinetic data structures allow combinatorial geometric structures to be
maintained as the primitives move. The package provides a framework to
ease implementing and debugging kinetic data structures. The package
supports exact or inexact operations on primitives which move along