|
|
int | cellId () const |
| | Returns the cell id.
|
| |
| SegmentId | segmentId () const |
| | Returns the segment id (discontinuity index in the set + segment index in the intersection list)
|
| |
|
void | setSegmentIdIndex (int index) |
| | Updates the segment index part of the segment Id.
|
| |
|
GmSegmentCellIntersectionPointKind | kind (int i) const |
| | Returns the intersection kind for the given intersection point (0 = first, 1 = second).
|
| |
|
int | border (int i) const |
| | If kind(i) is not INTERNAL, returns the local node / edge index for the given intersection point (0 = first, 1 = second). If it is, returns -1.
|
| |
|
int | edge () const |
| | If the segment lies over an edge, returns the intersected edge number. -1 otherwise.
|
| |
| GmVector | cartCoord (int i) const |
| | Returns the cartesian coordinate for the given intersection point (0 = first, 1 = second), IN the MESH UNIT coordinates.
|
| |
|
const double * | rawCartCoord (int i) const |
| | Same as cartCoord(i) but returning a pointer to the internal buffer. No cdata copy to construct a GmVector.
|
| |
|
GmVector | natCoord (int i) const |
| | Returns the natural coordinate for the given intersection point (0 = first, 1 = second).
|
| |
|
GmVector | normal () const |
| |
|
bool | continuous () const |
| | Returns true if this intersection segment start point is the same as the last point for the previous intersection.
|
| |
|
void | setContinuous (bool mode) |
| | Updates the continuous flag.
|
| |
|
bool | segmentIntersection () const |
| | Returns true if this intersection segment takes part in an inter segments intersection.
|
| |
|
void | setSegmentIntersection () |
| | Mark this intersection as taking part in an inter segments intersection.
|
| |
|
bool | hasIntersectionElementId () const |
| | Returns true if this object was created with the option to store an intersection element id.
|
| |
|
int | intersectionElementId () const |
| |
|
void | setIntersectionElementId (int id) |
| | Updates the stored intersection element id. Can only be called if hasIntersectionElementId() returns true.
|
| |
|
void | updateOutputData (const GmCompact2DSegmentCellIntersection *out, int edge) |
| | Updates the "out" data with the values from the given object. Updates edge with the given value.
|
| |
|
void | updateOutputData (const GmVector &cartCoord, const GmVector &natCoord, GmSegmentCellIntersectionPointKind kind, int border) |
| | Updates the "out" data with the given values. !!Does not change normal!!
|
| |
|
void | print (const GmPCR *pcr, const GmLogCategory &logger, GmLogLevel level) const |
| | Prints the contents of the intersection to the given logger.
|
| |
|
size_t | memSize () const |
| | Returns the (computed) memory size allocated for this class when ::instace was called.
|
| |
|
void | operator delete (void *ptr) |
| | Matching operator delete.
|
| |
|
void | operator delete (void *ptr, int, bool) |
| | Matching operator delete for the placement new. Needed in case of exceptions in the constructor.
|
| |
|
|
int | _cellId |
| | The cell id.
|
| |
|
SegmentId | _segmentId |
| | The segment id (discontinuity id + segment index)
|
| |
|
quint8 | _kindAndFlags |
| | The kind enum value for both intersection points compacted at bits 1-3 (first) / 4-6 (second). Bits 7 and 8 are used for the continuous and intersection flags.
|
| |
|
qint8 | _border [2] |
| | The local node / edge index, for the first ([0]) and second ([1]) intersection points, if _kind is not INTERNAL. -1 if it is.
|
| |
|
quint8 | _edgeAndNatSize |
| | 6 most significant bits store the edge number, if the segment lies over an edge, or -1 otherwise. 2 least significant bits store flags. Bit 1 is 1 if natural coordinates have 3 components and bit 2 is 1 if there is extra space for the intersection element id in the _natCoord vector.
|
| |
|
double | _cartCoord [4] |
| | The set of cartesian coordinates (x1, y1, x2, y2) for the first and second intersection points in the polyline direction.
|
| |
|
double | _normal [2] |
| | The approximated normal from the original segment(s)
|
| |
|
double | _natCoord [1] |
| | Start of the vector used for storing natural coordinates for both in and out intersection points. Its real size is either 4 or 6 doubles and the extra needed entries are allocated with the object by the instance function. Unfortunatelly, C99 flexible arrays are not part of the C++ standard so we can not declare it as _natCoordinates[] If hasIntersectionElementId() returns true, the first entry of the vector is used to store the intersection element id (as a double) and in this scenario the vector size is effectively 5 or 7 doubles.
|
| |
A (much more) compact version of GmSegmentCellIntersection for 2d intersections only. Must be created on the heap by a call to instance().
When using two natural coordinates, this structure uses 80 bytes. For 3 natural coordinates, 96 bytes (add 8 bytes if the intersection element id is stored). A GmSegmentCellIntersection structure takes 752 bytes (without the intersection element id), mostly due to the GmVector internal allocation of space for 16 vector entries + control data, but also due to poor alignment packing of the other fields.
| GmVector GmCompact2DSegmentCellIntersection::cartCoord |
( |
int | i | ) |
const |
|
inline |
Returns the cartesian coordinate for the given intersection point (0 = first, 1 = second), IN the MESH UNIT coordinates.
IMPORTANT: When querying coordinates from a PHYSICS implementation, or any other situation that allows for the mesh
coordinates to be expressed in a different unit, PLEASE make use of a GmSegmentCell2DIntersectionCoordAccessor retrieved
from the discontinuity set using the current physics coordinate unit. That is also automated by the common Fem physics
object.