AXOM
Axom provides a robust, flexible software infrastructure for the development of multi-physics applications and computational tools.
winding_number.hpp File Reference

Consists of methods to compute the generalized winding number (GWN) for points with respect to various geometric objects. More...

#include "axom/core.hpp"
#include "axom/config.hpp"
#include "axom/primal/geometry/Point.hpp"
#include "axom/primal/geometry/Segment.hpp"
#include "axom/primal/geometry/Triangle.hpp"
#include "axom/primal/geometry/Polygon.hpp"
#include "axom/primal/geometry/Polyhedron.hpp"
#include "axom/primal/geometry/BezierCurve.hpp"
#include "axom/primal/geometry/BezierPatch.hpp"
#include "axom/primal/geometry/CurvedPolygon.hpp"
#include "axom/primal/geometry/BoundingBox.hpp"
#include "axom/primal/geometry/OrientedBoundingBox.hpp"
#include "axom/primal/operators/detail/winding_number_impl.hpp"
#include <cmath>

Namespaces

 axom
 
 axom::primal
 

Functions

Winding number operations between 2D points and primitives
template<typename T >
double axom::primal::winding_number (const Point< T, 2 > &q, const Segment< T, 2 > &s, double edge_tol=1e-8)
 
template<typename T >
int axom::primal::winding_number (const Point< T, 2 > &q, const Triangle< T, 2 > &tri, bool includeBoundary=false, double edge_tol=1e-8)
 
template<typename T >
int axom::primal::winding_number (const Point< T, 2 > &R, const Polygon< T, 2 > &P, bool &isOnEdge, bool includeBoundary, double edge_tol)
 Computes the winding number for a 2D point wrt a 2D polygon. More...
 
template<typename T >
int axom::primal::winding_number (const Point< T, 2 > &R, const Polygon< T, 2 > &P, bool includeBoundary=false, double edge_tol=1e-8)
 Computes the winding number for a 2D point wrt a 2D polygon. More...
 
template<typename T >
double axom::primal::winding_number (const Point< T, 2 > &q, const BezierCurve< T, 2 > &c, double edge_tol=1e-8, double EPS=1e-8)
 Computes the GWN for a 2D point wrt a 2D Bezier curve. More...
 
template<typename T >
double axom::primal::winding_number (const Point< T, 2 > &q, const CurvedPolygon< T, 2 > &cpoly, double edge_tol=1e-8, double EPS=1e-8)
 Computes the GWN for a 2D point wrt to a 2D curved polygon. More...
 
template<typename T >
double axom::primal::winding_number (const Point< T, 2 > &q, const axom::Array< BezierCurve< T, 2 >> &carray, double edge_tol=1e-8, double EPS=1e-8)
 Computes the GWN for a 2D point wrt to a collection of 2D Bezier curves. More...
 
Winding number operations between 3D points and primitives
template<typename T >
double axom::primal::winding_number (const Point< T, 3 > &q, const Triangle< T, 3 > &tri, bool &isOnFace, const double edge_tol=1e-8, const double EPS=1e-8)
 Computes the GWN for a 3D point wrt a 3D triangle. More...
 
template<typename T >
double axom::primal::winding_number (const Point< T, 3 > &q, const Triangle< T, 3 > &tri, const double edge_tol=1e-8, const double EPS=1e-8)
 Computes the GWN for a 3D point wrt a 3D triangle. More...
 
template<typename T >
double axom::primal::winding_number (const Point< T, 3 > &q, const Polygon< T, 3 > &poly, bool &isOnFace, const double edge_tol=1e-8, const double EPS=1e-8)
 Computes the GWN for a 3D point wrt a 3D planar polygon. More...
 
template<typename T >
double axom::primal::winding_number (const Point< T, 3 > &q, const Polygon< T, 3 > &poly, const double edge_tol=1e-8, const double EPS=1e-8)
 Computes the GWN for a 3D point wrt a 3D planar polygon. More...
 
template<typename T >
int axom::primal::winding_number (const Point< T, 3 > &query, const Polyhedron< T, 3 > &poly, bool includeBoundary=false, double edge_tol=1e-8, double EPS=1e-8)
 Computes the winding number for a 3D point wrt a 3D convex polyhedron. More...
 

Detailed Description

Consists of methods to compute the generalized winding number (GWN) for points with respect to various geometric objects.