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 ¶m) |
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. |
Definition of a 2D cell complex.
Definition in file complex.h.
#define EXPORT_COMPLEX_EDGES | ( | ComplexClass | ) |
typedef ComplexClass::cell_edge cell_edge; \ typedef ComplexClass::wall wall; \ typedef ComplexClass::cell_junction_edge cell_junction_edge; \ typedef ComplexClass::junction_cell_edge junction_cell_edge; \ typedef ComplexClass::const_cell_edge const_cell_edge; \ typedef ComplexClass::const_wall const_wall; \ typedef ComplexClass::const_cell_junction_edge const_cell_junction_edge; \ typedef ComplexClass::const_junction_cell_edge 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 cell_edge; typedef ComplexClass::wall wall; typedef ComplexClass::cell_junction_edge cell_junction_edge; typedef ComplexClass::junction_cell_edge junction_cell_edge; typedef ComplexClass::const_cell_edge const_cell_edge; typedef ComplexClass::const_wall const_wall; typedef ComplexClass::const_cell_junction_edge const_cell_junction_edge; typedef ComplexClass::const_junction_cell_edge const_junction_cell_edge
#define EXPORT_COMPLEX_EDGES_PREFIX | ( | ComplexClass, | |||
prefix | ) |
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
#define EXPORT_COMPLEX_GRAPHS | ( | ComplexClass | ) |
typedef ComplexClass::complex_graph complex_graph; \ typedef ComplexClass::cell_graph cell_graph; \ typedef ComplexClass::wall_graph wall_graph
Export the types of the graphs of the complex, i.e.
complex_graph, cell_graph, wall_graph. Equivalent to:
typedef ComplexClass::complex_graph complex_graph; typedef ComplexClass::cell_graph cell_graph; typedef ComplexClass::wall_graph wall_graph
#define EXPORT_COMPLEX_GRAPHS_PREFIX | ( | ComplexClass, | |||
prefix | ) |
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
#define EXPORT_COMPLEX_TYPES | ( | ComplexClass | ) |
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);
#define EXPORT_COMPLEX_TYPES_PREFIX | ( | ComplexClass, | |||
prefix | ) |
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);
#define EXPORT_COMPLEX_VERTICES | ( | ComplexClass | ) |
typedef ComplexClass::cell cell; \ typedef ComplexClass::junction junction
Export the types of the vertices of the complex, i.e.
the cell and junction. Equivalent to:
typedef ComplexClass::cell cell; typedef ComplexClass::junction junction
#define EXPORT_COMPLEX_VERTICES_PREFIX | ( | ComplexClass, | |||
prefix | ) |
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
#define IMPORT_COMPLEX_EDGES | ( | ComplexClass | ) |
typedef typename ComplexClass::cell_edge cell_edge; \ typedef typename ComplexClass::wall wall; \ typedef typename ComplexClass::cell_junction_edge cell_junction_edge; \ typedef typename ComplexClass::junction_cell_edge junction_cell_edge; \ typedef typename ComplexClass::const_cell_edge const_cell_edge; \ typedef typename ComplexClass::const_wall const_wall; \ typedef typename ComplexClass::const_cell_junction_edge const_cell_junction_edge; \ typedef typename ComplexClass::const_junction_cell_edge const_junction_cell_edge
Import the edges types for another template where the complex class is not completely instantiated.
#define IMPORT_COMPLEX_GRAPHS | ( | ComplexClass | ) |
typedef typename ComplexClass::complex_graph complex_graph; \ typedef typename ComplexClass::cell_graph cell_graph; \ typedef typename ComplexClass::wall_graph wall_graph
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
.
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 | ) |
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 | ) |
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().