24#ifndef _GEMA_POLYLINE_DISCONTINUITY_H_
25#define _GEMA_POLYLINE_DISCONTINUITY_H_
87 virtual void setGeometry(
double* dvec,
int nd,
int* ivec,
int ni)
89 Q_UNUSED(ni); Q_UNUSED(ivec);
90 assert(dvec && !ivec);
99 bool* intersects,
double inout[2],
bool snap[2],
int* outgoingBorder,
103 double snapTol,
bool* intersects,
double inout[2],
bool snap[2],
int* outgoingBorder,
114 double* firstPos,
double* secondPos,
GmVector& cartPos);
Base interface for mesh cells.
Definition gmCell.h:88
Base interface class for CellMesh type plugins.
Definition gmCellMesh.h:40
A (much more) compact version of GmSegmentCellIntersection for 2d intersections only....
Definition gmSegmentCellIntersection.h:109
The geometric representation for a single discontinuity from the Discontinuity set....
Definition gmDiscontinuity.h:38
int index() const
Returns this discontinuity index in the father set.
Definition gmDiscontinuity.h:44
QString id() const
Returns the discontinuity id (name)
Definition gmDiscontinuity.h:47
Base interface for providing discontinuity geometry information for spatial indices.
Definition gmDiscontinuitySet.h:59
Definition gmDiscontinuitySet.h:357
Class representing a category with multiple logging levels.
Definition gmLog.h:58
Polyline 2D representation for a discontinuity.
Definition gmPolylineDiscontinuity.h:43
GmPolylineDiscontinuity(const GmDiscontinuitySet *ds, int index, QString id, int groupIndex, const QVector< int > &psIndex)
Constructor.
Definition gmPolylineDiscontinuity.h:83
virtual int numIntersections() const
A generic interface to return the number of intersections between the mesh and the user given geometr...
Definition gmPolylineDiscontinuity.h:54
virtual bool findIntersections(const GmLogCategory &logger)
Finds the intersections between this discontinuity and the associated mesh, using parameters stored i...
Definition gmPolylineDiscontinuity.cpp:119
virtual void clearGeometry()
Clears the original discontinuity geometry information, releasing memory.
Definition gmPolylineDiscontinuity.cpp:82
int _numPoints
The number of points in the polyline. Number of segments is (_numPoints - 1)
Definition gmPolylineDiscontinuity.h:120
virtual size_t usedGeometryMemory() const
Returns an estimative of the memory used by the discontinuity geometry in bytes.
Definition gmPolylineDiscontinuity.h:70
QVector< QPair< int, QVector< GmCompact2DSegmentCellIntersection * > > > _brokenList
A temporary list built incrementally by calls to breakIntersectionSegment() with the new broken segme...
Definition gmPolylineDiscontinuity.h:140
GmSegmentCellIntersection segmentConvexLinearElementIntersection(const GmPolylineSegment &segment, int segmentId, const GmCell *cell, const GmValueAccessor *coordAc, int incomingBorder, double snapTol, bool *intersects, double inout[2], bool snap[2], int *outgoingBorder, const GmLogCategory &logger) const
Given a discontinuity segment and a CONVEX, LINEAR, non interface cell, calculates their intersection...
Definition gmPolylineDiscontinuity.cpp:391
virtual void printGeometry(const GmLogCategory &logger, GmLogLevel level) const
Prints the discontinuity geometry information.
Definition gmPolylineDiscontinuity.cpp:90
const GmCell * findAdjacentCell(const GmCellMesh *mesh, const GmCell *cell, int edgeIndex, int *adjCellEdge) const
Brute force method for finding cell adjacency when lacking a topological mesh. Updates adjCellEdge to...
Definition gmPolylineDiscontinuity.cpp:1006
bool checkMeshPreconditions(const GmCellMesh *mesh, const GmLogCategory &logger) const
Check mesh preconditions, using looger to emmit warnings / error messages.
Definition gmPolylineDiscontinuity.cpp:948
static bool segmentIntersection(const GmCompact2DSegmentCellIntersection *firstSegment, const GmCompact2DSegmentCellIntersection *secondSegment, double *firstPos, double *secondPos, GmVector &cartPos)
Helper function for the process of finding intersections among different intersection segments inside...
Definition gmPolylineDiscontinuity.cpp:1060
virtual void setGeometry(double *dvec, int nd, int *ivec, int ni)
Sets the geometry. dvec should be a vector with coordinates (size nd * 2), nd the number of coordinat...
Definition gmPolylineDiscontinuity.h:87
GmSegmentCellIntersection findSegmentEntryPoint(const GmPolylineSegment &segment, int segmentId, const GmValueAccessor *coordAc, double snapTol, bool *intersects, double inout[2], bool snap[2], int *outgoingBorder, GmCell const **cell, const GmLogCategory &logger) const
Traverses the mesh seeking for the segment-element intersection closest to the segment start.
Definition gmPolylineDiscontinuity.cpp:728
virtual ~GmPolylineDiscontinuity()
Destructor.
Definition gmPolylineDiscontinuity.cpp:73
bool breakIntersectionSegment(GmCompact2DSegmentCellIntersection *segment, double natPos, const GmVector &cartPos, GmValueAccessor *coordAc, GmCompact2DSegmentCellIntersection **newSegment, const GmLogCategory &logger)
Helper function for the process of finding intersections among different intersection segments inside...
Definition gmPolylineDiscontinuity.cpp:1104
const QVector< GmCompact2DSegmentCellIntersection * > & intersectionList() const
Returns the intersection list (filled by a call to findIntersections())
Definition gmPolylineDiscontinuity.h:63
QVector< GmCompact2DSegmentCellIntersection * > _intList
The intersection list, filled by a call to findIntersections(). We store pointers to the data to: 1) ...
Definition gmPolylineDiscontinuity.h:132
void removeInternalNodes(const GmValueAccessor *coordAc, double snapTol, const GmLogCategory &logger)
Remove internal node so that every intersection segment traverses the element from one edge to anothe...
Definition gmPolylineDiscontinuity.cpp:788
const double * pointCoordinates() const
Returns the polyline coordinates vector, organized as x1, y1, x2, y2, .... Size equal to numPoints() ...
Definition gmPolylineDiscontinuity.h:60
virtual int numPoints() const
A generic interface to return the original discontinuity data number of points.
Definition gmPolylineDiscontinuity.h:51
virtual size_t usedIntersectionMemory() const
Returns an estimative of the memory used by the intersection data in bytes.
Definition gmPolylineDiscontinuity.h:76
virtual void printIntersections(const GmLogCategory &logger, GmLogLevel level) const
Prints the discontinuity-mesh intersection information.
Definition gmPolylineDiscontinuity.cpp:104
double * _pointCoord
The coordinate vector. Size == _numPoints * 2.
Definition gmPolylineDiscontinuity.h:121
virtual bool extendGeometry(GmCellMesh *sMesh, double size, const GmLogCategory &logger)
Definition gmPolylineDiscontinuity.cpp:1261
QVector< GmCell * > findNodeCellsBall(const GmCellMesh *mesh, int nodeIndex) const
Brute force method for finding the cells containing a node as a vertex when lacking a topological mes...
Definition gmPolylineDiscontinuity.cpp:1036
void intersectionSegmentBreakingEnded()
Helper function for the process of finding intersections among different intersection segments inside...
Definition gmPolylineDiscontinuity.cpp:1198
virtual int numElements() const
A generic interface to return the original discontinuity data number of geometric elements....
Definition gmPolylineDiscontinuity.h:48
Definition gmPolylineDiscontinuity.cpp:54
Interface class for accessing and setting values from an "indexable" collection of values.
Definition gmValueAccessor.h:60
Declaration of the GmDiscontinuity class.
GmLogLevel
Available log levels list.
Definition gmLog.h:36
Declaration of the GmSegmentCellIntersection class & friends.
arma::vec GmVector
The basic type for a GeMA vector object. Currently based on an Armadillo vector.
Definition gmVector.h:34
int capacity() const const
Representation for the intersection between a polyline segment and a mesh cell. Can be used both in 2...
Definition gmSegmentCellIntersection.h:61