Go to the documentation of this file. 1 #ifndef DivisionAnalysisData_H
2 #define DivisionAnalysisData_H
34 DivisionPlane(
double size,
Point3d planeNrml,
Point3d planePos,
int label) : size(size),planeNrml(planeNrml),planePos(planePos),label(label) {}
79 setName(
"Mesh/Division Analysis/Tools/Circular Mesh");
80 setDesc(
"Creates an unlabelled mesh of a regular 2D polygon with the specified number of corners, size and triangulation. \n"
81 "The generated corner points are on an ellipse with the specified radii. \n"
82 "Special Mode with Corner Points=4: Creates a Rectangular Mesh with the specified side length");
83 setIcon(QIcon(
":/images/LayerFiles.png"));
85 addParm(
"Radius X",
"Radius of ellipse in x dimension",
"100.0");
86 addParm(
"Radius Y",
"Radius of ellipse in y dimension",
"100.0");
87 addParm(
"Corner Points",
"Number of corner points (linearization in between)",
"100");
88 addParm(
"Segment",
"360 for a full shape",
"360");
89 addParm(
"Shift X",
"Translation in X dimension (microns)",
"0");
90 addParm(
"Shift Y",
"Translation in Y dimension (microns)",
"0");
91 addParm(
"Keep Mesh",
"Keep the existing mesh",
"No",booleanChoice());
96 Mesh *mesh = currentMesh();
98 bool addEdgePoints =
true;
100 double triSize = 10.0;
102 bool res = run(mesh, parm(
"Radius X").toDouble(), parm(
"Radius Y").toDouble(), parm(
"Corner Points").toInt(),
103 parm(
"Segment").toDouble(), parm(
"Shift X").toDouble(), parm(
"Shift Y").toDouble(), parm(
"Keep Mesh").toDouble(), triSize, addEdgePoints);
108 bool run(
Mesh *mesh,
double radiusX,
double radiusY,
int edgePoints,
double meshAngle,
109 double shiftX,
double shiftY,
bool keep,
double triSize,
bool addEdgePoints);
124 setName(
"Mesh/Division Analysis/Tools/Tetrahedra Mesh");
125 setDesc(
"Tetra Creation");
126 setIcon(QIcon(
":/images/LayerFiles.png"));
128 addParm(
"Length",
"Length",
"100.0");
129 addParm(
"Tri Size",
"Tri Size",
"1.0");
130 addParm(
"Keep Mesh",
"Keep the existing mesh",
"No",booleanChoice());
135 Mesh *mesh = currentMesh();
137 bool addEdgePoints =
true;
139 bool res = run(mesh, parm(
"Length").toDouble(), parm(
"Tri Size").toDouble(),
stringToBool(parm(
"Keep Mesh")), addEdgePoints);
147 bool run(
Mesh *mesh,
double length,
double triSize,
bool keep,
bool addEdgePoints);
154 void drawPlane(
const Process& process, Mesh *m, DivisionPlane& vtxTris,
Point3d scalingNormal =
Point3d(0,0,0),
double scalingFac = 1);
160 void simulateDivision2D(std::vector<vertex>& cellContour,
Point3d& divP,
Point3d divNormal, std::vector<P3dDouble>& samplingDirections, std::vector<CellDivision>& allDivisions,
161 Point3d& shortestPlaneNrml,
double& shortesPlaneDispl);
std::map< int, Point3d > cellNormalMap
DivisionPlane divPlaneShortest
std::map< cell, double > cellBetwMap
std::map< int, Point3d > cellNormalMap
std::vector< vertex > vtxs
DivisionPlane optimalPlane
bool run()
Runs the process.
void simulateDivision2D(std::vector< vertex > &cellContour, Point3d &divP, Point3d divNormal, std::vector< P3dDouble > &samplingDirections, std::vector< CellDivision > &allDivisions, Point3d &shortestPlaneNrml, double &shortesPlaneDispl)
void drawPlane(const Process &process, Mesh *m, DivisionPlane &vtxTris, Point3d scalingNormal=Point3d(0, 0, 0), double scalingFac=1)
std::map< cell, double > cellCurrentFlowMap
void setShowMesh(bool show=true)
Set the mesh visibility.
Distributed matrix library.
bool run()
Runs the process.
mgx_EXPORT bool stringToBool(const QString &string)
Helper function converting a string into a boolean.
DivisionPlane(double size, Point3d planeNrml, Point3d planePos, int label)
Vector< 3, double > Point3d
DivisionPlane divPlaneShortestBest
MakeMeshCircleDA(const Process &process)
MakeMeshTetraDA(const Process &process)
DivisionPlane divPlaneShortestBestRW
std::vector< CellDivision > divData
std::vector< Point3i > tris
DivisionPlane divPlaneFlat
std::vector< DivisionPlane > customPlanes