complex.h File Reference

Definition of a 2D cell complex. More...

#include <config.h>
#include <graph/vvgraph.h>
#include <graph/vvbigraph.h>
#include <algorithms/insert.h>
#include <util/parms.h>
#include <util/palette.h>
#include <util/color.h>
#include <util/leaf_class.h>
#include <util/assert.h>
#include <geometry/intersection.h>
#include <geometry/area.h>
#include <storage/fwd.h>
#include <iostream>

Go to the source code of this file.

Classes

class  vvcomplex::VVComplexGraph< CellContent, JunctionContent, CellJunctionContent, JunctionCellContent, compact >::division_result_t
 Describe the result of a cell division. More...
class  vvcomplex::DivisionData< JunctionContent >
 Class holding the data needed to actually divide a cell. More...
class  vvcomplex::InModelDivisionParam
 Class used to define the division parameters from within the model class. More...
class  vvcomplex::VVComplex< Model, CellContent, JunctionContent, WallContent, CellEdgeContent, CellJunctionContent, JunctionCellContent, compact, LeafClass >
 Class handling the representation and development of 2D cell complex. More...
class  vvcomplex::VVComplexGraph< CellContent, JunctionContent, CellJunctionContent, JunctionCellContent, compact >
 Definition of the bipartite graph with specialized methods for the complex graph. More...

Namespaces

namespace  vvcomplex
 

Definition of classes and functions for 2d cell complexes.


Defines

#define ALL_COMPLEX_TEMPLATE_ARGS   Model,CellContent,JunctionContent,WallContent,CellEdgeContent,CellJunctionContent,JunctionCellContent,compact,LeafClass
#define COMPLEX_ARGS   CellContent,JunctionContent,CellJunctionContent,JunctionCellContent,compact
#define EXPORT_COMPLEX_EDGES(ComplexClass)
 Export the types of the edges of the complex, i.e.
#define EXPORT_COMPLEX_EDGES_PREFIX(ComplexClass, prefix)
 Export the types of the edges of the complex, i.e.
#define EXPORT_COMPLEX_GRAPHS(ComplexClass)
 Export the types of the graphs of the complex, i.e.
#define EXPORT_COMPLEX_GRAPHS_PREFIX(ComplexClass, prefix)
 Export the types of the graphs of the complex, i.e.
#define EXPORT_COMPLEX_TYPES(ComplexClass)
 Export all the types of the graph.
#define EXPORT_COMPLEX_TYPES_PREFIX(ComplexClass, prefix)
 Export all the types of the graph.
#define EXPORT_COMPLEX_VERTICES(ComplexClass)
 Export the types of the vertices of the complex, i.e.
#define EXPORT_COMPLEX_VERTICES_PREFIX(ComplexClass, prefix)
 Export the types of the vertices of the complex, i.e.
#define IMPORT_COMPLEX_EDGES(ComplexClass)
 Import the edges types for another template where the complex class is not completely instantiated.
#define IMPORT_COMPLEX_GRAPHS(ComplexClass)
 Import the graphs types for another template where the complex class is not completely instantiated.
#define IMPORT_COMPLEX_MODEL(ComplexClass, cplx)   typename ComplexClass::model_t &model = *(cplx).model;
 Import the model from the instance cplx of the complex of type ComplexClass.
#define IMPORT_COMPLEX_TYPES(ComplexClass)
 Import all the types of the complex for another template where the complex class is not completely instantiated.
#define IMPORT_COMPLEX_VERTICES(ComplexClass)
 Import the vertices types for another template where the complex class is not completely instantiated.
#define MANDATORY_COMPLEX_TEMPLATE_ARGS   Model,CellContent,JunctionContent,WallContent,CellEdgeContent,CellJunctionContent,JunctionCellContent,compact

Typedefs

Types defined by EXPORT_COMPLEX_TYPES(VVComplex)

typedef VVComplex::cell vvcomplex::cell
 Type of a cell.
typedef VVComplex::cell_edge vvcomplex::cell_edge
 Type of an edge in the cell graph.
typedef VVComplex::cell_graph vvcomplex::cell_graph
 Type of the cell graph.
typedef
VVComplex::cell_junction_edge 
vvcomplex::cell_junction_edge
 Type of an edge from a cell to a junction.
typedef VVComplex::complex_graph vvcomplex::complex_graph
 Type of the complex graph (i.e. linking cells to junctions and vice-versa).
typedef VVComplex::const_cell_edge vvcomplex::const_cell_edge
 Type of an edge in the cell graph.
