Garfield 0.3
Toolkit for the detailed simulation of particle detectors based on ionization measurement in gases and semiconductors
Loading...
Searching...
No Matches
Polygon.hh
Go to the documentation of this file.
1#ifndef G_POLYGON_H
2#define G_POLYGON_H
3
4#include <vector>
5
6namespace Garfield {
7
8namespace Polygon {
9
12void Inside(const std::vector<double>& xpl, const std::vector<double>& ypl,
13 const double x, const double y, bool& inside, bool& edge);
14
16double Area(const std::vector<double>& xp, const std::vector<double>& yp);
17
19bool NonTrivial(const std::vector<double>& xp, const std::vector<double>& yp);
20
23void EliminateButterflies(std::vector<double>& xp, std::vector<double>& yp,
24 std::vector<double>& zp);
25} // namespace Polygon
26
27} // namespace Garfield
28
29#endif
bool NonTrivial(const std::vector< double > &xp, const std::vector< double > &yp)
Check whether a set of points builds a non-trivial polygon.
double Area(const std::vector< double > &xp, const std::vector< double > &yp)
Determine the (signed) area of a polygon.
void EliminateButterflies(std::vector< double > &xp, std::vector< double > &yp, std::vector< double > &zp)
Try to eliminate "butterflies" (crossing of two adjacent segments of a polygon), by point exchanges.
void Inside(const std::vector< double > &xpl, const std::vector< double > &ypl, const double x, const double y, bool &inside, bool &edge)
Determine whether the point (x, y) is located inside of the polygon (xpl, ypl).