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{
26 EdgePoint edgePoint;
28 float distanceAlongLine = 0;
29};
30
36[[nodiscard]] MRMESH_API std::optional<PolylineIntersectionResult2> rayPolylineIntersect( const Polyline2& polyline, const Line2f& line,
37 float rayStart = 0, float rayEnd = FLT_MAX, const IntersectionPrecomputes2<float>* prec = nullptr, bool closestIntersect = true );
38
44[[nodiscard]] MRMESH_API std::optional<PolylineIntersectionResult2> rayPolylineIntersect( const Polyline2& polyline, const Line2d& line,
45 double rayStart = 0, double rayEnd = DBL_MAX, const IntersectionPrecomputes2<double>* prec = nullptr, bool closestIntersect = true );
46
50template<typename T>
51using PolylineIntersectionCallback2 = std::function<Processing(const EdgePoint & polylinePoint, T rayPos, T & rayStart, T & rayEnd)>;
52using PolylineIntersectionCallback2f = PolylineIntersectionCallback2<float>;
53using PolylineIntersectionCallback2d = PolylineIntersectionCallback2<double>;
54
57MRMESH_API void rayPolylineIntersectAll( const Polyline2& polyline, const Line2f& line, const PolylineIntersectionCallback2f& callback,
58 float rayStart = 0.0f, float rayEnd = FLT_MAX, const IntersectionPrecomputes2<float>* prec = nullptr );
59
62MRMESH_API void rayPolylineIntersectAll( const Polyline2& polyline, const Line2d& line, const PolylineIntersectionCallback2d& callback,
63 double rayStart = 0.0, double rayEnd = DBL_MAX, const IntersectionPrecomputes2<double>* prec = nullptr );
64
65} //namespace MR
#define MRMESH_API
Definition MRMeshFwd.h:80
Definition MREdgePoint.h:11
Definition MRPolyline2Intersect.h:24
Processing
MRMESH_API bool isPointInsidePolyline(const Polyline2 &polyline, const Vector2f &point)
detect if given point is inside polyline, by counting ray intersections
Definition MRCameraOrientationPlugin.h:8
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)
Definition MRMeshFwd.h:663