typedef
VVComplex::const_cell_junction_edge 
vvcomplex::const_cell_junction_edge
 Type of an edge from a cell to a junction.
typedef
VVComplex::const_junction_cell_edge 
vvcomplex::const_junction_cell_edge
 Type of an edge from a junction to a cell.
typedef VVComplex::const_wall vvcomplex::const_wall
 Type of a wall (i.e. an edge in the wall graph).
typedef VVComplex::junction vvcomplex::junction
 Type of a junction.
typedef
VVComplex::junction_cell_edge 
vvcomplex::junction_cell_edge
 Type of an edge from a junction to a cell.
typedef VVComplex::wall vvcomplex::wall
 Type of a wall (i.e. an edge in the wall graph).
typedef VVComplex::wall_graph vvcomplex::wall_graph
 Type of the wall graph.

Functions

template<typename Complex >
std::vector< typename
Complex::junction > 
vvcomplex::contour (const Complex &T)
template<typename CplxGraph >
void vvcomplex::create_cplxgraph_methods (CplxGraph &G)
template<class VVComplex >
void vvcomplex::FindCenter (const typename VVComplex::cell &c, VVComplex &T)
 Compute the position of the center of a cell.
template<class VVComplex >
Point3d vvcomplex::findCenter (const typename VVComplex::cell &c, VVComplex &T)
 Return the position of the center of a cell.
template<class VVComplex >
DivisionData< typename
VVComplex::junction_content > 
vvcomplex::findDivisionPoints (const typename VVComplex::cell &c, VVComplex &T, const InModelDivisionParam &param)
 Implementation of the in model division scheme.
template<typename VVComplex >
void vvcomplex::FindOppositeWall (const typename VVComplex::cell &c, DivisionData< typename VVComplex::junction_content > &result, VVComplex &T, double cellWallMin, bool strictCellWallMin)
 Find the wall opposite to the point already selected.
bool vvcomplex::FindWallMin (Point3d &v, const Point3d &v1, const Point3d &v2, double mw, double *displacement=0)
 Move point v to avoid segment borders.
template<typename VVComplex >
void vvcomplex::testDivisionOnVertices (const typename VVComplex::cell &c, DivisionData< typename VVComplex::junction_content > &result, VVComplex &T, double epsilon)
 Test if the division point in result is close enough to one of the extremum.

Detailed Description

Definition of a 2D cell complex.

Definition in file complex.h.


Define Documentation

#define EXPORT_COMPLEX_EDGES ( ComplexClass   ) 
#define EXPORT_COMPLEX_EDGES_PREFIX ( ComplexClass,
prefix   ) 
Value:
typedef ComplexClass::cell_edge prefix##_cell_edge; \
  typedef ComplexClass::wall prefix##_wall; \
  typedef ComplexClass::cell_junction_edge prefix##_cell_junction_edge; \
  typedef ComplexClass::junction_cell_edge prefix##_junction_cell_edge; \
  typedef ComplexClass::const_cell_edge prefix##_const_cell_edge; \
  typedef ComplexClass::const_wall prefix##_const_wall; \
  typedef ComplexClass::const_cell_junction_edge prefix##_const_cell_junction_edge; \
  typedef ComplexClass::const_junction_cell_edge prefix##_const_junction_cell_edge

Export the types of the edges of the complex, i.e.

cell_edge, wall, cell_junction_edge and junction_cell_edge. Equivalent to:

 typedef ComplexClass::cell_edge prefix_cell_edge;
 typedef ComplexClass::wall prefix_wall;
 typedef ComplexClass::cell_junction_edge prefix_cell_junction_edge;
 typedef ComplexClass::junction_cell_edge prefix_junction_cell_edge;
 typedef ComplexClass::const_cell_edge prefix_const_cell_edge;
 typedef ComplexClass::const_wall prefix_const_wall;
 typedef ComplexClass::const_cell_junction_edge prefix_const_cell_junction_edge;
 typedef ComplexClass::const_junction_cell_edge prefix_const_junction_cell_edge

Definition at line 543 of file complex.h.

#define EXPORT_COMPLEX_GRAPHS ( ComplexClass   ) 
Value:

Export the types of the graphs of the complex, i.e.

complex_graph, cell_graph, wall_graph. Equivalent to:

Definition at line 487 of file complex.h.

#define EXPORT_COMPLEX_GRAPHS_PREFIX ( ComplexClass,
prefix   ) 
Value:
typedef ComplexClass::complex_graph prefix##_complex_graph; \
  typedef ComplexClass::cell_graph prefix##_cell_graph; \
  typedef ComplexClass::wall_graph prefix##_wall_graph

