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
28
34[[nodiscard]] MRMESH_API std::optional<PolylineIntersectionResult2> rayPolylineIntersect( const Polyline2& polyline, const Line2f& line,
35 float rayStart = 0, float rayEnd = FLT_MAX, const IntersectionPrecomputes2<float>* prec = nullptr, bool closestIntersect = true );
36
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 & rayStart, 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
64
65}
#define MRMESH_API
Definition MRMeshFwd.h:80
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)
void rayPolylineIntersectAll(const Polyline2 &polyline, const Line2f &line, const PolylineIntersectionCallback2f &callback, float rayStart=0.0f, float rayEnd=FLT_MAX, const IntersectionPrecomputes2< float > *prec=nullptr)
std::function< Processing(const EdgePoint &polylinePoint, T rayPos, T &rayStart, T &rayEnd)> PolylineIntersectionCallback2
Definition MRPolyline2Intersect.h:49
bool isPointInsidePolyline(const Polyline2 &polyline, const Vector2f &point)
detect if given point is inside polyline, by counting ray intersections
PolylineIntersectionCallback2< double > PolylineIntersectionCallback2d
Definition MRPolyline2Intersect.h:51
PolylineIntersectionCallback2< float > PolylineIntersectionCallback2f
Definition MRPolyline2Intersect.h:50
Polyline2
Definition MRMeshFwd.h:658
Line2f
Definition MRMeshFwd.h:338
Processing
typically returned from callbacks to control the behavior of main algorithm
Definition MREnums.h:63
only for bindings generation
Definition MRCameraOrientationPlugin.h:8
encodes a point on an edge of mesh or of polyline
Definition MREdgePoint.h:14
Definition MRIntersectionPrecomputes2.h:35
Definition MRPolyline2Intersect.h:22
EdgePoint edgePoint
intersection point in polyline
Definition MRPolyline2Intersect.h:24
float distanceAlongLine
stores the distance from ray origin to the intersection point in direction units
Definition MRPolyline2Intersect.h:26