MeshLib C++ Docs
Loading...
Searching...
No Matches
MRPolyline2Intersect.h
Go to the documentation of this file.
1#pragma once
2
3#include "MRId.h"
4#include "MREdgePoint.h"
5#include "MREnums.h"
6#include <cfloat>
7#include <optional>
8
9namespace MR
10{
13
19[[nodiscard]] MRMESH_API bool isPointInsidePolyline( const Polyline2& polyline, const Vector2f& point );
20
22
23struct [[nodiscard]] PolylineIntersectionResult2
24{
28 float distanceAlongLine = 0;
29};
30
35[[nodiscard]] MRMESH_API std::optional<PolylineIntersectionResult2> rayPolylineIntersect( const Polyline2& polyline, const Line2f& line,
36 float rayStart = 0, float rayEnd = FLT_MAX, const IntersectionPrecomputes2<float>* prec = nullptr, bool closestIntersect = true );
37
42[[nodiscard]] MRMESH_API std::optional<PolylineIntersectionResult2> rayPolylineIntersect( const Polyline2& polyline, const Line2d& line,
43 double rayStart = 0, double rayEnd = DBL_MAX, const IntersectionPrecomputes2<double>* prec = nullptr, bool closestIntersect = true );
44
48template<typename T>
49using PolylineIntersectionCallback2 = std::function<Processing(const EdgePoint & polylinePoint, T rayPos, T & rayEnd)>;
52
55MRMESH_API void rayPolylineIntersectAll( const Polyline2& polyline, const Line2f& line, const PolylineIntersectionCallback2f& callback,
56 float rayStart = 0.0f, float rayEnd = FLT_MAX, const IntersectionPrecomputes2<float>* prec = nullptr );
57
60MRMESH_API void rayPolylineIntersectAll( const Polyline2& polyline, const Line2d& line, const PolylineIntersectionCallback2d& callback,
61 double rayStart = 0.0, double rayEnd = DBL_MAX, const IntersectionPrecomputes2<double>* prec = nullptr );
62
63} //namespace MR
#define MRMESH_API
Definition MRMesh/MRMeshFwd.h:79
MRMESH_API bool isPointInsidePolyline(const Polyline2 &polyline, const Vector2f &point)
detect if given point is inside polyline, by counting ray intersections
std::function< Processing(const EdgePoint &polylinePoint, T rayPos, T &rayEnd)> PolylineIntersectionCallback2
Definition MRPolyline2Intersect.h:49
PolylineIntersectionCallback2< double > PolylineIntersectionCallback2d
Definition MRPolyline2Intersect.h:51
MRMESH_API void rayPolylineIntersectAll(const Polyline2 &polyline, const Line2f &line, const PolylineIntersectionCallback2f &callback, float rayStart=0.0f, float rayEnd=FLT_MAX, const IntersectionPrecomputes2< float > *prec=nullptr)
MRMESH_API std::optional< PolylineIntersectionResult2 > rayPolylineIntersect(const Polyline2 &polyline, const Line2f &line, float rayStart=0, float rayEnd=FLT_MAX, const IntersectionPrecomputes2< float > *prec=nullptr, bool closestIntersect=true)
PolylineIntersectionCallback2< float > PolylineIntersectionCallback2f
Definition MRPolyline2Intersect.h:50
Processing
typically returned from callbacks to control the behavior of main algorithm
Definition MREnums.h:31
encodes a point on an edge of mesh or of polyline
Definition MREdgePoint.h:11
Definition MRMesh/MRMeshFwd.h:566
Definition MRPolyline2Intersect.h:24
EdgePoint edgePoint
intersection point in polyline
Definition MRPolyline2Intersect.h:26