Export the types of the graphs of the complex, i.e.

complex_graph, cell_graph, wall_graph.

 typedef ComplexClass::complex_graph prefix_complex_graph;
 typedef ComplexClass::cell_graph prefix_cell_graph;
 typedef ComplexClass::wall_graph prefix_wall_graph

Definition at line 566 of file complex.h.

#define EXPORT_COMPLEX_TYPES ( ComplexClass   ) 
Value:
EXPORT_COMPLEX_VERTICES(ComplexClass); \
  EXPORT_COMPLEX_EDGES(ComplexClass); \
  EXPORT_COMPLEX_GRAPHS(ComplexClass)

Export all the types of the graph.

Equivalent to

 EXPORT_COMPLEX_VERTICES(ComplexClass);
 EXPORT_COMPLEX_EDGES(ComplexClass);
 EXPORT_COMPLEX_GRAPHS(ComplexClass);

Definition at line 504 of file complex.h.

#define EXPORT_COMPLEX_TYPES_PREFIX ( ComplexClass,
prefix   ) 
Value:
EXPORT_COMPLEX_VERTICES_PREFIX(ComplexClass, prefix); \
  EXPORT_COMPLEX_EDGES_PREFIX(ComplexClass, prefix); \
  EXPORT_COMPLEX_GRAPHS_PREFIX(ComplexClass, prefix)

Export all the types of the graph.

Equivalent to

 EXPORT_COMPLEX_VERTICES_PREFIX(ComplexClass, prefix);
 EXPORT_COMPLEX_EDGES_PREFIX(ComplexClass, prefix);
 EXPORT_COMPLEX_GRAPHS_PREFIX(ComplexClass, prefix);

Definition at line 583 of file complex.h.

#define EXPORT_COMPLEX_VERTICES ( ComplexClass   ) 
Value:

Export the types of the vertices of the complex, i.e.

the cell and junction. Equivalent to:

Definition at line 442 of file complex.h.

#define EXPORT_COMPLEX_VERTICES_PREFIX ( ComplexClass,
prefix   ) 
Value:
typedef ComplexClass::cell prefix##_cell; \
  typedef ComplexClass::junction prefix##_junction

Export the types of the vertices of the complex, i.e.

the cell and junction, but prefix the defined type. Equivalent to:

 typedef ComplexClass::cell prefix_cell;
 typedef ComplexClass::junction prefix_junction

Definition at line 521 of file complex.h.

#define IMPORT_COMPLEX_EDGES ( ComplexClass   ) 
Value:

Import the edges types for another template where the complex class is not completely instantiated.

Definition at line 608 of file complex.h.

#define IMPORT_COMPLEX_GRAPHS ( ComplexClass   ) 
Value:

Import the graphs types for another template where the complex class is not completely instantiated.

Definition at line 626 of file complex.h.

#define IMPORT_COMPLEX_MODEL ( ComplexClass,
cplx   )     typename ComplexClass::model_t &model = *(cplx).model;

Import the model from the instance cplx of the complex of type ComplexClass.

As a result, a variable named model is defined as a reference to the model.

Definition at line 640 of file complex.h.

Referenced by vvcomplex::FindCenter(), vvcomplex::findCenter(), tissue::findDivisionPoints(), vvcomplex::findDivisionPoints(), cell_system::findDivisionPoints(), vvcomplex::FindOppositeWall(), vvcomplex::testDivisionOnVertices(), and cell_system::volumeLeftCell().

#define IMPORT_COMPLEX_TYPES ( ComplexClass   ) 
Value:
IMPORT_COMPLEX_VERTICES(ComplexClass); \
  IMPORT_COMPLEX_EDGES(ComplexClass); \
  IMPORT_COMPLEX_GRAPHS(ComplexClass)

Import all the types of the complex for another template where the complex class is not completely instantiated.

Definition at line 651 of file complex.h.

Referenced by complex_factory::hex_grid(), complex_factory::objreader(), and complex_factory::square_grid().

#define IMPORT_COMPLEX_VERTICES ( ComplexClass   ) 
Value:
typedef typename ComplexClass::cell cell; \
  typedef typename ComplexClass::junction junction

Import the vertices types for another template where the complex class is not completely instantiated.

Definition at line 596 of file complex.h.

Referenced by vvcomplex::findCenter(), tissue::findDivisionPoints(), cell_system::findDivisionPoints(), vvcomplex::FindOppositeWall(), and cell_system::volumeLeftCell().

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines
Generated on Fri May 31 15:37:53 2013 for VVE by  doxygen 1.6.3