LiTe
 All Classes Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
Classes | Typedefs | Functions | Variables
ttessel.h File Reference
#include <iostream>
#include <CGAL/Cartesian.h>
#include <CGAL/Gmpq.h>
#include <CGAL/Lazy_exact_nt.h>
#include <CGAL/Linear_algebraCd.h>
#include <CGAL/double.h>
#include <CGAL/Arr_segment_traits_2.h>
#include <CGAL/Arr_default_dcel.h>
#include <CGAL/Arrangement_2.h>
#include <CGAL/IO/Arr_iostream.h>
#include <CGAL/Arr_walk_along_line_point_location.h>
#include <CGAL/Arr_naive_point_location.h>
#include <CGAL/Polygon_2.h>
#include <CGAL/Polygon_2_algorithms.h>
#include <CGAL/intersections.h>
#include <CGAL/Bbox_2.h>
#include <CGAL/Random.h>
#include <CGAL/Extended_cartesian.h>
#include <CGAL/Nef_polyhedron_2.h>

Go to the source code of this file.

Classes

class  Polygons
 
class  LineTes
 Polygonal tessellation of a bounded rectangular domain. More...
 
class  LineTes::Seg
 Segment in a line tessellation. More...
 
class  LineTes::Seg_list
 List of Seg objects. More...
 
class  LineTes::Seg_sublist
 Sublist of Seg objects. More...
 
class  LineTes_halfedge
 Halfedge class used by the LineTes class. More...
 
struct  IVertex
 Data about removal of an I-vertex. More...
 
struct  ModList
 Representation of a modification to be applied to a line tessellation. More...
 
class  TTessel
 Dynamic T-tessellation. More...
 
class  TTessel::Modification
 Abstract class representing a modification of a T-tessellation. More...
 
class  TTessel::Split
 A split that can be applied to a T-tessellation. More...
 
class  TTessel::Merge
 A merge that can be applied to a T-tessellation. More...
 
class  TTessel::Flip
 A flip that can be applied to a T-tessellation. More...
 
struct  CatItems< T >
 Storage structure for categorized items. More...
 
struct  Features
 Set of vertex, edge, face and segment features. More...
 
class  Energy
 Energy of a Gibbsian random T-tessellation. More...
 
struct  ModifCounts
 Data summarizing changes occuring through SMF iterations. More...
 
class  SMFChain
 Markovian T-tessellation. More...
 
class  PseudoLikDiscrete
 Discrete approximation of the log-pseudolikelihood of a Gibbsian T-tessellation. More...
 
class  PLInferenceNOIS
 Pseudo-likelihood inference of a Gibsian T-tessellation with alternate updates. More...
 

Typedefs

typedef CGAL::Lazy_exact_nt
< CGAL::Gmpq > 
NT
 The CGAL numeric type used for exact computations in LiTe.
 
typedef CGAL::Cartesian< NTKernel
 The CGAL type of coordinates used in LiTe.
 
typedef
CGAL::Arr_segment_traits_2
< Kernel
Traits
 The CGAL arrangement traits class used for representing tessellations.
 
typedef CGAL::Vector_2< KernelVector
 The CGAL class used for representing vectors.
 
typedef Traits::Point_2 Point2
 CGAL class representing a point from a tessellation.
 
typedef Traits::Segment_2 Segment
 CGAL class representing a line segment from a tessellation.
 
typedef Traits::X_monotone_curve_2 Curve
 CGAL class representing a curve (line segment) from a tessellation.
 
typedef CGAL::Iso_rectangle_2
< Kernel
Rectangle
 CGAL class representing a rectangle with horizontal and vertical sides. More...
 
typedef CGAL::Line_2< KernelLine
 CGAL class representing an infinite line.
 
typedef CGAL::Ray_2< KernelRayon
 CGAL class representing a half-line.
 
typedef CGAL::Direction_2< KernelDirection
 CGAL class representing a direction in the plane.
 
typedef
CGAL::Aff_transformation_2
< Kernel
Transformation
 CGAL class representing an affine transformation.
 
typedef CGAL::Polygon_2< KernelPolygon
 CGAL class representing a polygon.
 
typedef std::vector< Point2Points
 Class representing a series of points.
 
typedef CGAL::Linear_algebraCd
< double > 
LA
 Class used for basic linear algebra. More...
 
