#include <geometryutils.h>
2D and 3D geometrical utility functions.
Static Public Member Functions | |
static MAXON_METHOD Float | LinearRemapToRange (Float value, Float from1, Float to1, Float from2, Float to2) |
static MAXON_METHOD Float | GetAngle2D (const Vector2d &direction1, const Vector2d &direction2) |
static MAXON_METHOD Float | InterpolatePointOnSegment (const Vector &segmentPoint1, const Vector &segmentPoint2, const Vector &point, Bool clamp=true) |
static MAXON_METHOD Float | InterpolatePointOnSegment2D (const Vector2d &segmentPoint1, const Vector2d &segmentPoint2, const Vector2d &point, Bool clamp=true) |
static MAXON_METHOD Bool | CalculateBestFitPlane (const Block< const Vector > &pointCloud, Vector ¢roid, Vector &normal, Int iterMax=500) |
static MAXON_METHOD Result< void > | Points3Dto2D (const Block< const Vector > &points, const Vector &normal, Vector &basisVector0, Vector &basisVector1, Vector &translate, Bool checkDegenerated, WritableArrayInterface< Vector2d > &outPoints, Bool computeBasis=true) |
static MAXON_METHOD Result< void > | Points3Dto2D (const Block< const Vector > &points, const Vector &normal, Bool checkDegenerated, WritableArrayInterface< Vector2d > &outPoints) |
static MAXON_METHOD Vector | Point2Dto3D (const Vector2d &point, const Vector &basisVector0, const Vector &basisVector1, const Vector &translate) |
static MAXON_METHOD Result< void > | Points2Dto3D (const Block< const Vector2d > &points, const Vector &basisVector0, const Vector &basisVector1, const Vector &translate, WritableArrayInterface< Vector > &outPoints) |
static MAXON_METHOD Float | CalculateTriangleArea (const Vector &a, const Vector &b, const Vector &c) |
static MAXON_METHOD Float | CalculateSignedTriangleArea (const Vector &a, const Vector &b, const Vector &c) |
static MAXON_METHOD Float | CalculateQuadrangleArea (const Vector &a, const Vector &b, const Vector &c, const Vector &d) |
static MAXON_METHOD Float | CalculateOutlineArea (const Block< const Vector > &outlinePoints) |
static MAXON_METHOD Vector | CalculateOutlineNormal (const Block< const Vector > &points, const Block< const Int32 > &indices, Bool normalized=true) |
static MAXON_METHOD Vector | CalculateOutlineNormal (const Block< const Vector > &points, Bool normalize=true) |
static MAXON_METHOD Bool | IsVertexConvex (const Vector &vertex, const Vector &next, const Vector &pred, const Vector &up=Vector(0, 1, 0)) |
static MAXON_METHOD Result< void > | CalculateMeanValueCoordinatesWeights (const Vector &point, const Block< const Vector > &outline, WritableArrayInterface< Float > &weights) |
static MAXON_METHOD Bool | IsVertexConvex2D (const Vector2d &vertex, const Vector2d &next, const Vector2d &pred) |
static MAXON_METHOD Vector2d | CalculateBarycentricCoordinate (const Vector &point, const Vector &a, const Vector &b, const Vector &c) |
static MAXON_METHOD Vector | CalculateBarycentricCoordinate3D (const Vector &point, const Vector &a, const Vector &b, const Vector &c) |
static MAXON_METHOD Bool | PointInTriangle (const Vector &point, const Vector &a, const Vector &b, const Vector &c) |
static MAXON_METHOD Bool | PointInTriangle2D (const Vector2d &point, const Vector2d &a, const Vector2d &b, const Vector2d &c) |
static MAXON_METHOD Int | GetPointInPolygonWindingNumber2D (Vector2d point, const Block< const Vector2d > &outline) |
static MAXON_METHOD Int | GetPointInPolygonWindingNumber2DExact (Vector2d point, const Block< const Vector2d > &outline) |
static MAXON_METHOD Int | GetPointInPolygonWindingNumber2D (Vector2d point, const Block< const Vector2d > &outline, Int &edgeHit) |
static MAXON_METHOD Int | GetPointInPolygonWindingNumber (Vector point, const Block< const Vector > &outline) |
static MAXON_METHOD Int | GetPointInPolygonWindingNumber (Vector point, const Block< const Vector > &outline, Int &edgeHit) |
static MAXON_METHOD Bool | PointInOutline2D (const Vector &point, const Block< const Vector2d > &outline) |
static MAXON_METHOD Vector | CalculateBisector (const Vector &v1, const Vector &v2, const Vector &up=Vector(0, 1, 0), Float w1=1.0, Float w2=1.0) |
static MAXON_METHOD Bool | CalculateCircumcenter2D (const Vector2d &a, const Vector2d &b, const Vector2d &c, Vector2d ¢er, Float &sqrRad, Float tolerance=GeomConstants::EPSILON4) |
static MAXON_METHOD Bool | CalculateCircumcenter (const Vector &a, const Vector &b, const Vector &c, Vector ¢er, Float &rad, Float tolerance=GeomConstants::EPSILON4) |
static MAXON_METHOD Bool | SegmentsIntersectionTest2D (const Vector2d &segment1Point1, const Vector2d &segment1Point2, const Vector2d &segment2Point1, const Vector2d &segment2Point2) |
static MAXON_METHOD Bool | IntersectsSegments2D (const Vector2d &segment1Point1, const Vector2d &segment1Point2, const Vector2d &segment2Point1, const Vector2d &segment2Point2, Vector2d &intersectionPoint, Float tolerance=0.0) |
static MAXON_METHOD Vector | LineLineDistance (const Vector &line1Point, const Vector &line1Dir, const Vector &line2Point, const Vector &line2Dir, Bool ¶llel, Float ¶m1, Float ¶m2, Float tolerance=GeomConstants::EPSILON4) |
static MAXON_METHOD Bool | PointInSegment2D (const Vector2d &point, const Vector2d &segmentPoint1, const Vector2d &segmentPoint2, Float tolerance) |
static MAXON_METHOD Bool | PointInSegment (const Vector &point, const Vector &segmentPoint1, const Vector &segmentPoint2, Float tolerance=GeomConstants::EPSILON4) |
static MAXON_METHOD Bool | PointInHalfLine (const Vector &point, const Vector &halfLineOrigin, const Vector &halfLineDir, Float tolerance=GeomConstants::EPSILON4) |
static MAXON_METHOD Bool | IntersectLines (const Vector &line1Point, const Vector &line1Dir, const Vector &line2Point, const Vector &line2Dir, Vector &intersectionPoint, Float tolerance=GeomConstants::EPSILON4) |
static MAXON_METHOD Bool | IntersectLineSegment (const Vector &linePoint, const Vector &lineDir, const Vector &segmentPoint1, const Vector &segmentPoint2, Vector &intersectionPoint, Float tolerance=GeomConstants::EPSILON4) |
static MAXON_METHOD Bool | IntersectSegments (const Vector &segment1Point1, const Vector &segment1Point2, const Vector &segment2Point1, const Vector &segment2Point2, Vector &intersectionPoint, Float tolerance=GeomConstants::EPSILON4) |
static MAXON_METHOD Bool | IntersectHalfLines (const Vector &halfLine1Origin, const Vector &halfLine1Dir, const Vector &halfLine2Origin, const Vector &halfLine2Dir, Vector &intersectionPoint, Float tolerance=GeomConstants::EPSILON4) |
static MAXON_METHOD Bool | IntersectLineHalfLine (const Vector &linePoint, const Vector &lineDir, const Vector &halfLineOrigin, const Vector &halfLineDir, Vector &intersectionPoint, Float tolerance=GeomConstants::EPSILON4) |
static MAXON_METHOD Bool | IntersectHalfLineSegment (const Vector &halfLineOrigin, const Vector &halfLineDir, const Vector &segmentPoint1, const Vector &segmentPoint2, Vector &intersectionPoint, Float tolerance=GeomConstants::EPSILON4) |
static MAXON_METHOD Bool | IntersectPlanes (const Vector &plane1Point, const Vector &plane1Normal, const Vector &plane2Point, const Vector &plane2Normal, Vector &resLinePoint, Vector &resLineDirection, Float tolerance=GeomConstants::EPSILON4) |
static MAXON_METHOD Bool | IntersectLinePlane (const Vector &linePoint, const Vector &lineDir, const Vector &planePoint, const Vector &planeNormal, Vector &intersectionPoint, Float tolerance=GeomConstants::EPSILON4) |
static MAXON_METHOD Bool | IntersectLinePlane (const Vector &linePoint, const Vector &lineDir, const Vector &planePoint, const Vector &planeNormal, Vector &intersectionPoint, Float ¶m, Bool &samePlane, Float tolerance=GeomConstants::EPSILON4) |
static MAXON_METHOD Bool | IntersectSegmentPlane (const Vector &segmentPoint1, const Vector &segmentPoint2, const Vector &planePoint, const Vector &planeNormal, Vector &intersectionPoint, Float tolerance=GeomConstants::EPSILON4) |
static MAXON_METHOD Bool | IntersectHalfLinePlane (const Vector &halfLinePoint, const Vector &halfLineDir, const Vector &planePoint, const Vector &planeNormal, Vector &intersectionPoint, Float tolerance=GeomConstants::EPSILON4) |
static MAXON_METHOD Bool | IntersectLineTriangle (const Vector &linePoint, const Vector &lineDir, const Vector &a, const Vector &b, const Vector &c, Vector &intersectionPoint, Vector2d *barycCoords=nullptr, Float tolerance=GeomConstants::EPSILON4) |
static MAXON_METHOD Bool | IntersectHalfLineTriangle (const Vector &halfLineOrigin, const Vector &halfLineDir, const Vector &a, const Vector &b, const Vector &c, Vector &intersectionPoint, Vector2d *barycCoords=nullptr, Float tolerance=GeomConstants::EPSILON4) |
static MAXON_METHOD Bool | IntersectLineQuadrangle (const Vector &linePoint, const Vector &lineDir, const Vector &a, const Vector &b, const Vector &c, const Vector &d, Vector &intersectionPoint, Float tolerance=GeomConstants::EPSILON4) |
static MAXON_METHOD Bool | IntersectHalfLineQuadrangle (const Vector &halfLineOrigin, const Vector &halfLineDir, const Vector &a, const Vector &b, const Vector &c, const Vector &d, Vector &intersectionPoint, Float tolerance=GeomConstants::EPSILON4) |
static MAXON_METHOD Bool | IntersectSegmentTriangle (const Vector &segmentPoint1, const Vector &segmentPoint2, const Vector &a, const Vector &b, const Vector &c, Vector &intersectionPoint, Vector *barycCoords=nullptr, Float tolerance=GeomConstants::EPSILON4) |
static MAXON_METHOD Bool | TrianglesIntersectionTest (const Vector &t1a, const Vector &t1b, const Vector &t1c, const Vector &t2a, const Vector &t2b, const Vector &t2c, Float tolerance=GeomConstants::EPSILON4) |
static MAXON_METHOD Bool | CalculatePolygonPointST (const Vector &point, const Vector &pa, const Vector &pb, const Vector &pc, const Vector &pd, Bool isQuad, Float &s, Float &t, Float tolerance=GeomConstants::EPSILON4) |
static MAXON_METHOD void | InverseBilinarInterpolate (const Vector &pa, const Vector &pb, const Vector &pc, const Vector &pd, const Vector &point, Vector2d &bilinarVariables) |
static MAXON_METHOD void | InverseBilinarInterpolateNewton (const Vector &pa, const Vector &pb, const Vector &pc, const Vector &pd, const Vector &point, Int32 iterations, Vector2d &bilinarVariables) |
static MAXON_METHOD void | InverseBilinarInterpolate2D (const Vector2d &pa, const Vector2d &pb, const Vector2d &pc, const Vector2d &pd, const Vector2d &point, Vector2d &bilinarVariables) |
static MAXON_METHOD void | InverseBilinarInterpolate2DNewton (const Vector2d &pa, const Vector2d &pb, const Vector2d &pc, const Vector2d &pd, const Vector2d &point, Int32 iterations, Vector2d &bilinarVariables) |
static MAXON_METHOD Vector | BilinearInterpolate (const Vector &pa, const Vector &pb, const Vector &pc, const Vector &pd, const Float s, const Float t) |
static MAXON_METHOD Float | CalculateSignedTriangleArea (const Vector &a, const Vector &b, const Vector &c, const Vector &normal) |
static MAXON_METHOD Result< void > | CalculateMeanValueCoordinatesWeights (const Vector &point, const Block< const Vector > &outline, const Vector &normal, WritableArrayInterface< Float > &weights) |
Private Member Functions | |
MAXON_INTERFACE_NONVIRTUAL (GeometryUtilsInterface, MAXON_REFERENCE_NONE, "net.maxon.geom.geometryutils") | |
|
private |
|
static |
Remaps a value from one range to another.
[in] | value | The value to remap. |
[in] | from1 | First bound of source range. |
[in] | to1 | Second bound of source range. |
[in] | from2 | First bound of destination range. |
[in] | to2 | Second bound of destination range. |
|
static |
Gets the 2D angle between two direction vectors.
[in] | direction1 | First direction vector. |
[in] | direction2 | Second direction vector. |
|
static |
Calculates the normalized position of a point along a directed segment.
[in] | segmentPoint1 | First segment point. |
[in] | segmentPoint2 | Second segment point. |
[in] | point | The point position along the segment line. |
[in] | clamp | If true the resulting value will be clamped between 0 and 1. |
|
static |
Calculates the normalized position of a 2D point along a directed segment.
[in] | segmentPoint1 | First segment point. |
[in] | segmentPoint2 | Second segment point. |
[in] | point | The point position along the segment line. |
[in] | clamp | If true the resulting value will be clamped between 0 and 1. |
|
static |
Calculates the the best fit plane centroid and normal from a point cloud.
[in] | pointCloud | A block filled with point coordinates. |
[out] | centroid | The resulting point cloud centroid. |
[out] | normal | The resulting plane normal. |
[in] | iterMax | Max iteration for computation. |
|
static |
Projects 3D points as 2D points on a plane which is parallel to the points best fit plane and which passes through the origin of the world coordinate system.
[in] | points | Points 3D positions to project. |
[in] | normal | The normal vector of the plane onto which to project the points. |
[in,out] | basisVector0 | First basis vector of the 2D plane coordinate system. |
[in,out] | basisVector1 | Second basis vector of the 2D plane coordinate system. |
[out] | translate | Translation vector between the projection plane origin (which is the world CS origin) and the best fit plane origin (which is the orthogonal projection of the world CS origin to the fit plane). In other words, translation vector is the distance vector between the projection plane an the best fit planes. |
[in] | checkDegenerated | If true try to avoid cases where the resulting 2d outline contains coincident vertices. |
[out] | outPoints | Array containing 2D projected points positions. |
[out] | computeBasis | Compute basis vectors from the normal and the input points if enabled. |
|
static |
Projects 3D points as 2D points on a plane. Overloaded function.
[in] | points | Points 3D positions to project. |
[in] | normal | The normal vector of the plane onto which to project the points. |
[in] | checkDegenerated | If true try to avoid cases where the resulting 2d outline contains coincident vertices. |
[out] | outPoints | Array containing 2D projected points positions. |
|
static |
Calculates 3D world point coordinates from its 2D local coordinates.
[in] | point | Point 2D local coordinates. |
[in] | basisVector0 | First basis vector of the 2D local coordinate system. |
[in] | basisVector1 | Second basis vector of the 2D local coordinate system. |
[in] | translate | Translation vector. |
|
static |
Calculates 3D world points coordinates from its 2D local coordinates.
[in] | points | Points 2D local coordinates. |
[in] | basisVector0 | First basis vector of the 2D local coordinate system. |
[in] | basisVector1 | Second basis vector of the 2D local coordinate system. |
[in] | translate | Translation vector. |
[out] | outPoints | Points 3D world coordinates. |
|
static |
Calculates the area of a triangle.
[in] | a | Triangle point A. |
[in] | b | Triangle point B. |
[in] | c | Triangle point C. |
|
static |
Calculates the signed area of an oriented triangle. Sign is defined as the sign of the z coordinate of the triangle normal vector.
[in] | a | Triangle point A. |
[in] | b | Triangle point B. |
[in] | c | Triangle point C. |
|
static |
Calculates the area of a quadrangle.
[in] | a | Quadrangle point A. |
[in] | b | Quadrangle Point B. |
[in] | c | Quadrangle Point C. |
[in] | d | Quadrangle Point D. |
|
static |
Calculates the unsigned area of an outline defined by points in outlinePoints. If the points are not co-planar, they will be flattened on a "best fit" plane.
[in] | outlinePoints | An array with a point sequence. |
|
static |
Calculates the normal of an ngon outline.
[in] | points | A list of points that includes the outline points. |
[in] | indices | The indices in the points list for the outline points to use. The order is important. |
[in] | normalized | If true, the output normal will be normalized. |
|
static |
Calculates the normal of an ngon outline.
[in] | points | The correctly ordered points that include the points for the outline. |
[in] | normalize | If true, the output normal will be normalized. |
|
static |
A convexity test for vertex in between 2 other vertices in 3D space.
[in] | vertex | The vertex to check. |
[in] | next | The next point. |
[in] | pred | The prev point. |
[in] | up | Up vector or the normal of the polygon. |
|
static |
Calculates the mean value coordinates weights for a point inside an outline.
[in] | point | The point for which to calculate weights. |
[in] | outline | The outline. |
[in] | weights | Array of weights. The amount of entries in the resulting array is the same amount of outline vertices. |
|
static |
A convexity test for vertex in between two other vertices in 2D.
[in] | vertex | The vertex to check. |
[in] | next | The next point. |
[in] | pred | The prev point. |
|
static |
Calculates the barycentric UV coordinate of a point within a triangle.
[in] | point | The point. |
[in] | a | Triangle vertex A. |
[in] | b | Triangle vertex B. |
[in] | c | Triangle vertex C. |
c
, 'y' component of the vector is the coordinate of the point b
.
|
static |
Calculates the barycentric UVW coordinate of a point within a triangle.
[in] | point | The point. |
[in] | a | Triangle vertex A. |
[in] | b | Triangle vertex B. |
[in] | c | Triangle vertex C. |
|
static |
Checks if a point is inside a triangle.
[in] | point | The point to test. |
[in] | a | Triangle vertex A. |
[in] | b | Triangle vertex B. |
[in] | c | Triangle vertex C. |
|
static |
Checks if a point is inside triangle in 2D.
[in] | point | The point to test. |
[in] | a | Triangle vertex A. |
[in] | b | Triangle vertex B. |
[in] | c | Triangle vertex C. |
|
static |
Checks if a point is inside an outline.
[in] | point | The point ot test. |
[in] | outline | The array with outline points. |
|
static |
Checks if a point is inside an outline. Exact yet slower version.
[in] | point | The point ot test. |
[in] | outline | The array with outline points. |
|
static |
Checks if a point is inside an outline.
[in] | point | The point ot test. |
[in] | outline | The array with outline points. |
[out] | edgeHit | In case point lies on an outline edge this will be filled with the edge index, otherwise maxon::InvalidArrayIndex. |
|
static |
Checks if a point is inside an outline. Accepts 3d vectors but assumes points to lie in xy plane.
[in] | point | The point to test. |
[in] | outline | The array with outline points. |
|
static |
Checks if a point is inside an outline. Accepts 3d vectors but assumes points to lie in xy plane.
[in] | point | The point to test. |
[in] | outline | The array with outline points. |
[out] | edgeHit | In case point lies on an outline edge, this will be filled with the edge index. Otherwise the value maxon::InvalidArrayIndex is set. |
|
static |
Checks if a point is inside an outline.
[in] | point | The point ot test. |
[in] | outline | The array with outline points. |
|
static |
Calculates the 3D bisector angle using an up vector to identify the sliding surface. A custom weight for each side can optionally be specified.
[in] | v1 | First vector. |
[in] | v2 | Second vector. |
[in] | up | The up vector. |
[in] | w1 | Optional weight value for v1. |
[in] | w2 | Optional weight value for v2. |
|
static |
Calculates the circumcenter and radius of a planar triangle.
[in] | a | Triangle point A. |
[in] | b | Triangle point B. |
[in] | c | Triangle point C. |
[out] | center | Triangle circumcenter. |
[out] | sqrRad | Squared radius of the circle defined by the triangle points. |
[in] | tolerance | Geometric linear tolerance for the operation. |
|
static |
Calculates the circumcenter and radius of a triangle.
[in] | a | Triangle point A. |
[in] | b | Triangle point B. |
[in] | c | Triangle point C. |
[out] | center | Triangle circumcenter. |
[out] | rad | Radius of the circle defined by the triangle points. |
[in] | tolerance | Geometric linear tolerance for the operation. |
|
static |
Checks if two segments intersect in 2D space.
[in] | segment1Point1 | First segment point 1. |
[in] | segment1Point2 | First segment point 2. |
[in] | segment2Point1 | Second segment point 1. |
[in] | segment2Point2 | Second segment point 2. |
|
static |
Checks if two segment intersect in 2D space and calculates the intersection point (if any).
[in] | segment1Point1 | First segment point. |
[in] | segment1Point2 | First segment point. |
[in] | segment2Point1 | Second segment point. |
[in] | segment2Point2 | Second segment point. |
[out] | intersectionPoint | Calculated intersection point in xy plane. |
[in] | tolerance | Geometric linear tolerance for the operation by default = 0.0. |
|
static |
Calculates min distance for given lines, fill param1/param2 with parametrized distance form first point.
[in] | line1Point | A point on first line. |
[in] | line1Dir | First line direction vector. |
[in] | line2Point | A point on second line. |
[in] | line2Dir | Second line direction vector. |
[out] | parallel | The function set it true if the tow line are parallel. |
[out] | param1 | Parametrized distance from fist line first point where the distance is calculated (p = line1Point + !line1Dir * param1) |
[out] | param2 | Parametrized distance from second line first point where the distance is calculated (p = line2Point + !line2Dir * param2) |
[in] | tolerance | Geometric linear tolerance for the operation. |
|
static |
Checks if a point is on a line segment in 2D. The tolerance value is used for the colinearity test only, not for the boundary test.
[in] | point | The point to check. |
[in] | segmentPoint1 | 1st Segment point. |
[in] | segmentPoint2 | 2nd Segment point. |
[in] | tolerance | Geometric linear tolerance for the operation. |
|
static |
Checks if a point is on a line segment in 3D. The tolerance value is used for the colinearity test only, not for the boundary test.
[in] | point | The point to check. |
[in] | segmentPoint1 | 1st Segment point. |
[in] | segmentPoint2 | 2nd Segment point. |
[in] | tolerance | Geometric linear tolerance for the operation. |
|
static |
Checks if a point is on a half line .
[in] | point | The point to check. |
[in] | halfLineOrigin | Half line origin. |
[in] | halfLineDir | Half line direction. |
[in] | tolerance | Geometric linear tolerance for the operation. |
|
static |
Checks for intersection between two lines and fills intersectionPoint with the intersection position.
[in] | line1Point | A point on 1st line. |
[in] | line1Dir | 1st line direction vector. |
[in] | line2Point | A point on 2nd line. |
[in] | line2Dir | 2nd line direction vector. |
[out] | intersectionPoint | Resulting intersection position if intersection happens. |
[in] | tolerance | Geometric linear tolerance for the operation. |
|
static |
Checks for line vs. segment intersection and fills intersection with the intersection position.
[in] | linePoint | A point on the line. |
[in] | lineDir | Line direction vector. |
[in] | segmentPoint1 | First segment point. |
[in] | segmentPoint2 | Second segment point. |
[out] | intersectionPoint | Resulting intersection position if intersection happens. |
[in] | tolerance | Geometric linear tolerance for the operation. |
|
static |
Checks for segment vs. segment intersection and fills intersection with the intersection position.
[in] | segment1Point1 | First Segment first point. |
[in] | segment1Point2 | First Segment second point. |
[in] | segment2Point1 | Second Segment first point. |
[in] | segment2Point2 | Second Segment second point. |
[out] | intersectionPoint | Resulting intersection position if intersection happens. |
[in] | tolerance | Geometric linear tolerance for the operation. |
|
static |
Checks for halfline/halfline intersection and fills intersectionPoint with the intersection position.
[in] | halfLine1Origin | Start point 1st half line. |
[in] | halfLine1Dir | 1st half line direction vector. |
[in] | halfLine2Origin | Start point 2nd half line. |
[in] | halfLine2Dir | 2nd half line direction vector. |
[out] | intersectionPoint | Resulting intersection position if intersection happens. |
[in] | tolerance | Geometric linear tolerance for the operation. |
|
static |
Checks for line/halfline intersection and fills intersectionPoint with the intersection position.
[in] | linePoint | A point on the line. |
[in] | lineDir | Line direction vector. |
[in] | halfLineOrigin | Start point of Half line. |
[in] | halfLineDir | Half line direction vector. |
[out] | intersectionPoint | Intersection position if intersection happens. |
[in] | tolerance | Geometric linear tolerance for the operation. |
|
static |
Checks for halfLine/segment Intersection and fills intersectionPoint with the intersection position.
[in] | halfLineOrigin | Start point of Half line. |
[in] | halfLineDir | Half line direction vector. |
[in] | segmentPoint1 | First Segment point. |
[in] | segmentPoint2 | Second Segment point. |
[out] | intersectionPoint | Intersection position if intersection happens. |
[in] | tolerance | Geometric linear tolerance for the operation. |
|
static |
Checks for plane/plane intersection and fills the intersection line.
[in] | plane1Point | Plane 1 point. |
[in] | plane1Normal | Plane 1 normal. |
[in] | plane2Point | Plane 2 point. |
[in] | plane2Normal | Plane 2 normal. |
[out] | resLinePoint | A point on the intersection line. |
[out] | resLineDirection | Intersection line direction. |
[in] | tolerance | Geometric linear tolerance for the operation. |
|
static |
Checks for plane/Line intersection and fills intersectionPoint with the intersection position.
[in] | linePoint | A point on line. |
[in] | lineDir | Line direction vector. |
[in] | planePoint | Plane point. |
[in] | planeNormal | Plane normal. |
[out] | intersectionPoint | Intersection position if intersection happens. |
[in] | tolerance | Geometric linear tolerance for the operation. |
|
static |
Checks for plane/line intersection and fills intersectionPoint with the intersection position.
[in] | linePoint | A point on line. |
[in] | lineDir | Line direction vector. |
[in] | planePoint | Plane point. |
[in] | planeNormal | Plane normal. |
[out] | intersectionPoint | Intersection position if intersection happens. |
[in] | tolerance | Geometric linear tolerance for the operation. |
|
static |
Checks for plane/segment intersection and fills intersectionPoint with the intersection position.
[in] | segmentPoint1 | Segment point 1. |
[in] | segmentPoint2 | Segment point 2. |
[in] | planePoint | Plane point. |
[in] | planeNormal | Plane normal. |
[out] | intersectionPoint | Intersection position if intersection happens. |
[in] | tolerance | Geometric linear tolerance for the operation. |
|
static |
Checks for plane/halfline intersection and fills intersectionPoint with the intersection position.
[in] | halfLinePoint | Half line Origin. |
[in] | halfLineDir | Half line direction vector. |
[in] | planePoint | Plane point. |
[in] | planeNormal | Plane normal. |
[out] | intersectionPoint | Intersection position if intersection happens. |
[in] | tolerance | Geometric linear tolerance for the operation. |
|
static |
Checks for line/triangle intersection and fills intersectionPoint with the intersection position.
[in] | linePoint | A point on the line. |
[in] | lineDir | The line direction vector. |
[in] | a | Triangle vertex. |
[in] | b | Triangle vertex. |
[in] | c | Triangle vertex. |
[out] | intersectionPoint | Intersection position if intersection happens. |
[out] | barycCoords | In case of intersection the pointr is filled with barycentric coordinates of the hit point, can be nullptr. |
[in] | tolerance | Geometric linear tolerance for the operation. |
|
static |
Checks for halfline/triangle intersection and fills intersectionPoint with the intersection position.
[in] | halfLineOrigin | Half line origin point. |
[in] | halfLineDir | The half line direction vector. |
[in] | a | Triangle vertex. |
[in] | b | Triangle vertex. |
[in] | c | Triangle vertex. |
[out] | intersectionPoint | Intersection position if intersection happens. |
[out] | barycCoords | In case of intersection the pointr is filled with barycentric coordinates of the hit point, can be nullptr. |
[in] | tolerance | Geometric linear tolerance for the operation. |
|
static |
Checks for line/quadrangle intersection and fills intersectionPoint with the intersection position.
[in] | linePoint | A point on the line. |
[in] | lineDir | The line direction vector. |
[in] | a | Quadrangle vertex. |
[in] | b | Quadrangle vertex. |
[in] | c | Quadrangle vertex. |
[in] | d | Quadrangle vertex. |
[out] | intersectionPoint | Intersection position if intersection happens. |
[in] | tolerance | Geometric linear tolerance for the operation. |
|
static |
Checks for halfline/quadrangle intersection and fills intersectionPoint with the intersection position.
[in] | halfLineOrigin | Half line origin point. |
[in] | halfLineDir | The half line direction vector. |
[in] | a | Quadrangle vertex. |
[in] | b | Quadrangle vertex. |
[in] | c | Quadrangle vertex. |
[in] | d | Quadrangle vertex. |
[out] | intersectionPoint | Intersection position if intersection happens. |
[in] | tolerance | Geometric linear tolerance for the operation. |
|
static |
Checks for linesegment/triangle intersection and fills intersectionPoint with the intersection position.
[in] | segmentPoint1 | Segment point. |
[in] | segmentPoint2 | Segment point. |
[in] | a | Triangle vertex. |
[in] | b | Triangle vertex. |
[in] | c | Triangle vertex. |
[out] | intersectionPoint | Intersection position if intersection happens. |
[out] | barycCoords | In case of intersection the pointr is filled with barycentric coordinates of the hit point, can be nullptr. |
[in] | tolerance | Geometric linear tolerance for the operation. |
|
static |
Checks if 2 triangles intersect.
[in] | t1a | Triangle 1 vertex. |
[in] | t1b | Triangle 1 vertex. |
[in] | t1c | Triangle 1 vertex. |
[in] | t2a | Triangle 2 vertex. |
[in] | t2b | Triangle 2 vertex. |
[in] | t2c | Triangle 2 vertex. |
[in] | tolerance | Geometric linear tolerance for the operation. |
|
static |
Calculates a S/T coordinate for a given 3D point and polygon in the polygon plane. The 3D point needs to be on the plane that is defined by the polygon. The function is just a 2d evaluation so not coplanar polygons need to be evaluated by projecting vertex on best fit plane.
[in] | point | The point to find s and t. |
[in] | pa | Polygon point. |
[in] | pb | Polygon point. |
[in] | pc | Polygon point. |
[in] | pd | Polygon point. |
[in] | isQuad | If true evaluate using a quadrangle, otherwise ignore pd and use a triangle. |
[out] | s | The resulting s coordinate, or MINVLAUE_FLOAT if the functions fail. |
[out] | t | The resulting t coordinate, or MINVLAUE_FLOAT if the functions fail. |
[in] | tolerance | Geometric linear tolerance for the operation, used to define if the point is inside of polygon or not. |
|
static |
Calculates the bilinear coordinates of a point in a quad. The quad is defined by the points pa, pb, pc and pd.
[in] | pa | Polygon point. |
[in] | pb | Polygon point. |
[in] | pc | Polygon point. |
[in] | pd | Polygon point. |
[in] | point | The point to find the bilinear interpolation values for. |
[out] | bilinarVariables | The resulting coordinates. |
|
static |
Calculates the bilinear coordinates of a point in a quad with a Newton iteration method. The quad is defined by the points pa, pb, pc and pd.
[in] | pa | Polygon point. |
[in] | pb | Polygon point. |
[in] | pc | Polygon point. |
[in] | pd | Polygon point. |
[in] | point | The point to find the bilinear interpolation values for. |
[in] | iterations | The iteration count of the Newton iteration. |
[out] | bilinarVariables | The resulting coordinates. |
|
static |
Calculates the bilinear coordinates of a 2d point in a 2d quad. The quad is defined by the points pa, pb, pc and pd.
[in] | pa | Polygon 2d point. |
[in] | pb | Polygon 2d point. |
[in] | pc | Polygon 2d point. |
[in] | pd | Polygon 2d point. |
[in] | point | The 2d point to find the bilinear interpolation values for. |
[out] | bilinarVariables | The resulting coordinates. |
|
static |
Calculates the bilinear coordinates of a 2d point in a 2d quad with a Newton iteration method. The quad is defined by the points pa, pb, pc and pd.
[in] | pa | Polygon 2d point. |
[in] | pb | Polygon 2d point. |
[in] | pc | Polygon 2d point. |
[in] | pd | Polygon 2d point. |
[in] | point | The 2d point to find the bilinear interpolation values for. |
[in] | iterations | The iteration count of the Newton iteration. |
[out] | bilinarVariables | The resulting coordinates. |
|
static |
Calculates the bilinear interpolation within a quad. The quad is defined by the points pa, pb, pc and pd.
[in] | pa | Polygon point. |
[in] | pb | Polygon point. |
[in] | pc | Polygon point. |
[in] | pd | Polygon point. |
[in] | s | The first bilinar coordinate. |
[in] | t | The second bilinear coordinate. |
|
static |
Calculates the signed area of an oriented triangle. Sign is defined as the sign of the z coordinate of the triangle normal vector.
[in] | a | Triangle point A. |
[in] | b | Triangle point B. |
[in] | c | Triangle point C. |
[in] | normal | The reference normal to calculate the sign. |
|
static |
Calculates the mean value coordinates weights for a point inside an outline.
[in] | point | The point for which to calculate weights. |
[in] | outline | The outline. |
[in] | normal | The normal direction of the outline. |
[in] | weights | Array of weights. The amount of entries in the resulting array is the same amount of outline vertices. |