Class IntersectionOfVpoly

template<typename VPolytope, typename RNGType>
class IntersectionOfVpoly

This class represents the intersection of two V-polytopes

Template Parameters:
  • VPolytopeVPolytope Type

  • RNGType – RNGType Type

Public Types

typedef VPolytope::NT NT
typedef VPolytope::PointType PointType
typedef PointType Point
typedef VPolytope::MT MT
typedef VPolytope::VT VT

Public Functions

inline IntersectionOfVpoly()
inline IntersectionOfVpoly(VPolytope P, VPolytope Q)
inline IntersectionOfVpoly(VPolytope P, VPolytope Q, unsigned _seed)
inline VPolytope first()
inline VPolytope second()
inline std::pair<Point, NT> InnerBall() const
inline int is_in(const Point &p, NT tol = NT(0)) const
inline int num_of_hyperplanes() const
inline unsigned int dimension() const
inline int num_of_vertices() const
inline unsigned int upper_bound_of_hyperplanes() const
inline int num_of_generators() const
inline NT getRad() const
inline MT get_mat() const
inline VT get_vec() const
inline VT get_row(int vertex_index) const
inline bool is_normalized()
inline MT get_T() const
inline MT get_mat2() const
inline Point get_mean_of_vertices() const
inline NT get_max_vert_norm() const
inline void print()
inline bool is_feasible()
inline std::pair<Point, NT> ComputeInnerBall()
inline void set_InnerBall(std::pair<Point, NT> const &innerball) const
inline void set_interior_point(Point const &r)
inline std::pair<NT, NT> line_intersect(const Point &r, const Point &v) const
inline std::pair<NT, NT> line_intersect(const Point &r, const Point &v, const VT &Ar, const VT &Av) const
inline std::pair<NT, NT> line_intersect(const Point &r, const Point &v, const VT &Ar, const VT &Av, const NT &lambda) const
inline std::pair<NT, int> line_positive_intersect(const Point &r, const Point &v) const
inline std::pair<NT, int> line_positive_intersect(const Point &r, const Point &v, const VT &Ar, const VT &Av) const
inline std::pair<NT, int> line_positive_intersect(const Point &r, const Point &v, const VT &Ar, const VT &Av, const NT &lambda_prev) const
template<typename update_parameters>
inline std::pair<NT, int> line_first_positive_intersect(Point const &r, Point const &v, VT &Ar, VT &Av, update_parameters &params) const
template<typename update_parameters>
inline std::pair<NT, int> line_positive_intersect(Point const &r, Point const &v, VT &Ar, VT &Av, NT const &lambda_prev, MT const &AA, update_parameters &params) const
template<typename update_parameters>
inline std::pair<NT, int> line_positive_intersect(Point const &r, Point const &v, VT &Ar, VT &Av, NT const &lambda_prev, update_parameters &params) const
inline std::pair<NT, NT> line_intersect_coord(const Point &r, const unsigned int &rand_coord, const VT &lamdas) const
inline std::pair<NT, NT> line_intersect_coord(const Point &r, const Point &r_prev, const unsigned int &rand_coord, const unsigned int &rand_coord_prev, const VT &lamdas) const
inline std::pair<NT, int> quadratic_positive_intersect(Point const &r, Point const &v, VT const &Ac, NT const &T, VT &Ar, VT &Av, int &facet_prev) const
inline std::pair<NT, int> quadratic_positive_intersect(Point const &r, Point const &v, VT const &Ac, NT const &T, VT &Ar, VT &Av, NT const &lambda_prev, int &facet_prev) const
inline std::pair<NT, int> trigonometric_positive_intersect(Point const &r, Point const &v, NT const &omega, int &facet_prev) const
inline void shift(const VT &c)
inline void linear_transformIt(const MT &T)
inline std::vector<NT> get_dists(const NT &radius) const
template<typename PointList>
inline bool get_points_for_rounding(PointList &randPoints)
inline void normalize()
inline void resetFlags()
inline void update_position_internal(NT&)
inline void compute_reflection(Point &v, const Point &p, const int &facet) const
template<typename update_parameters>
inline void compute_reflection(Point &v, const Point &p, update_parameters const &params) const

Public Members

unsigned seed
std::pair<Point, NT> _inner_ball
NT rad
VPolytope P1
VPolytope P2