typedef LA::Vector FVector
 Class used for representing a vector (in the linear algebra sense)
 
typedef LA::Matrix FMatrix
 Class used for representing a matrix.
 
typedef CGAL::Arr_dcel_base
< CGAL::Arr_vertex_base
< Point2 >, LineTes_halfedge,
CGAL::Arr_face_base > 
Dcel
 Class used as a template parameter for the Arrangement class. More...
 
typedef CGAL::Arrangement_2
< Traits, Dcel
Arrangement
 Class representing a tessellation.
 
typedef Dcel::Size Size
 Number type used for indexing tessellation features.
 
typedef CatItems< double > CatVector
 Storage structure for vector of doubles associated with categories vertices, edges, faces or segs.
 
typedef CatItems< CatVectorCatMatrix
 Storage structure for matrices (vector of vectors) of doubles associated with categories vertices, edges, faces or segs.
 

Functions

bool compare_ivertices (IVertex v1, IVertex v2)
 Comparison of I-vertices based on length variation. More...
 
template<typename T >
const CatItems< T > operator+ (const CatItems< T > &x1, const CatItems< T > &x2)
 Addition operator for CatItems objects.
 
template<typename T >
const CatItems< T > operator* (const double &scalar, const CatItems< T > &x)
 Product of a CatItems object with a scalar.
 
template<typename T >
const CatItems< T > operator- (const CatItems< T > &x1, const CatItems< T > &x2)
 Subtraction of two CatItems objects.
 
template<typename T >
const CatItems< T > operator* (const CatItems< T > &x1, const CatItems< T > &x2)
 Term by term product of CatItems objects.
 
void fill (CatVector &, FVector &)
 Fill a CatVector object with the elements of a FVector object. More...
 
std::vector< double > asVectorOfDoubles (const CatVector &)
 Generate a vector of doubles from a CatVector object.
 
FVector asFVector (const CatVector &)
 Generate a FVector object from CatVector object.
 
std::ostream & operator<< (std::ostream &, const CatVector &)
 Print a CatVector to an output stream.
 
double sum (const CatVector &)
 Compute the sum of components of a CatVector object.
 
FMatrix asFMatrix (const CatMatrix &)
 Generate a FMatrix object from a CatMatrix object.
 
CatMatrix outer (const CatVector &, const CatVector &)
 Outer product of two CatVector objects.
 
bool are_aligned (Point2 p, Point2 q, Point2 r, bool verbose=false)
 Test whether three points are aligned. More...
 
Segment clip_segment_by_convex_polygon (Segment, Polygon)
 Clip a segment by a convex polygon. More...
 
double precompute_lengthening (Arrangement::Halfedge_handle, Arrangement::Halfedge_handle *, Point2 *)
 Predict added length when lengthening an edge in an arrangement. More...
 
bool exist_halfedge (LineTes &, LineTes::Halfedge_handle)
 Test whether a halfedge handle is valid. More...
 
LineTes::Halfedge_handle compute_prev_hf (LineTes::Halfedge_handle)
 Compute the previous halfedge along a segment. More...
 
LineTes::Halfedge_handle compute_next_hf (LineTes::Halfedge_handle)
 Compute the next halfedge along a segment. More...
 
void set_junction (LineTes::Halfedge_handle, LineTes::Halfedge_handle)
 Set neighbour relationships between two halfedges. More...
 
LineTes::Halfedge_handle find_halfedge (LineTes &, Point2, Point2)
 Find a tessellation halfedge ending at two given points. More...
 
bool is_a_T_vertex (LineTes::Vertex_handle, bool verbose=false)
 Test whether a vertex of a line tessellation is a T-vertex. More...
 
unsigned long int number_of_internal_vertices (TTessel &)
 Return the total number of internal vertices. More...
 
Polygon face2poly (TTessel::Face_handle)
 Returns a Polygon object representing a face of the tessellation. More...
 
double face_number (Polygon, TTessel *)
 Return 1. More...
 
double face_area_2 (Polygon, TTessel *)
 Return the squared face area of a tessellation face. More...
 
double face_sum_of_angles (Polygon, TTessel *)
 Measure the deviation of a T-tessellation face from a rectangle. More...
 
double face_shape (Polygon, TTessel *)
 
double angle_between_vectors (Vector v1, Vector v2)
 Return the angle between two planar vectors. More...
 
