#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< NT > | Kernel |
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< Kernel > | Vector |
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< Kernel > | Line |
CGAL class representing an infinite line. | |
typedef CGAL::Ray_2< Kernel > | Rayon |
CGAL class representing a half-line. | |
typedef CGAL::Direction_2< Kernel > | Direction |
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< Kernel > | Polygon |
CGAL class representing a polygon. | |
typedef std::vector< Point2 > | Points |
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< CatVector > | CatMatrix |
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. | |
Class used as a template parameter for the Arrangement class.
Use of non-standard halfedges (class LineTes_halfedge)
Class used for basic linear algebra.
This class is used in particular for some computations on matrices.
CGAL class representing a rectangle with horizontal and vertical sides.
typedef
Return the angle between two planar vectors.
v1 | : first vector. |
v2 | : second vector. |
Test whether three points are aligned.
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. |
Clip a segment by a convex polygon.
S | : segment to be clipped. |
P | : clipping polygon. |
Comparison of I-vertices based on length variation.
v1 | : data related to the first I-vertex. |
v2 | : data related to the second I-vertex. |
LineTes::Halfedge_handle compute_next_hf | ( | LineTes::Halfedge_handle | e | ) |
Compute the next halfedge along a segment.
e | halfedge whose neighbour is to be computed |
LineTes::Halfedge_handle compute_prev_hf | ( | LineTes::Halfedge_handle | e | ) |
Compute the previous halfedge along a segment.
e | halfedge whose neighbour is to be computed |
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.
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.
Fill a CatVector object with the elements of a FVector object.
v | : the CatVector to be filled |
x | : the input object |
The lengths of arguments must fit.
Find a tessellation halfedge ending at two given points.
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.
v | : vertex to be tested. |
verbose | : if true, information about I-vertex processing is sent to the standard output. Default to false. |
Test whether a point is in the interior of the tessellated domain.
Test whether a point is in the interior of the tessellated domain.
Test whether a segment of a T-tessellation is internal.
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. |
A segment is considered as internal if it is not fully contained in the domain boundary.
Return -1.
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.
t | : the T-tessellation. |
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.
[in] | e | : halfedge that would be lengthened. |
[out] | ehit | : halfedge where lengthening would end. |
[out] | p | : location of the end of lengthening. |
Predict what would happen if an edge in an arrangement is extended to the next existing edge.
Return 1.
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.
e1 | : halfedge. |
e2 | : other halfedge supposed to follow e1 on the same segment. |
double sum_of_angles_obt | ( | TTessel * | t | ) |
Return the sum of obtuse angles on all faces of a T-tessellation.
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.
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.
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.
t | : the tessellation to be considered. |
CGAL::Random* rnd |
LiTe random generator.
LiTe implements several stochastic algorihtms where this generator is used.