|
| MLCSO_EXPORT bool | ml::CSOGeometry::computeIsInPlane (const CSO *cso, Vector3 &planeNormal, double angleEpsilon=1e-3, double collinearEpsilon=1e-3) |
| | Returns whether all path points lie in one plane, and fills the plane normal.
|
| |
| MLCSO_EXPORT bool | ml::CSOGeometry::computeIsInPlane (const std::vector< Vector3 > &points, Vector3 &planeNormal, double angleEpsilon=1e-3, double collinearEpsilon=1e-3) |
| | Returns whether the specified positions form a contour that is in-plane.
|
| |
| MLCSO_EXPORT Vector3 | ml::CSOGeometry::computeNewellsNormal (const std::vector< Vector3 > &points) |
| | Returns a normal for the specified list of points using Newell's method.
|
| |
| MLCSO_EXPORT bool | ml::CSOGeometry::arePointsCollinear (const std::vector< Vector3 > &points, double epsilon) |
| | Returns whether all points are collinear.
|
| |
| MLCSO_EXPORT bool | ml::CSOGeometry::areCollinear (const Vector3 &vec1, const Vector3 &vec2, double epsilon=1e-3) |
| | Returns whether the given vectors are collinear.
|
| |
| MLCSO_EXPORT bool | ml::CSOGeometry::canFormPlane (const Vector3 &vec1, const Vector3 &vec2, double epsilon=1e-3) |
| | Returns whether both given vectors can form a plane, i.e., are not collinear or any of the vector is too short.
|
| |
| MLCSO_EXPORT bool | ml::CSOGeometry::isSelfIntersecting (const std::vector< Vector3 > &positions, std::vector< Vector3 > &intersectPoints, bool isClosed) |
| | Returns whether the specified list of points interpreted as a contour intersects itself.
|
| |
| MLCSO_EXPORT bool | ml::CSOGeometry::isSelfIntersecting (const std::vector< Vector3 > &positions, bool isClosed) |
| | Returns whether the specified list of points interpreted as a contour intersects itself.
|
| |
| MLCSO_EXPORT bool | ml::CSOGeometry::isSelfIntersecting (const CSO *cso) |
| | Returns whether the specified contour intersects itself.
|
| |
| MLCSO_EXPORT bool | ml::CSOGeometry::isSelfIntersecting (const CSO *cso, std::vector< Vector3 > &intersectPositions) |
| | Returns whether the specified contour intersects itself. Fills up the specified intersectPositions vector.
|
| |
| MLCSO_EXPORT double | ml::CSOGeometry::computeSegmentSegmentDistance (const Vector3 &start0, const Vector3 &end0, const Vector3 &start1, const Vector3 &end1, Vector3 &intersectionPoint, bool &isParallel) |
| | Returns the minimum distance between the two specified segments. If this distance is 0, the intersectionPoint is valid.
|
| |
| MLCSO_EXPORT double | ml::CSOGeometry::computeSegmentSegmentDistance (const Vector3 &start0, const Vector3 &end0, const Vector3 &start1, const Vector3 &end1, Vector3 &intersectionPoint) |
| | /deprecated
|
| |
| MLCSO_EXPORT int | ml::CSOGeometry::intersect2DSegments (const Vector2 &start0, const Vector2 &end0, const Vector2 &start1, const Vector2 &end1, Vector2 &intersection0, Vector2 &intersection1) |
| | Computes whether the two specified 2D segments intersect; if they intersect, the intersection point is valid.
|
| |
| bool | ml::CSOGeometry::isInSegment (const Vector2 &point, const Vector2 &segmentStart, const Vector2 &segmentEnd) |
| | Helper function for intersect2DSegments.
|
| |
| MLdouble | ml::CSOGeometry::perp (const Vector2 &v0, const Vector2 &v1) |
| | Helper function for intersect2DSegments.
|
| |
| MLCSO_EXPORT bool | ml::CSOGeometry::areInSamePlane (const CSO *cso0, const CSO *cso1, MLdouble angleEpsilon=10e-5, MLdouble minPlaneDistanceInMM=10e-5) |
| | Returns whether the two specified CSOs lie in the same plane.
|
| |
| MLCSO_EXPORT bool | ml::CSOGeometry::areOverlapping (const CSO *cso0, const CSO *cso1, MLdouble epsilon=10e-5, MLdouble minPlaneDistanceInMM=10e-5) |
| | Returns whether any path point of cso0 is within cso1 or vice versa.
|
| |
| MLCSO_EXPORT void | ml::CSOGeometry::rotateAndProject (Rotation &rot, Vector3 &voxelPos, bool shouldProject=true) |
| | Transforms and projects a voxelPos according to a rotation.
|
| |
| MLCSO_EXPORT void | ml::CSOGeometry::rotateAroundAxis (const Vector3 &axis, const Vector3 ¢erPoint, Vector3 &pointToRotate, double angleInRadian) |
| | Rotates the specified pointToRotate around the axis originating from centerPoint by angleInRadian.
|
| |
| MLCSO_EXPORT void | ml::CSOGeometry::level (CSO *cso) |
| | Determines the normal and the center of gravity of the specified CSO.
|
| |
| MLCSO_EXPORT void | ml::CSOGeometry::level (std::vector< Vector3 > &positions) |
| | Levels the specified positions so that they all lie on the average plane of the input positions.
|
| |
| MLCSO_EXPORT void | ml::CSOGeometry::levelToPlane (CSO &cso, const Vector3 &normal, const Vector3 &planeAnchorPoint) |
| | Projects all seed points and all path points to the plane that is defined by the specified normal and plane anchor point.
|
| |
| MLCSO_EXPORT std::vector< Vector2 > | ml::CSOGeometry::projectTo2D (const std::vector< Vector3 > &points, const Vector3 &normal, const Vector3 &planeAnchorPoint) |
| | Projects the 3D points to 2D by subtracting planeAnchorPoint, rotating from the normal vector to (0,0,1) and discarding the z positions.
|
| |
| MLCSO_EXPORT std::vector< Vector3 > | ml::CSOGeometry::backprojectTo3D (const std::vector< Vector2 > &points, const Vector3 &normal, const Vector3 &planeAnchorPoint) |
| | Back-projects the 2D points to 3D by rotating from (0,0,1) to the normal vector and adding planeAnchorPoint.
|
| |
| MLCSO_EXPORT double | ml::CSOGeometry::getLargestDistanceBetweenAllPathPoints (CSO &cso, Vector3 &point0, Vector3 &point1) |
| | Returns the largest distance between any of the path points of the CSO.
|
| |
| MLCSO_EXPORT void | ml::CSOGeometry::translate (CSO *cso, const Vector3 &translation) |
| | Translates a CSO with all its seed- and path points by the specified translation vector.
|
| |
| MLCSO_EXPORT bool | ml::CSOGeometry::isPointInsidePolygon (const std::vector< Vector3 > &polygonPoints, const Vector3 &point) |
| | Returns whether a point is inside the polygon defined by the specified list of positions.
|
| |
| MLCSO_EXPORT void | ml::CSOGeometry::appendUniquePosition (std::vector< Vector3 > &positions, Vector3 pos) |
| | Appends a new point to the specified vector without double insertions.
|
| |
| MLCSO_EXPORT Vector3 | ml::CSOGeometry::getCenterOfGravity (CSO *cso, bool considerSeedPointsExtra=false) |
| | Returns the center of gravity of a specified CSO.
|
| |
| MLCSO_EXPORT Vector3 | ml::CSOGeometry::getCenterOfGravity (const std::vector< Vector3 > &positions) |
| | Returns the center of gravity of the specified positions.
|
| |
| MLCSO_EXPORT double | ml::CSOGeometry::distanceToLine (const Vector3 &point, const Vector3 &linePoint1, const Vector3 &linePoint2) |
| | Computes distance of point to (infinite) line specified by two other points.
|
| |
| MLCSO_EXPORT double | ml::CSOGeometry::squaredDistanceToLineSegment (const Vector3 &point, const Vector3 &linePoint1, const Vector3 &linePoint2) |
| | Computes the squared distance of point to line segment specified by two other points.
|
| |
| MLCSO_EXPORT double | ml::CSOGeometry::squaredDistanceToLineSegment (const Vector3 &point, const Vector3 &linePoint1, const Vector3 &linePoint2, Vector3 &resultPoint) |
| | Computes the squared distance of point to line segment specified by two other points.
|
| |
| MLCSO_EXPORT double | ml::CSOGeometry::squaredDistanceToLineSegment (const Vector2 &point, const Vector2 &linePoint1, const Vector2 &linePoint2) |
| | Computes the squared distance of point to line segment specified by two other points.
|
| |
| MLCSO_EXPORT void | ml::CSOGeometry::computeClosestSeedPoint (CSO *cso, const Vector3 &referencePoint, unsigned int &resultSeedPointIndex) |
| | Returns the closest point on a CSO to the specified reference point.
|
| |
| MLCSO_EXPORT void | ml::CSOGeometry::computeClosestPathPoint (CSO *cso, const Vector3 &referencePoint, unsigned int &resultPathPointListIndex, unsigned int &resultPathPointIndex, Vector3 &resultPosition) |
| | Returns the closest path point of a CSO to the specified reference point without interpolation.
|
| |
| MLCSO_EXPORT void | ml::CSOGeometry::computeClosestPoint (CSO *cso, const Vector3 &referencePoint, unsigned int &resultPathPointListIndex, unsigned int &resultPathPointIndex, Vector3 &resultPosition) |
| | Returns the closest point on a CSO to the specified reference point. Interpolates the closest point on the line segments.
|
| |
| MLCSO_EXPORT void | ml::CSOGeometry::computeClosestPoint (const std::vector< Vector3 > &pointList, const Vector3 &referencePoint, unsigned int &resultPointIndex, Vector3 &resultPosition) |
| | Returns the closest point on the specified list of positions.
|
| |
| MLCSO_EXPORT double | ml::CSOGeometry::computeDistance (CSO *cso, const Vector3 &referencePoint) |
| | Returns the distance of the specified point to the specified CSO.
|
| |
| MLCSO_EXPORT double | ml::CSOGeometry::computeLength (const CSOPathPointIterator &startIter, const CSOPathPointIterator &endIter) |
| | Computes the length of a CSO between two PathPointIterators.
|
| |
| MLCSO_EXPORT double | ml::CSOGeometry::computeDiameter (const CSO *cso) |
| | Computes the maximum distance between any two path points in the specified CSO.
|
| |
| MLCSO_EXPORT double | ml::CSOGeometry::computeDiameter (const std::vector< Vector3 > &positions) |
| | Computes the maximum distance between any two points in the specified vector.
|
| |
| MLCSO_EXPORT void | ml::CSOGeometry::thinOutCSO (CSO *cso, float quality=0.5f, ReductionMode reductionMode=REDUCTION_MODE_ANGLE_AND_LENGTH, unsigned int minPoints=5, float maxAngleLimit=1.0) |
| | Thins out the specified CSO by removing all positions that do not contribute to the overall geometry (angle and length criterion).
|
| |
| MLCSO_EXPORT void | ml::CSOGeometry::thinOutPointList (std::vector< Vector3 > &positionList, float quality=0.5f, ReductionMode reductionMode=REDUCTION_MODE_ANGLE_AND_LENGTH, unsigned int minPoints=5, float maxAngleLimit=1.0) |
| | Thins out the specified list of positions by removing all positions that do not contribute to the overall geometry (angle and length criterion).
|
| |
| MLCSO_EXPORT bool | ml::CSOGeometry::csoIsEnclosedByCSO (CSO *toTestInnerCSO, CSO *toTestOuterCSO) |
| | Returns whether the first specified CSO lies fully within the second specified CSO without crossing.
|
| |
| MLCSO_EXPORT size_t | ml::CSOGeometry::getLevelOfEmbedding (const CSOListPtr &csoList, std::vector< size_t > &result) |
| | Writes the level of embedding of the CSOs in the specified CSOList into the specified vector of integers.
|
| |
| MLCSO_EXPORT size_t | ml::CSOGeometry::getLevelOfEmbedding (const std::vector< CSO * > &csos, std::vector< size_t > &result, std::vector< std::vector< size_t > > &enclosedCSOIndices) |
| | Extension of getLevelOfEmbedding that also records the indices of the CSOs enclosed by each CSO.
|
| |
| MLCSO_EXPORT void | ml::CSOGeometry::groupByLevelOfEmbedding (const std::vector< CSO * > &csos, std::vector< std::vector< CSO * > > &groupedCSOs) |
| | Arranges the specified CSOs into a vector of vectors so that CSOs embedded into each other are grouped together with increasing level of embedding.
|
| |
| MLCSO_EXPORT double | ml::CSOGeometry::computeSumOfAreas (const CSOListPtr &csoList) |
| | Returns the sum of areas of all CSOs in csoList. Area is counted negative if level of embedding is odd.
|
| |
| MLCSO_EXPORT double | ml::CSOGeometry::computeVolume (const CSOListPtr &csoList, double sliceThickness) |
| | Returns the sum of areas of all CSOs in csoList, multiplied by the specified sliceThickness, in milliliters.
|
| |
| MLCSO_EXPORT bool | ml::CSOGeometry::isApproximatelyParallel (const CSO *cso, const Vector3 &normal, double epsilon=0.1) |
| | Returns whether the specified CSO is approximately parallel to a plane specified by the normal vector.
|
| |
| MLCSO_EXPORT void | ml::CSOGeometry::orthogonalizePreserveLength (const Vector3 &reference, Vector3 &toAdjust) |
| | Makes the specified vector toAdjust perpendicular to the specified reference vector while preserving its length.
|
| |
| template<class T > |
| bool | ml::CSOGeometry::isSamePosition (const T &pos1, const T &pos2) |
| | Returns whether the two positions are considered equal as points of a CSO.
|
| |