double edge_length (Segment, TTessel *)
 Return the length of an internal T-tessellation segment. More...
 
double is_point_inside_window (Point2, LineTes *)
 Test whether a point is in the interior of the tessellated domain. More...
 
double is_point_inside_window (Point2, TTessel *)
 Test whether a point is in the interior of the tessellated domain. More...
 
double seg_number (std::vector< Point2 >, TTessel *)
 Return 1. More...
 
double is_segment_internal (std::vector< Point2 >, TTessel *)
 Test whether a segment of a T-tessellation is internal. More...
 
double minus_is_segment_internal (std::vector< Point2 > s, TTessel *t)
 Return -1. More...
 
double min_angle (Polygon, TTessel *)
 Return the smallest angle in a tessellation face. More...
 
double sum_of_faces_squared_areas (TTessel *)
 Return the sum of squared areas of all faces of a T-tessellation. More...
 
double sum_of_min_angles (TTessel *)
 Return the sum of smallest angles on all faces of a T-tessellation. More...
 
double sum_of_angles_obt (TTessel *)
 Return the sum of obtuse angles on all faces of a T-tessellation. More...
 
double segment_size_2 (std::vector< Point2 >, TTessel *)
 Return the squared number of edges on a segment of a T-tessellation. More...
 
double sum_of_segment_squared_sizes (TTessel *t)
 Return the sum of squared numbers of edges on all segments of a T-tessellation. More...
 

Variables

CGAL::Random * rnd
 LiTe random generator. More...
 
LineTes::Halfedge_handle NULL_HALFEDGE_HANDLE
 Null value for a LineTes halfedge handle.
 
LineTes::Face_handle NULL_FACE_HANDLE
 Null value for a LineTes face handle.
 
LineTes::Seg_handle NULL_SEG_HANDLE
 Null value for a LineTes segment handle.
 

Typedef Documentation

Class used as a template parameter for the Arrangement class.

Use of non-standard halfedges (class LineTes_halfedge)

LA

Class used for basic linear algebra.

This class is used in particular for some computations on matrices.

typedef CGAL::Iso_rectangle_2<Kernel> Rectangle

CGAL class representing a rectangle with horizontal and vertical sides.

typedef

Function Documentation

double angle_between_vectors ( Vector  v1,
Vector  v2 
)

Return the angle between two planar vectors.

Parameters
v1: first vector.
v2: second vector.
bool are_aligned ( Point2  p,
Point2  q,
Point2  r,
bool  verbose 
)

Test whether three points are aligned.

Parameters
p: first point.
q: intermediate point.
r: last point.
verbose: if true, when points are found not aligned, a message explaining whny is printed to the standard output for logging. Default to false.
Returns
true if the points are aligned, false otherwise. If q is not strictly between p and r, the points are considered as not aligned.
Segment clip_segment_by_convex_polygon ( Segment  S,
Polygon  P 
)

Clip a segment by a convex polygon.

Parameters
S: segment to be clipped.
P: clipping polygon.
Returns
clipped segment, that is the intersection between the segment and the polygon.
Precondition
The clipping polygon must be convex.
bool compare_ivertices ( IVertex  v1,
IVertex  v2 
)
inline

Comparison of I-vertices based on length variation.

Parameters
v1: data related to the first I-vertex.
v2: data related to the second I-vertex.
Returns
true if first I-vertex removal induces a length change smaller than the second I-vertex removal.
LineTes::Halfedge_handle compute_next_hf ( LineTes::Halfedge_handle  e)

Compute the next halfedge along a segment.

Parameters
ehalfedge whose neighbour is to be computed
Returns
next neighbour, NULL_HALFEDGE_HANDLE if e is the last halfedge on its segment.
LineTes::Halfedge_handle compute_prev_hf ( LineTes::Halfedge_handle  e)

Compute the previous halfedge along a segment.

Parameters
ehalfedge whose neighbour is to be computed
Returns
previous neighbour, NULL_HALFEDGE_HANDLE if e is the first halfedge on its segment.
double edge_length ( Segment  seg,
TTessel t 
)

Return the length of an internal T-tessellation segment.

If the segment is not internal, zero is returned.

bool exist_halfedge ( LineTes tesl,
LineTes::Halfedge_handle  e 
)

Test whether a halfedge handle is valid.

