minor changes

This commit is contained in:
Daniel Russel 2006-03-12 07:28:13 +00:00
parent 3fd1aba9ac
commit 8f5fff9bfd
40 changed files with 347 additions and 141 deletions

View File

@ -20,7 +20,7 @@
This container holds a set of objects of a particular type. It creates
notifications using the standard \ccc{ulti_listener<Interface>}
notifications using the standard \ccc{Multi_listener<Interface>}
interface when a primitive changes or is added or deleted. Objects
which are listening for events can then ask which primitives changed.
@ -62,7 +62,7 @@ allow you to iterate through the objects in the set \ccc{Foo}.
\ccMethod{Data operator[](Key key) const;}{Access the object referenced by the key.}
\ccMethod{Data at(Key key) const;}{Access the object referencd by the key.}
\ccMethod{Data at(Key key) const;}{Access the object referenced by the key.}
\ccMethod{void set_is_editing(bool is_editing);}{Set the editing state of
the object. A notification is sent when the editing state is set to
@ -71,7 +71,7 @@ allow you to iterate through the objects in the set \ccc{Foo}.
\ccMethod{bool is_editing() const;}{Access the editing state.}
\ccMethod{void set(Key key, Moving_object object);}{This method changes
\ccMethod{void set(Key key, Data object);}{This method changes
the motion of one moving object. The position at the current time
should not be different from the previous current position. However,
at the moment I do not check this as there is no reference to time
@ -99,7 +99,7 @@ allow you to iterate through the objects in the set \ccc{Foo}.
\ccSeeAlso
\ccc{Multi_listener<Interface>}.
\ccc{Multi_listener<Interface>},
\ccc{Kinetic::Active_objects_listener_helper<ActiveObjectsTable, KDS>}

View File

@ -28,7 +28,7 @@ to remove all reference counts for the table or to call \ccc{clear()}.
\ccIsModel
Kinetic::ActiveObjectsTable
\ccc{Kinetic::ActiveObjectsTable}

View File

@ -24,7 +24,7 @@ needed for Delaunay triangulations and regular triangulations.
For technical reasons, the user must pick out one particular type of
primitive to use when instantiating a model. For example, if the user
passes a model of \ccc{Kinetic::Active_objects_vector} with a
passes a model of \ccc{Kinetic::Active_objects_vector<Data, Object>} with a
\ccc{Kinetic::Kernel::Point_2} as the kinetic primitive, then the type
\ccc{Point_2} will be properly defined and the predicates on it will
work properly, but the other predicates will not work.
@ -33,7 +33,7 @@ work properly, but the other predicates will not work.
\ccIsModel
Kinetic::InstantaneousKernel
\ccc{Kinetic::InstantaneousKernel}
\end{ccRefClass}

View File

@ -24,7 +24,7 @@ This class provides a model of \ccc{Kinetic::Kernel} for use with general Cartes
\ccTypes
\ccNestedType{Certificate}{This is a \ccc{Kinetic::Certificate} model.}
\ccNestedType{Certificate}{This is a model of \ccc{Kinetic::Certificate}.}
\ccNestedType{Point_1}{}

View File

@ -23,11 +23,15 @@ This concept is for proxy objects which get notified when a kinetic Delaunay tri
\ccMethod{void create_vertex(Vertex_handle);}{The vertex was just created.}
\ccMethod{void modify_vertex(Vertex_handle);}{Something changed at the vertex.}
\ccMethod{void modify_vertex(Vertex_handle);}{The trajectory of the point at the vertex changed.}
\ccMethod{template <class It> void create_faces(It begin, It end);}{New faces have just been made. The \ccc{value_type} of the iterator is a \ccc{TriangulationDataStructure_2::Face_handle}.}
\ccMethod{template <class It> void create_faces(It begin, It
end);}{New faces have just been made. The \ccc{value_type} of the
iterator is a \ccc{TriangulationDataStructure_2::Face_handle}.}
\ccMethod{template <class It> void remove_faces(It, It);}{The faces in the range are about to be deleted. The \ccc{value_type} of the iterator is a \ccc{TriangulationDataStructure_2::Face_handle}.}
\ccMethod{template <class It> void remove_faces(It, It);}{The faces in
the range are about to be deleted. The \ccc{value_type} of the
iterator is a \ccc{TriangulationDataStructure_2::Face_handle}.}
\ccMethod{void before_flip(Edge);}{The edge is about to be flipped.}
@ -36,7 +40,9 @@ This concept is for proxy objects which get notified when a kinetic Delaunay tri
\ccHasModels
\ccc{Kinetic::Delaunay_triangulation_visitor_base_2}, \ccc{Kinetic::Delaunay_triangulation_recent_edges_visitor_2<Triangulation>}, \ccc{Kinetic::Delaunay_triangulation_event_log_visitor_2}
\ccc{Kinetic::Delaunay_triangulation_visitor_base_2},
\ccc{Kinetic::Delaunay_triangulation_recent_edges_visitor_2<Triangulation>},
\ccc{Kinetic::Delaunay_triangulation_event_log_visitor_2}
\end{ccRefConcept}

View File

@ -23,7 +23,7 @@ This concept is for proxy objects which get notified when a kinetic Delaunay tri
\ccMethod{void create_vertex(Vertex_handle);}{The vertex was just created.}
\ccMethod{void modify_vertex(Vertex_handle);}{Something changed at the vertex.}
\ccMethod{void modify_vertex(Vertex_handle);}{The trajectory of the point at the vertex changed.}
\ccMethod{template <class It> void create_cells(It begin, It end);}{New faces have just been made. The iterator \ccc{value_type} is a \ccc{TriangulationDataStructure_3::Cell_handle}.}

View File

@ -19,23 +19,25 @@
\ccDefinition
The class \ccRefName\ maintains a Delaunay triangulation on top of the
points contained in a \ccc{Kinetic::ActiveObjectsTable}. It has one main method
of interest. \ccc{triangulation()} which returns the triangulation it
is maintaining.
points contained in a \ccc{Kinetic::ActiveObjectsTable}. It has one
main method of interest, \ccc{triangulation()}, which returns the
triangulation it is maintaining.
The class \ccc{Kinetic::Qt_triangulation_2<KineticTriangulation_2,
QtWidget_2, QtMovingPoints_2>} displays a kinetic Delaunay
QtWidget_2, QtMovingPoints_2>} displays a kinetic Delaunay
triangulation using the Qt widget.
This class is a good example of a simple, but non-trivial, kinetic
data structure.
The Triangulation template parameter must use
\ccc{Traits::Instantaneous_kernel} as its geometric traits and the
\ccc{Triangulation::Face} must inherit from \ccc{Kinetic::Delaunay_triangulation_face_base_2<Traits, Base>}.
The \ccc{Triangulation} template parameter must be a model of
\ccc{CGAL::Delaunay_triangulation_2<Traits, Tds>} which uses
\ccc{Traits::Instantaneous_kernel} as its geometric traits and a
\ccc{Tds} whose face inherits from
\ccc{Kinetic::Delaunay_triangulation_face_base_2<Traits, Base>}.
The optional \ccc{Visitor} parameter takes a model of
Kinetic::DelaunayTriangulationVisitor2. Methods on this object will be called
\ccc{Kinetic::DelaunayTriangulationVisitor2}. Methods on this object will be called
whenever the triangulation changes.
\ccInclude{CGAL/Kinetic/Delaunay_triangulation_2.h}
@ -47,16 +49,22 @@ whenever the triangulation changes.
\ccTypes
\ccNestedType{Triangulation}{The type of the Delaunay triangulation it maintains. This is a \ccc{CGAL::Delaunay_triangulation<Traits, Tds>} built using the \ccc{Kinetic::InstantaneousKernel} as the kernel.}
\ccNestedType{Triangulation}{The template argument triangulation.}
\ccNestedType{Visitor}{The template argument for the visitor.}
\ccCreation
\ccCreationVariable{dt} %% choose variable name
\ccConstructor{Delaunay_triangulation_2(Traits tr);}{Maintain the Delaunay triangulation of the points in \ccc{mot}.}
\ccConstructor{Delaunay_triangulation_2(Traits tr);}{Maintain the
Delaunay triangulation of the points in
\ccc{tr.active_points_2_handle()}.}
\ccOperations
\ccMethod{const Triangulation& triangulation();}{Access the triangulation that is maintained. }
\ccMethod{const Triangulation& triangulation() const;}{Access the triangulation that is maintained. }
\ccMethod{Visitor& visitor();}{Access the visitor. }
\ccSeeAlso

View File

@ -27,7 +27,7 @@ a large number of changes to the underlying points to be made at one
time without recomputing the certificates each time a single point
changes.
The class \ccc{Kinetic::Qty_triangulation_3<Traits>}, included as part
The class \ccc{Kinetic::Qt_triangulation_3<Traits>}, included as part
of the demo code, displays a kinetic Delaunay triangulation in three
dimensions using the Coin library.
@ -45,12 +45,14 @@ type.
\ccTypes
\ccNestedType{Triangulation}{The type of the Delaunay triangulation it maintains. This is a \ccc{CGAL::Delaunay_triangulation_3<Traits, Tds>} built using the \ccc{Kinetic::InstantaneousKernel} as the kernel.}
\ccNestedType{Triangulation}{The template argument.}
\ccNestedType{Visitor}{The template argument.}
\ccCreation
\ccCreationVariable{dt} %% choose variable name
\ccConstructor{Delaunay_triangulation_3(Traits tr);}{Maintain the Delaunay triangulation of the points in \ccc{mot}.}
\ccConstructor{Delaunay_triangulation_3(Traits tr);}{Maintain the Delaunay triangulation of the points in \ccc{tr.active_points_3_handle()}.}
\ccOperations
@ -60,6 +62,8 @@ type.
\ccMethod{void set_has_certificates(bool tf);}{This method allows you to control whether the triangulation is maintaining certificates.}
\ccMethod{Visitor& visitor();}{Access the visitor.}
\ccSeeAlso
\ccc{Kinetic::Regular_triangulation_3<Traits, Triangulation, Visitor>},

View File

@ -18,7 +18,7 @@
\ccDefinition
This is the base class for faces used by \ccc{Kinetic::Delaunay_triangulation_3<Traits, Triangulation, Visitor>}.
This is the base class for faces used by \ccc{Kinetic::Delaunay_triangulation_3<Traits, Triangulation, Visitor>::Triangulation}.
\ccInclude{CGAL/Kinetic/Delaunay_triangulation_cell_base_3.h}

View File

@ -19,12 +19,12 @@
\ccDefinition
The concept \ccRefName\ provides a model of
Kinetic::DelaunayTriangulationVisitor2 and \ccc{Kinetic::EventLogVisitor} which logs edge flip events.
\ccc{Kinetic::DelaunayTriangulationVisitor2} and \ccc{Kinetic::EventLogVisitor} which logs edge flip events.
\ccIsModel
Kinetic::DelaunayTriangulationVisitor2, \ccc{Kinetic::EventLogVisitor}
\ccc{Kinetic::DelaunayTriangulationVisitor2}, \ccc{Kinetic::EventLogVisitor}
\ccSeeAlso

View File

@ -19,12 +19,12 @@
\ccDefinition
The concept \ccRefName\ provides a model of
Kinetic::DelaunayTriangulationVisitor3 and \ccc{Kinetic::EventLogVisitor}
which logs edge and facet flip events.
\ccc{Kinetic::DelaunayTriangulationVisitor3} and
\ccc{Kinetic::EventLogVisitor} which logs edge and facet flip events.
\ccIsModel
Kinetic::DelaunayTriangulationVisitor3, \ccc{Kinetic::EventLogVisitor}
\ccc{Kinetic::DelaunayTriangulationVisitor3}, \ccc{Kinetic::EventLogVisitor}
\ccSeeAlso

View File

@ -18,7 +18,9 @@
\ccDefinition
This is the base class for faces used by \ccc{Kinetic::Delaunay_triangulation_2<Traits, Triangulation, Visitor>}.
This is the base class for faces used by the triangulation used in
\ccc{Kinetic::Delaunay_triangulation_2<Traits, Triangulation,
Visitor>}.
\ccInclude{CGAL/Kinetic/Delaunay_triangulation_face_base_2.h}

View File

@ -24,7 +24,7 @@ the most recent change.
\ccIsModel
Kinetic::DelaunayTriangulationVisitor2
\ccc{Kinetic::DelaunayTriangulationVisitor2}
\ccCreation
\ccCreationVariable{a} %% choose variable name
@ -37,7 +37,7 @@ Kinetic::DelaunayTriangulationVisitor2
\ccMethod{iterator begin() const;}{Begin iteration through the recent edges.}
\ccMethod{iterator end() const;}{Begin iteration through the recent edges.}
\ccMethod{iterator end() const;}{End iteration through the recent edges.}
\ccMethod{bool contains(Triangulation::Edge) const;}{Returns true if this edge exists in the set.}

View File

@ -19,12 +19,12 @@
\ccDefinition
The concept \ccRefName\ provides a model of
Kinetic::DelaunayTriangulationVisitor2. You can extend this class if you only
want to implement a few methods from \ccc{Kinetic::DelaunayTriangulationVisitor}2.
\ccc{Kinetic::DelaunayTriangulationVisitor2}. You can extend this class if you only
want to implement a few methods from \ccc{Kinetic::DelaunayTriangulationVisitor2}.
\ccIsModel
Kinetic::DelaunayTriangulationVisitor2
\ccc{Kinetic::DelaunayTriangulationVisitor2}
\ccCreation
\ccCreationVariable{a} %% choose variable name

View File

@ -19,8 +19,8 @@
\ccDefinition
The concept \ccRefName\ provides a model of
Kinetic::DelaunayTriangulationVisitor3. You can extend this class if you only
want to implement a few methods from \ccc{Kinetic::DelaunayTriangulationVisitor}2.
\ccc{Kinetic::DelaunayTriangulationVisitor3}. You can extend this class if you only
want to implement a few methods from \ccc{Kinetic::DelaunayTriangulationVisitor3}.
\ccIsModel

View File

@ -22,8 +22,10 @@ The class \ccRefName\ keeps the points in the simulation inside of a
box. Whenever the points come close to the wall of the box they bounce off of the wall.
Note that, in general, points hit the wall of the box at times which
are not easily represented by number types. In order to handle this,
the \ccRefName\ bounces the points at the nearest easily representable
are not easily represented by standard (rational) number types. The
resulting trajectories would also have non-rational coefficients,
complicating and slowing the simulation. In order to handle this, the
\ccRefName\ bounces the points at the nearest easily representable
time before the point would leave the box.
\ccInclude{CGAL/Kinetic/Enclosing_box_2.h}

View File

@ -19,11 +19,15 @@
\ccDefinition
The class \ccRefName\ keeps the points in the simulation inside of a
box. Whenever the points come close to the wall of the box they bounce off of the wall.
box. Whenever the points come close to the wall of the box they bounce
off of the wall.
Note that, in general, points hit the wall of the box at times which
are not easily represented by number types. In order to handle this,
the \ccRefName\ bounces the points at the nearest easily representable
are not easily represented by standard (rational) number types. The
resulting trajectories would also have non-rational coefficients,
complicating and slowing the simulation. In order to handle this, the
\ccRefName\ bounces the points at the nearest easily representable
time before the point would leave the box.
\ccInclude{CGAL/Kinetic/Enclosing_box_3.h}

View File

@ -26,7 +26,10 @@ scheduling events which will in turn pass them to the
\ccOperations
\ccMethod{void process();}{This method is called when the event occurs, and the time when it occurs is passed in as \ccc{t}. \ccc{Time} is the type defined by the \ccc{Simulator}. This method will only be called once per time this event is scheduled and the event will be removed from the queue immediately afterwards.}
\ccMethod{void process();}{This method is called when the event
occurs. This method will only be called once per time this event is
scheduled and the event will be removed from the queue immediately
afterwards.}
\ccGlobalFunction{std::ostream& operator<<(std::ostream&, Event);}{Write a text description of the event to a standard stream.}
@ -36,7 +39,7 @@ All over the place.
\ccSeeAlso
Kinetic::EventQueue
\ccc{Kinetic::EventQueue}
\ccExample
@ -45,15 +48,19 @@ All of the kinetic data structures provided have models of
sorting kinetic data structure.
\begin{ccExampleCode}
template <class Sort, class Id, class Root_enumerator>
template <class Certificate, class Id, class Root_enumerator>
class Swap_event {
public:
Swap_event(Id o, typename Sort::Pointer sorter,
const Root_enumerator &s): left_object_(o), sorter_(sorter), s_(s){}
Swap_event(Id o, typename Sort::Handle sorter,
const Certificate &s): left_object_(o),
sorter_(sorter),
s_(s){}
void process(){
sorter_->swap(left_object_, s_);
}
Id left_object_; typename Sort::Pointer sorter_; Solver s_;
Id left_object_;
typename Sort::Handle sorter_;
Certificate s_;
};
\end{ccExampleCode}

View File

@ -26,14 +26,18 @@ queue must implement the \ccc{Event} concept.
\ccTypes
\ccNestedType{Key}{The type used to access items in the queue in order to change or delete them.}
\ccNestedType{Key}{The type used to access items in the queue in order
to change or delete them.}
\ccNestedType{Priority}{The priority type for items in the queue. This is typically the same as \ccc{Kinetic::Simulator}::Time}.
\ccNestedType{Priority}{The priority type for items in the queue. This
is typically the same as \ccc{Kinetic::Simulator::Time}}.
\ccCreation
\ccCreationVariable{q} %% choose variable name
\ccConstructor{EventQueue(Priority start, Priority end, int size_hint);}{Construct a queue which will start at time start and run until time end.}
\ccConstructor{EventQueue(Priority start, Priority end, int
size_hint);}{Construct a queue which will start at time start and
run until time end.}
\ccOperations

View File

@ -37,21 +37,29 @@ capability is not needed.
\ccNestedType{Root}{A type representing the roots of a \ccc{Function}.}
\ccNestedType{Root_stack}{A model of \ccc{RootEnumerator}. These objects can be created by calling the \ccc{root_enumerator_object} method with a \ccc{Function} and two (optional) \ccc{Root} objects. The enumerator then enumerates all roots of the function in the open inverval defined by the two root arguments. They optional arguments default to positive and negative infinity. }
\ccNestedType{Root_stack}{A model of \ccc{RootStack}. These objects can be created by calling the \ccc{root_stack_object} method with a \ccc{Function} and two (optional) \ccc{Root} objects. The enumerator then enumerates all roots of the function in the open inverval defined by the two root arguments. They optional arguments default to positive and negative infinity. }
\ccNestedType{Root_enumerator_traits}{The traits for the \ccc{Root_enumerator} class.}
Each of the following types has a corresponding \ccc{type_object} method (not explicitly documented) which takes a \ccc{Function} as an argument.
Each of the following types has a corresponding \ccc{type_object}
method (not explicitly documented) which takes a \ccc{Function} as an
argument.
\ccNestedType{Sign_at}{A functor which returns the sign of a \ccc{Function} at a \ccc{NT} or \ccc{Root}.}
\ccNestedType{Sign_at}{A functor which returns the sign of a
\ccc{Function} at a \ccc{NT} or \ccc{Root}.}
\ccNestedType{Multiplicity}{A functor which returns the multiplicity of roots.}
\ccNestedType{Sign_above}{A functor which returns sign of a function immediately above a root.}
\ccNestedType{Sign_above}{A functor which returns sign of a function
immediately above a root.}
The following functor likewise have a \ccc{type_object} method, but these take arguments other than a \ccc{Function}. The arguments are given below.
The following functor likewise have a \ccc{type_object} method, but
these take arguments other than a \ccc{Function}. The arguments are
given below.
\ccNestedType{Sign_between_roots}{This functor, creation of which requires two \ccc{Root}s, returns the sign of a passed function between the pair of roots.}
\ccNestedType{Sign_between_roots}{This functor, creation of which
requires two \ccc{Root}s, returns the sign of a passed function
between the pair of roots.}
%\ccNestedType{Compare_isolated_roots_in_interval}{This functor, creation of which requires two functions, compares the roots of two functions in an isolating invterval. More specifically, it takes two \ccc{NT}s as an argument. These numbers must isolate a root for each of the functions the functor is constructed with. The functor then returns true if the isolated root of the first function is less than that of the second.}
@ -61,7 +69,7 @@ The following functor likewise have a \ccc{type_object} method, but these take a
%\ccNestedType{Remainder}{Compute the remainder of one \ccc{Functions} divided by another.}
\ccNestedType{Are_negations_object}{Return true of the two functions passed are negations of one another.}
%\ccNestedType{Are_negations_object}{Return true of the two functions passed are negations of one another.}
%\ccNestedType{Sturm_sequence}{This object evaluates the Sturm sequence of two \ccc{Function}s at a \ccc{NT} value. Construction requires two \ccc{Function}s.}
@ -95,7 +103,7 @@ The following methods do not require any arguments to get the functor and take o
%\ccMethod{void foo();}{some member functions}
\ccHasModels
\ccc{POLYNOMIAL::Kernel<RootEnumerator>}, \ccc{POLYNOMIAL::Filtered_kernel<RootEnumerator>}.
\ccc{POLYNOMIAL::Kernel<RootStack>}, \ccc{POLYNOMIAL::Filtered_kernel<RootStack>}.
\ccSeeAlso
@ -105,7 +113,7 @@ Kinetic::RootEnumerator
We provide several models of the concept, which are not documented
separately. The models of \ccc{Kinetic::SimulationTraits} all choose
appropriate models, so the user should have have to pick. However, if
appropriate models. However, if
more control is desired, we here provide examples of how to create the
various supported \ccc{Kinetic::FunctionKernel}.
@ -120,7 +128,7 @@ typedef CGAL::POLYNOMIAL::Kernel<Function, Root_stack> Function_kernel;
A wrapper for \ccc{CORE::Expr} which implements the necessary
operations:
\begin{ccExampleCode}
typedef CGAL::POLYNOMIAL::CORE_kernel Function_kernel;
typedef CGAL::POLYNOMIAL::CORE_kernel Function_kernel;
\end{ccExampleCode}
A function kernel which computes approximations to the roots of the polynomials:

View File

@ -18,28 +18,46 @@
\ccDefinition
This event inserts a point into the \ccc{ActiveObjectsTable} when the event is processed.
This event inserts a point into the \ccc{ActiveObjectsTable} when it
is processed.
\ccInclude{CGAL/Kinetic/Insert_event.h}
\ccIsModel
Kinetic::Event
\ccc{Kinetic::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.}
\ccConstructor{Insert_event(ActiveObjectsTable::Data o,
ActiveObjectsTable::Handle t);}{Insert the object o, into the table
t when processed.}
\ccSeeAlso
Kinetic::ActiveObjectsTable,
\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;
\verb|\ccIncludeExampleCode{Kinetic_data_structures/insert_event.C}|
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}

View File

@ -24,7 +24,7 @@ typically only supports one type of moving object.
Currently, each model is created for one particular type of kinetic
primitive. The primitives are identified by
Kinetic::ActiveObjectsTable::Key objects.
\ccc{Kinetic::ActiveObjectsTable::Key} objects.
\ccTypes

View File

@ -26,13 +26,20 @@ them.
\ccCreationVariable{kk}
\ccTypes
\ccNestedType{Motion_function}{The type which is used to represent coordinates of moving primitives. This is the analog of the CGAL kernel \ccc{RT}.}
\ccNestedType{Certificate}{The type representing the results of predicates. See \ccc{Kinetic::Certificate}.}
\ccNestedType{Function_kernel}{The type of the function kernel used. See \ccc{Kinetic::FunctionKernel}.}
\ccNestedType{Motion_function}{The type which is used to represent
coordinates of moving primitives. This is the analog of the CGAL
kernel \ccc{RT}.}
\ccNestedType{Certificate}{The type representing the results of
predicates. See \ccc{Kinetic::Certificate}.}
\ccNestedType{Function_kernel}{The type of the function kernel used.
See \ccc{Kinetic::FunctionKernel}.}
\ccOperations
\ccMethod{Function_kernel function_kernel_object() const;}{Gets a copy of the function kernel.}
\ccMethod{Function_kernel function_kernel_object() const;}{Gets a copy
of the function kernel.}
\ccCreationVariable{a} %% choose variable name

View File

@ -31,10 +31,10 @@ method on the proxy, passing the type of the notification. The proxy
stores a reference counted pointer to the notifier, ensuring that
there are never any dangling pointers in the system.
The class \ccRefName\ provides base class for listener proxy
objects. An notifier should provide class which uses this base. To use
this base class, implement a class, here called Interface, which
defines a type \ccc{Interface::Notification_type} and a type
The class \ccRefName\ provides base class for listener proxy objects.
A notifier should provide a class which inherits from this base. To
use this base class, implement a class, here called \ccc{Interface},
which defines a type \ccc{Interface::Notification_type} and a type
\ccc{Interface::Notifier_handle}.
The \ccc{Notification_type} is generally an enum with one value for
@ -48,16 +48,17 @@ pointer.
The \ccRefName\ maintains a ref counted pointer to the object
performing notifications. It is registered for notifications on
construction and unregistered on destruction using the function
\ccc{set_listener} on the object providing the notifications. The use
of ref counted pointers means that as long as the notification object
exists, the object providing the notifications must exist, ensuring
that the object providing the notifications is not prematurely
destroyed.
\ccc{set_listener(Listener<Interface>*)} on the object providing the
notifications. The use of ref counted pointers means that as long as
the notification object exists, the object providing the notifications
must exist, ensuring that the object providing the notifications is
not prematurely destroyed.
These objects cannot be copied since the notifier only support one
listener.
listener. If copying and more than one listener are desired, the
\ccc{Multi_listener<Interface>} base class should be used instead.
Boost provides a similar functionality in the Boost.Signal
As a side note, Boost provides a similar functionality in the Boost.Signal
package. However, it is quite a bit more complex (and flexible). This
complexity add significantly to compile time and (although I did not
test this directly), I suspect it is much slower at runtime due to the
@ -95,7 +96,53 @@ writing my own.
\ccExample
\ccIncludeExampleCode{Kinetic_data_structures/listener.C}
Here is a simplier class that provides notifications:
\begin{ccExampleCode}
struct Notifier: public CGAL::Kinetic::Ref_counted<Notifier>
{
public:
Notifier(): data_(0), listener_(NULL){}
struct Listener_interface
{
public:
typedef enum Notification_type {DATA_CHANGED} Notification_type;
typedef Notifier::Handle Notifier_handle;
};
typedef CGAL::Kinetic::Listener<Listener_interface> Listener;
friend class CGAL::Kinetic::Listener<Listener_interface>;
void set_data(int d) {
data_=d;
if (listener_ != NULL) listener_->new_notification(Listener_interface::DATA_CHANGED);
}
protected:
void set_listener(Listener *l) {
listener_= l;
}
Listener* listener() const {return listener_;}
int data_;
Listener *listener_;
};
\end{ccExampleCode}
Now the listener:
\begin{ccExampleCode}
struct My_listener: public Notifier::Listener, public CGAL::Kinetic::Ref_counted<My_listener>
{
typedef Notifier::Listener::Notifier_handle PP;
My_listener(PP p): P(p){}
void new_notification(P::Notification_type nt) {
...
}
};
\end{ccExampleCode}
\end{ccRefClass}

View File

@ -18,7 +18,11 @@
\ccDefinition
The class \ccRefName\ implements a base class for listeners where more than one listener is allowed to subscribe to a notifier. See \ccc{Listener} for full documentation.
The class \ccRefName\ implements a base class for listeners where more
than one listener is allowed to subscribe to a notifier. See
\ccc{Listener} for full documentation. This uses the function calls
\ccc{new_listener()} and \ccc{delete_listener()} to register and
unrester the listener (instead of \ccc{set_listener()}).
\ccInclude{CGAL/Kinetic/Multi_listener.h}

View File

@ -20,6 +20,8 @@
The class \ccRefName\ displays a set of moving points in 2D.
See Section~\ref{sec:delaunay_2_example} for an example using this class.
\ccInclude{CGAL/Kinetic/IO/Qt_moving_points_2.h}
@ -35,11 +37,6 @@ The class \ccRefName\ displays a set of moving points in 2D.
\ccc{Kinetic::Qt_widget_2<Simulator>}.
\ccExample
\ccIncludeExampleCode{Kinetic_data_structures/Delaunay_triangulation_2.C}
\end{ccRefClass}
% +------------------------------------------------------------------------+

View File

@ -18,10 +18,12 @@
\ccDefinition
The class draws a triangulation into the \ccc{QtWidget_2}. This class is
The class draws a triangulation into a \ccc{CGAL::Qt_widget_2}. This class is
very simple and a good one to look at if you want to see how to draw
your own two dimensional kinetic data structure.
See Section~\ref{sec:delaunay_2_example} for an example using this class.
\ccInclude{CGAL/Kinetic/IO/Qt_triangulation_2.h}
\ccCreation

View File

@ -18,7 +18,11 @@
\ccDefinition
The class \ccRefName\ implements a base class for objects which are reference counted. To use it simply inherit from \ccRefName\ (passing the type to be reference counted as the template argument) and then access the object through \ccc{Pointer} objects rather than bare C++ pointers.
The class \ccRefName\ implements a base class for objects which are
reference counted. To use it simply inherit from \ccRefName\ (passing
the type to be reference counted as the template argument) and then
access the object through \ccc{Handle} objects rather than bare C++
pointers.
\ccInclude{CGAL/Kinetic/Ref_counted.h}
@ -37,13 +41,6 @@ The class \ccRefName\ implements a base class for objects which are reference co
There are no methods which should be called by users of this class.
\ccExample
\ccIncludeExampleCode{Kinetic_data_structures/ref_counted.C}
\end{ccRefClass}
% +------------------------------------------------------------------------+

View File

@ -23,7 +23,7 @@ This concept is for proxy objects which get notified when a kinetic regular tria
\ccMethod{void create_vertex(Vertex_handle);}{The vertex was just created.}
\ccMethod{void modify_vertex(Vertex_handle);}{Something changed at the vertex.}
\ccMethod{void modify_vertex(Vertex_handle);}{The trajectory of the vertex just changed.}
\ccMethod{template <class It> void create_cells(It begin, It end);}{New faces have just been made. The iterator \ccc{value_type} is a \ccc{TriangulationDataStructure_3::Cell_handle}.}

View File

@ -22,9 +22,12 @@ The class \ccRefName\ maintains a triangulation of set of moving
weighted points. Its interface is the same as
\ccc{Kinetic::Delaunay_triangulation_3<Traits, Visitor, Triangulation>}.
The \ccc{Triangulation} template argument must have
The optional \ccc{Triangulation} template argument must be a model of
\ccc{CGAL::RegularTriangulation_3} which has
\ccc{Kinetic::Regular_triangulation_cell_base_3<Traits, Base>} as a
cell base and \ccc{Kinetic::Regular_triangulation_vertex_base_3<Traits, Base>} as a vertex base.
cell base and
\ccc{Kinetic::Regular_triangulation_vertex_base_3<Traits, Base>} as a
vertex base.
\ccInclude{CGAL/Kinetic/Regular_triangulation_3.h}

View File

@ -19,12 +19,12 @@
\ccDefinition
The concept \ccRefName\ provides a model of
Kinetic::RegularTriangulationVisitor3 and \ccc{EventLogVisitor} which logs edge flip events.
\ccc{Kinetic::RegularTriangulationVisitor3} and \ccc{EventLogVisitor} which logs edge flip events.
\ccIsModel
Kinetic::RegularTriangulationVisitor\_3, \ccc{Kinetic::EventLogVisitor}
\ccc{Kinetic::RegularTriangulationVisitor3}, \ccc{Kinetic::EventLogVisitor}
\ccSeeAlso

View File

@ -11,7 +11,7 @@
% +------------------------------------------------------------------------+
\begin{ccRefClass}{Kinetic::Regular_triangulation_instantaneous_traits_3<ActiveObjectsTable, StaticKernel>} %% add template arg's if necessary
\begin{ccRefClass}{Kinetic::Regular_triangulation_instantaneous_traits_3<ActiveObjectsTable, StaticKernel>}
%% \ccHtmlCrossLink{} %% add further rules for cross referencing links
%% \ccHtmlIndexC[class]{} %% add further index entries
@ -20,14 +20,15 @@
The class \ccRefName\ is an instantaneous kernel for use with a
regular triangulation data structure. There is not currently a reason
for the user to call this directly as it is included as part of the
for the user to call this directly unless the user wants created their
own simulation traits as it is included as part of the
\ccc{Kinetic::Regular_triangulation_exact_simulation_traits_3}.
\ccInclude{CGAL/Kinetic/Regular_triangulation_instantaneous_traits_3.h}
\ccIsModel
RegularTriangulationTraits\_3, \ccc{Kinetic::InstantaneousKernel}
\ccc{CGAL::RegularTriangulationTraits\_3}, \ccc{Kinetic::InstantaneousKernel}
\ccSeeAlso

View File

@ -18,7 +18,9 @@
\ccDefinition
This is the base class for faces used by \ccc{Kinetic::Regular_triangulation_3<Traits, Triangulation, Visitor>}.
This is the base class for the vertices of the triangulation class
used by \ccc{Kinetic::Regular_triangulation_3<Traits, Triangulation,
Visitor>}.
\ccInclude{CGAL/Kinetic/Regular_triangulation_vertex_base_3.h}

View File

@ -19,12 +19,12 @@
\ccDefinition
The concept \ccRefName\ provides a model of
Kinetic::RegularTriangulationVisitor\_3. You can extend this class if you only
want to implement a few methods from \ccc{Kinetic::RegularTriangulationVisitor}\_3.
\ccc{Kinetic::RegularTriangulationVisitor3}. You can extend this class if you only
want to implement a few methods from \ccc{Kinetic::RegularTriangulationVisitor3}.
\ccIsModel
Kinetic::RegularTriangulationVisitor\_3
\ccc{Kinetic::RegularTriangulationVisitor3}
\ccCreation
\ccCreationVariable{a} %% choose variable name

View File

@ -18,9 +18,11 @@
\ccDefinition
The concept \ccRefName\ enumerates through roots of a function. Most
of the root stacks maintain the invariant that
\ccc{pop()} can be called exactly once per root in the interval. However, certain of the \ccRefName s delay prooving that there are no remaining root, and so might return one root with the value \ccc{std::numeric_limits<Root>::infinity()} which does not correspond to an existing root. Comparing \ccc{top()} to the \ccc{Root} defining the end of the interval will allow you to make sure that it corresponds to an actual root of the polynomial (it is greater or equal then it is not in the interval).
The concept \ccRefName\ enumerates through roots of a function
contained in a certain interval. They may return one extra root which
has value \ccc{std::numeric_limits<Root>::infinity()}, as this allows
the root stacks to delay isolating roots until the isolation is needed
to properly evaluate comparisons.
\ccTypes
@ -48,7 +50,7 @@ of the root stacks maintain the invariant that
\ccSeeAlso
Kinetic::FunctionKernel, \ccc{Kinetic::Certificate}.
\ccc{Kinetic::FunctionKernel}, \ccc{Kinetic::Certificate}.

View File

@ -17,20 +17,44 @@
\ccDefinition
This concept ties together the parts needed in order to run a kinetic
data structure.
data structure. We provide several models of this concept:
\begin{itemize}
\item \ccc{Kinetic::Exact_simulation_traits_1}
\item \ccc{Kinetic::Exact_simulation_traits_2}
\item \ccc{Kinetic::Exact_simulation_traits_3}
\item \ccc{Kinetic::Inexact_simulation_traits_1}
\item \ccc{Kinetic::Inexact_simulation_traits_2}
\item \ccc{Kinetic::Inexact_simulation_traits_3}
\item \ccc{Kinetic::Exact_linear_simulation_traits_2}
\item \ccc{Kinetic::Exact_linear_simulation_traits_3}
\item \ccc{Kinetic::Inexact_linear_simulation_traits_2}
\item \ccc{Kinetic::Inexact_linear_simulation_traits_3}
\item \ccc{Kinetic::Regular_triangulation_exact_simulation_traits_3}
\item \ccc{Kinetic::Regular_triangulation_inexact_simulation_traits_3}
\end{itemize}
All support trajectories defined by polynomial coordinates. The
\ccc{Exact} vs \ccc{Inexect} picks whether the roots of the
certificate functions are compared exactly or approximated
numerically. The regular triangulation models have weighted points of
the appropriate dimension as the primitive used in the
\ccc{Kinetic::InstantaneousKernel} and the
\ccc{Kinetic::ActiveObjectsTable}.
\ccTypes
\ccNestedType{NT}{The number type used for representation.}
\ccNestedType{Static_kernel}{A CGAL kernel which can be used for static computations.}
\ccNestedType{Instantaneous_kernel}{A model of
\ccc{Kinetic::InstantaneousKernel} which can be used to apply static CGAL
data structures to snapshots of moving data.}
\ccNestedType{Kinetic_kernel}{A model of Kineti::Kernel.}
\ccNestedType{Kinetic_kernel}{A model of \ccc{Kinetic::Kernel}.}
\ccNestedType{Active_points_[123]_table}{A model of
\ccc{Kinetic::ActiveObjectsTable} which holds the relevant kinetic
primitives.}
\ccNestedType{Simulator}{A model of \ccc{Kinetic::Simulator} which will be
used by all the kinetic data structures.}
@ -40,13 +64,16 @@ used by all the kinetic data structures.}
\ccOperations
\ccCreationVariable{st}
\ccMethod{Static_kernel static_kernel_object();}{Get a new static kernel.}
\ccMethod{Instantaneous_kernel instantaneous_kernel_object();}{Get a new instantaneous kernel.}
\ccMethod{Kinetic_kernel kinetic_kernel_object();}{Get a new kinetic kernel.}
\ccMethod{Simulator::Handle simulator_handle();}{Return a pointer to the \ccc{Simulator} which is to be used in the simulation.}
\ccMethod{Simulator::Handle simulator_handle();}{Return a pointer to the \ccc{Kinetic::Simulator} which is to be used in the simulation.}
\ccMethod{Active_points_[123]_table::Handle
active_points_[123]_table_handle();}{Return a pointer to the
\ccc{Kinetic::ActiveObjectsTable} which is to be used in the
simulation.}
%\ccMethod{Active_objects_table* active_objects_table_pointer();}{Return a pointer to the table holding points which is to be used in the simulation.}
@ -61,7 +88,9 @@ used by all the kinetic data structures.}
\ccc{Kinetic::Exact_linear_simulation_traits_2},
\ccc{Kinetic::Exact_linear_simulation_traits_3},
\ccc{Kinetic::Inexact_linear_simulation_traits_2},
\ccc{Kinetic::Inexact_linear_simulation_traits_3}
\ccc{Kinetic::Inexact_linear_simulation_traits_3},
\ccc{Kinetic::Regular_triangulation_exact_simulation_traits_3},
\ccc{Kinetic::Regular_triangulation_inexact_simulation_traits_3}
\end{ccRefConcept}

View File

@ -19,8 +19,8 @@
\ccDefinition
The class \ccRefName\ controls kinetic data structures by maintaining
a concept of time and ensuring that events are processed when
necessary.
a the current time and ensuring that events are processed when
necessary.
In addition, the \ccRefName\ can call on the kinetic data structures
to audit themselves at appropriate times. When the last event

View File

@ -22,7 +22,7 @@ The class \ccRefName\ acts as a helper class for kinetic data
structures which want to respond to
\ccc{Simulator::Listener::HAS_AUDIT_TIME} notifications. When kinetic
data structures can audit themselves, the \ccRefName\ calls the
\ccc{audit()} method on the \ccc{KDS}.
\ccc{audit()} method on the kinetic data structure.
\ccInclude{CGAL/Kinetic/Simulator_kds_listener.h}
@ -34,7 +34,7 @@ data structures can audit themselves, the \ccRefName\ calls the
\ccSeeAlso
Kinetic::Simulator, Listener.
\ccc{Kinetic::Simulator}, \ccc{Listener<Interface>}.

View File

@ -4,87 +4,142 @@
\ccHeading{Definition}
Kinetic data structures are a way of adding motion to classical
geometric data structures. \cgal provides a number of classes to aid
geometric data structures. \cgal\ provides a number of classes to aid
implementation of kinetic data structures as well as a number of
prepackaged kinetic data structures.
There are three levels at which the user can interact with the
package. The can use an existing kinetic data structure, write a new
kinetic data structure, or replace parts of the framework. The
package. The user can use an existing kinetic data structure, write a
new kinetic data structure, or replace parts of the framework. The
concepts and models are grouped into these three classes.
\ccHeading{Existing Kinetic Data Structures}
First we have the
existing kinetic data structures and the helper classes that allow
their activity to monitored.
First we have the existing kinetic data structures and the helper
classes that allow their activity to monitored.
\ccRefIdfierPage{Kinetic::Delaunay_triangulation_2<Traits, Visitor, Triangulation>}
\ccRefIdfierPage{Kinetic::Delaunay_triangulation_3<Traits, Visitor, Triangulation>}
\ccRefIdfierPage{Kinetic::Enclosing_box_2<Traits>}
\ccRefIdfierPage{Kinetic::Enclosing_box_3<Traits>}
\ccRefIdfierPage{Kinetic::Regular_triangulation_3<Traits, Visitor, Triangulation>}
\ccRefIdfierPage{Kinetic::Regular_triangulation_3<Traits, Visitor, Triangulation>}
\ccRefIdfierPage{Kinetic::Sort<Traits, Visitor>}
The visitors:
\ccRefConceptPage{Kinetic::DelaunayTriangulationVisitor2}
\ccRefConceptPage{Kinetic::DelaunayTriangulationVisitor3}
\ccRefIdfierPage{Kinetic::Delaunay_triangulation_event_log_visitor_2}
\ccRefIdfierPage{Kinetic::Delaunay_triangulation_event_log_visitor_3}
\ccRefIdfierPage{Kinetic::Delaunay_triangulation_recent_edges_visitor_2<Triangulation>}
\ccRefIdfierPage{Kinetic::Delaunay_triangulation_visitor_base_2}
\ccRefIdfierPage{Kinetic::Delaunay_triangulation_visitor_base_3}
\ccRefConceptPage{Kinetic::RegularTriangulationVisitor3}
\ccRefIdfierPage{Kinetic::Regular_triangulation_visitor_base_3}
\ccRefIdfierPage{Kinetic::Regular_triangulation_event_log_visitor_3}
\ccRefConceptPage{Kinetic::SortVisitor}
\ccRefIdfierPage{Kinetic::Sort_visitor_base}
\ccRefIdfierPage{Kinetic::Sort_event_log_visitor}
The support classes:
\ccRefIdfierPage{Kinetic::Delaunay_triangulation_face_base_2<Traits, Base>}
\ccRefIdfierPage{Kinetic::Delaunay_triangulation_cell_base_3<Traits, Base>}
\ccRefIdfierPage{Kinetic::Regular_triangulation_cell_base_3<Traits, Base>}
\ccRefIdfierPage{Kinetic::Regular_triangulation_vertex_base_3<Traits, Base>}
\ccHeading{Graphical display}
Next we have some support classes which are used to display kinetic data structures:
\ccRefIdfierPage{Kinetic::Qt_moving_points_2<Traits, QtWidget_2>}
\ccRefIdfierPage{Kinetic::Qt_triangulation_2<KineticTriangulation_2, QtWidget_2, QtMovingPoints_2>}
\ccRefIdfierPage{Kinetic::Qt_widget_2<Simulator>}
\ccHeading{Main support classes and concepts}
Here we list the main classes and concepts provided by the framework to support implementing kinetic data structures
\ccRefConceptPage{Kinetic::ActiveObjectsTable}
\ccRefConceptPage{Kinetic::FunctionKernel}
\ccRefConceptPage{Kinetic::Kernel}
\ccRefConceptPage{Kinetic::InstantaneousKernel}
\ccRefConceptPage{Kinetic::SimulationTraits}
\ccRefConceptPage{Kinetic::Simulator}
\ccRefIdfierPage{Kinetic::Active_objects_vector<MovingObject>}
\ccRefIdfierPage{Kinetic::Cartesian_instantaneous_kernel<ActiveObjectsTable, StaticKernel>}
\ccRefIdfierPage{Kinetic::Cartesian_kinetic_kernel<FunctionKernel>}
\ccRefIdfierPage{Kinetic::Simulator<FunctionKernel, EventQueue>}
\ccHeading{Miscellaneous classes and concepts}
\ccRefIdfierPage{Kinetic::Regular_triangulation_instantaneous_traits_3<ActiveObjectsTable, StaticKernel>}
\ccRefConceptPage{Kinetic::EventLogVisitor}
\ccRefConceptPage{Kinetic::EventQueue}
\ccRefConceptPage{Kinetic::Event}
\ccRefConceptPage{Key}
\ccRefConceptPage{Kinetic::Certificate}
\ccRefConceptPage{Kinetic::RootStack}
\ccRefConceptPage{Kinetic::Time}
\ccRefIdfierPage{Kinetic::Active_objects_listener_helper<ActiveObjectsTable, KDS>}
\ccRefIdfierPage{Kinetic::Insert_event<ActiveObjectsTable>}
\ccRefIdfierPage{CGAL::Listener<Interface>}
\ccRefIdfierPage{CGAL::Multi_listener<Interface>}
\ccRefIdfierPage{CGAL::Ref_counted<T>}
\ccRefIdfierPage{Kinetic::Simulator_kds_listener<Listener, KDS>}
\ccRefIdfierPage{Kinetic::Simulator_objects_listener<Simulator_listener, KDS>}

View File

@ -1,11 +1,8 @@
#include <CGAL/Kinetic/Regular_triangulation_exact_simulation_traits_3.h>
#include <CGAL/Kinetic/Regular_triangulation_3.h>
int main(int, char *[])
{
int main(int, char *[]) {
typedef CGAL::Kinetic::Regular_triangulation_exact_simulation_traits_3 Traits;
typedef CGAL::Kinetic::Regular_triangulation_3<Traits> KDel;
Traits tr;