Just check whether the halfedge handle can be found within the halfedge iterators.

Parameters
tesl: the line tessellation to be searched.
e: halfedge to be checked.
Polygon face2poly ( TTessel::Face_handle  f)

Returns a Polygon object representing a face of the tessellation.

Only vertices joining non-aligned edges are specified during the Polygon construction.

double face_shape ( Polygon  ,
TTessel  
)

(4*sqrt(CGAL::to_double(f.area())));

void fill ( CatVector v,
FVector x 
)

Fill a CatVector object with the elements of a FVector object.

Parameters
v: the CatVector to be filled
x: the input object

The lengths of arguments must fit.

LineTes::Halfedge_handle find_halfedge ( LineTes tesl,
Point2  p1,
Point2  p2 
)

Find a tessellation halfedge ending at two given points.

Parameters
tesl: a tessellation.
p1: a point.
p2: another point.
bool is_a_T_vertex ( LineTes::Vertex_handle  v,
bool  verbose 
)

Test whether a vertex of a line tessellation is a T-vertex.

Parameters
v: vertex to be tested.
verbose: if true, information about I-vertex processing is sent to the standard output. Default to false.
double is_point_inside_window ( Point2  pt,
LineTes t 
)

Test whether a point is in the interior of the tessellated domain.

Returns
a double resulting from conversion from a Boolean.
double is_point_inside_window ( Point2  pt,
TTessel t 
)

Test whether a point is in the interior of the tessellated domain.

Returns
a double resulting from conversion from a Boolean.
double is_segment_internal ( std::vector< Point2 s,
TTessel t 
)

Test whether a segment of a T-tessellation is internal.

Parameters
s: a vector containing the two ends of the segment to be tested. The ends must be Point2 objects.
t: a pointer to the T-tessellation.
Returns
0 if the segment is internal, 1 otherwise.
Precondition
the segment must be included in the domain of the T-tessellation.

A segment is considered as internal if it is not fully contained in the domain boundary.

double minus_is_segment_internal ( std::vector< Point2 s,
TTessel t 
)
inline

Return -1.

Parameters
s: a tessellation segment as a vector of its 2 ends.
t: the tessellation to be considered.

Silly function that can be used by an Energy object for specifying minus the number of segment as a tessellation feature.

unsigned long int number_of_internal_vertices ( TTessel t)

Return the total number of internal vertices.

Parameters
t: the T-tessellation.
Returns
the number of internal vertices.

A vertex is internal if it does not lie on the boundary of the tessellated domain.

double precompute_lengthening ( Arrangement::Halfedge_handle  e,
Arrangement::Halfedge_handle *  ehit,
Point2 p 
)

Predict added length when lengthening an edge in an arrangement.

Parameters
[in]e: halfedge that would be lengthened.
[out]ehit: halfedge where lengthening would end.
[out]p: location of the end of lengthening.
Returns
added length.

Predict what would happen if an edge in an arrangement is extended to the next existing edge.

double seg_number ( std::vector< Point2 s,
TTessel t 
)

Return 1.

Parameters
s: a tessellation segment as a vector of its 2 ends.
t: the tessellation to be considered.

Silly function that can be used by an Energy object for specifying the number of tessellation segments as a feature.

void set_junction ( LineTes::Halfedge_handle  e1,
LineTes::Halfedge_handle  e2 
)

Set neighbour relationships between two halfedges.

Parameters
e1: halfedge.
e2: other halfedge supposed to follow e1 on the same segment.
Note
{Either e1 or e2 can be null.}
double sum_of_angles_obt ( TTessel t)

Return the sum of obtuse angles on all faces of a T-tessellation.

Parameters
t: the tessellation to be considered.
double sum_of_faces_squared_areas ( TTessel t)

Return the sum of squared areas of all faces of a T-tessellation.

Parameters
t: the tessellation to be considered.
double sum_of_min_angles ( TTessel t)

Return the sum of smallest angles on all faces of a T-tessellation.

Parameters
t: the tessellation to be considered.
double sum_of_segment_squared_sizes ( TTessel t)

Return the sum of squared numbers of edges on all segments of a T-tessellation.

Parameters
t: the tessellation to be considered.

Variable Documentation

CGAL::Random* rnd

LiTe random generator.

LiTe implements several stochastic algorihtms where this generator is used.