BWAPI
|
#include <Conic_x_monotone_arc_2.h>
Classes | |
struct | Less_conic_pair |
Public Types | |
typedef Conic_arc_ | Conic_arc_2 |
typedef _Conic_x_monotone_arc_2 < Conic_arc_2 > | Self |
typedef Conic_arc_2::Alg_kernel | Alg_kernel |
typedef Conic_arc_2::Algebraic | Algebraic |
typedef Conic_arc_2::Point_2 | Point_2 |
typedef Conic_arc_2::Conic_point_2 | Conic_point_2 |
typedef Conic_point_2::Conic_id | Conic_id |
typedef std::pair< Conic_id, Conic_id > | Conic_pair |
typedef std::pair < Conic_point_2, unsigned int > | Intersection_point_2 |
typedef std::list < Intersection_point_2 > | Intersection_list |
typedef std::map< Conic_pair, Intersection_list, Less_conic_pair > | Intersection_map |
typedef Intersection_map::value_type | Intersection_map_entry |
typedef Intersection_map::iterator | Intersection_map_iterator |
Public Member Functions | |
Constrcution methods. | |
_Conic_x_monotone_arc_2 () | |
_Conic_x_monotone_arc_2 (const Self &arc) | |
_Conic_x_monotone_arc_2 (const Base &arc) | |
_Conic_x_monotone_arc_2 (const Base &arc, const Conic_id &id) | |
_Conic_x_monotone_arc_2 (const Base &arc, const Point_2 &source, const Point_2 &target, const Conic_id &id) | |
_Conic_x_monotone_arc_2 (const Point_2 &source, const Point_2 &target) | |
_Conic_x_monotone_arc_2 (const Algebraic &a, const Algebraic &b, const Algebraic &c, const Point_2 &source, const Point_2 &target) | |
const Self & | operator= (const Self &arc) |
Accessing the arc properties. | |
const Integer & | r () const |
const Integer & | s () const |
const Integer & | t () const |
const Integer & | u () const |
const Integer & | v () const |
const Integer & | w () const |
const Conic_point_2 & | source () const |
const Conic_point_2 & | target () const |
Orientation | orientation () const |
const Conic_point_2 & | left () const |
const Conic_point_2 & | right () const |
bool | is_directed_right () const |
Bbox_2 | bbox () const |
Predicates. | |
bool | is_vertical () const |
bool | contains_point (const Conic_point_2 &p) const |
Constructing points on the arc. | |
Point_2 | point_at_x (const Point_2 &p) const |
template<class OutputIterator > | |
OutputIterator | polyline_approximation (size_t n, OutputIterator oi) const |
Comparison_result | compare_to_right (const Self &arc, const Conic_point_2 &p) const |
Comparison_result | compare_to_left (const Self &arc, const Conic_point_2 &p) const |
template<class OutputIterator > | |
OutputIterator | intersect (const Self &arc, Intersection_map &inter_map, OutputIterator oi) const |
Constructing x-monotone arcs. | |
void | split (const Conic_point_2 &p, Self &c1, Self &c2) const |
Self | flip () const |
Self | trim (const Conic_point_2 &ps, const Conic_point_2 &pt) const |
bool | equals (const Self &arc) const |
bool | can_merge_with (const Self &arc) const |
void | merge (const Self &arc) |
bool | is_upper () const |
bool | is_lower () const |
Protected Types | |
enum | { IS_VERTICAL_SEGMENT = 4, IS_DIRECTED_RIGHT = 8, DEGREE_1 = 16, DEGREE_2 = 32, DEGREE_MASK = 16 + 32, PLUS_SQRT_DISC_ROOT = 64, FACING_UP = 128, FACING_DOWN = 256, FACING_MASK = 128 + 256, IS_SPECIAL_SEGMENT = 512 } |
typedef Conic_arc_2 | Base |
typedef Conic_arc_2::Integer | Integer |
typedef Conic_arc_2::Nt_traits | Nt_traits |
typedef Conic_arc_2::Rat_kernel | Rat_kernel |
Protected Attributes | |
Algebraic | alg_r |
Algebraic | alg_s |
Algebraic | alg_t |
Algebraic | alg_u |
Algebraic | alg_v |
Algebraic | alg_w |
Conic_id | _id |
Representation of an x-monotone conic arc. The class is templated by a representation of a general bounded conic arc.
typedef Conic_arc_2::Alg_kernel _Conic_x_monotone_arc_2< Conic_arc_ >::Alg_kernel |
typedef Conic_arc_2::Algebraic _Conic_x_monotone_arc_2< Conic_arc_ >::Algebraic |
typedef Conic_arc_2 _Conic_x_monotone_arc_2< Conic_arc_ >::Base [protected] |
typedef Conic_arc_ _Conic_x_monotone_arc_2< Conic_arc_ >::Conic_arc_2 |
typedef Conic_point_2::Conic_id _Conic_x_monotone_arc_2< Conic_arc_ >::Conic_id |
typedef std::pair<Conic_id, Conic_id> _Conic_x_monotone_arc_2< Conic_arc_ >::Conic_pair |
typedef Conic_arc_2::Conic_point_2 _Conic_x_monotone_arc_2< Conic_arc_ >::Conic_point_2 |
typedef Conic_arc_2::Integer _Conic_x_monotone_arc_2< Conic_arc_ >::Integer [protected] |
typedef std::list<Intersection_point_2> _Conic_x_monotone_arc_2< Conic_arc_ >::Intersection_list |
typedef std::map<Conic_pair, Intersection_list, Less_conic_pair> _Conic_x_monotone_arc_2< Conic_arc_ >::Intersection_map |
typedef Intersection_map::value_type _Conic_x_monotone_arc_2< Conic_arc_ >::Intersection_map_entry |
typedef Intersection_map::iterator _Conic_x_monotone_arc_2< Conic_arc_ >::Intersection_map_iterator |
typedef std::pair<Conic_point_2, unsigned int> _Conic_x_monotone_arc_2< Conic_arc_ >::Intersection_point_2 |
typedef Conic_arc_2::Nt_traits _Conic_x_monotone_arc_2< Conic_arc_ >::Nt_traits [protected] |
typedef Conic_arc_2::Point_2 _Conic_x_monotone_arc_2< Conic_arc_ >::Point_2 |
typedef Conic_arc_2::Rat_kernel _Conic_x_monotone_arc_2< Conic_arc_ >::Rat_kernel [protected] |
typedef _Conic_x_monotone_arc_2<Conic_arc_2> _Conic_x_monotone_arc_2< Conic_arc_ >::Self |
anonymous enum [protected] |
_Conic_x_monotone_arc_2< Conic_arc_ >::_Conic_x_monotone_arc_2 | ( | ) | [inline] |
Default constructor.
_Conic_x_monotone_arc_2< Conic_arc_ >::_Conic_x_monotone_arc_2 | ( | const Self & | arc | ) | [inline] |
Copy constructor.
arc | The copied arc. |
_Conic_x_monotone_arc_2< Conic_arc_ >::_Conic_x_monotone_arc_2 | ( | const Base & | arc | ) | [inline] |
_Conic_x_monotone_arc_2< Conic_arc_ >::_Conic_x_monotone_arc_2 | ( | const Base & | arc, |
const Conic_id & | id | ||
) | [inline] |
_Conic_x_monotone_arc_2< Conic_arc_ >::_Conic_x_monotone_arc_2 | ( | const Base & | arc, |
const Point_2 & | source, | ||
const Point_2 & | target, | ||
const Conic_id & | id | ||
) | [inline] |
_Conic_x_monotone_arc_2< Conic_arc_ >::_Conic_x_monotone_arc_2 | ( | const Point_2 & | source, |
const Point_2 & | target | ||
) | [inline] |
_Conic_x_monotone_arc_2< Conic_arc_ >::_Conic_x_monotone_arc_2 | ( | const Algebraic & | a, |
const Algebraic & | b, | ||
const Algebraic & | c, | ||
const Point_2 & | source, | ||
const Point_2 & | target | ||
) | [inline] |
Bbox_2 _Conic_x_monotone_arc_2< Conic_arc_ >::bbox | ( | ) | const [inline] |
Get a bounding box for the conic arc.
bool _Conic_x_monotone_arc_2< Conic_arc_ >::can_merge_with | ( | const Self & | arc | ) | const [inline] |
Check whether it is possible to merge the arc with the given arc.
arc | The query arc. |
Comparison_result _Conic_x_monotone_arc_2< Conic_arc_ >::compare_to_left | ( | const Self & | arc, |
const Conic_point_2 & | p | ||
) | const [inline] |
Comparison_result _Conic_x_monotone_arc_2< Conic_arc_ >::compare_to_right | ( | const Self & | arc, |
const Conic_point_2 & | p | ||
) | const [inline] |
bool _Conic_x_monotone_arc_2< Conic_arc_ >::contains_point | ( | const Conic_point_2 & | p | ) | const [inline] |
Check whether the given point lies on the arc.
p | The qury point. |
(true) | if p lies on the arc; (false) otherwise. |
bool _Conic_x_monotone_arc_2< Conic_arc_ >::equals | ( | const Self & | arc | ) | const [inline] |
Check whether the two arcs are equal (have the same graph).
arc | The compared arc. |
Self _Conic_x_monotone_arc_2< Conic_arc_ >::flip | ( | ) | const [inline] |
Flip the arc.
OutputIterator _Conic_x_monotone_arc_2< Conic_arc_ >::intersect | ( | const Self & | arc, |
Intersection_map & | inter_map, | ||
OutputIterator | oi | ||
) | const [inline] |
bool _Conic_x_monotone_arc_2< Conic_arc_ >::is_directed_right | ( | ) | const [inline] |
Return true iff the conic arc is directed right iexicographically.
bool _Conic_x_monotone_arc_2< Conic_arc_ >::is_lower | ( | ) | const [inline] |
bool _Conic_x_monotone_arc_2< Conic_arc_ >::is_upper | ( | ) | const [inline] |
bool _Conic_x_monotone_arc_2< Conic_arc_ >::is_vertical | ( | ) | const [inline] |
Check if the conic arc is a vertical segment.
const Conic_point_2& _Conic_x_monotone_arc_2< Conic_arc_ >::left | ( | ) | const [inline] |
Get the left endpoint of the arc.
void _Conic_x_monotone_arc_2< Conic_arc_ >::merge | ( | const Self & | arc | ) | [inline] |
const Self& _Conic_x_monotone_arc_2< Conic_arc_ >::operator= | ( | const Self & | arc | ) | [inline] |
Assignment operator.
arc | The copied arc. |
Orientation _Conic_x_monotone_arc_2< Conic_arc_ >::orientation | ( | ) | const [inline] |
Get the orientation of the arc.
Point_2 _Conic_x_monotone_arc_2< Conic_arc_ >::point_at_x | ( | const Point_2 & | p | ) | const [inline] |
Compute a point on the arc with the same x-coordiante as the given point.
p | The given point. |
OutputIterator _Conic_x_monotone_arc_2< Conic_arc_ >::polyline_approximation | ( | size_t | n, |
OutputIterator | oi | ||
) | const [inline] |
Get a polyline approximating the conic arc.
n | The maximal number of sample points. |
oi | An output iterator, whose value-type is pair<double,double> (representing an approximated point). In case the arc is a line segment, there are 2 output points, otherwise the arc is approximated by the polyline defined by (p_0, p_1, ..., p_n), where p_0 and p_n are the left and right endpoints of the arc, respectively. |
const Integer& _Conic_x_monotone_arc_2< Conic_arc_ >::r | ( | ) | const [inline] |
Get the coefficients of the underlying conic.
const Conic_point_2& _Conic_x_monotone_arc_2< Conic_arc_ >::right | ( | ) | const [inline] |
Get the right endpoint of the arc.
const Integer& _Conic_x_monotone_arc_2< Conic_arc_ >::s | ( | ) | const [inline] |
const Conic_point_2& _Conic_x_monotone_arc_2< Conic_arc_ >::source | ( | ) | const [inline] |
void _Conic_x_monotone_arc_2< Conic_arc_ >::split | ( | const Conic_point_2 & | p, |
Self & | c1, | ||
Self & | c2 | ||
) | const [inline] |
Split the arc into two at a given split point.
p | The split point. |
c1 | Output: The first resulting arc, lying to the left of p. |
c2 | Output: The first resulting arc, lying to the right of p. |
const Integer& _Conic_x_monotone_arc_2< Conic_arc_ >::t | ( | ) | const [inline] |
const Conic_point_2& _Conic_x_monotone_arc_2< Conic_arc_ >::target | ( | ) | const [inline] |
Self _Conic_x_monotone_arc_2< Conic_arc_ >::trim | ( | const Conic_point_2 & | ps, |
const Conic_point_2 & | pt | ||
) | const [inline] |
const Integer& _Conic_x_monotone_arc_2< Conic_arc_ >::u | ( | ) | const [inline] |
const Integer& _Conic_x_monotone_arc_2< Conic_arc_ >::v | ( | ) | const [inline] |
const Integer& _Conic_x_monotone_arc_2< Conic_arc_ >::w | ( | ) | const [inline] |
Conic_id _Conic_x_monotone_arc_2< Conic_arc_ >::_id [protected] |
Algebraic _Conic_x_monotone_arc_2< Conic_arc_ >::alg_r [protected] |
Algebraic _Conic_x_monotone_arc_2< Conic_arc_ >::alg_s [protected] |
Algebraic _Conic_x_monotone_arc_2< Conic_arc_ >::alg_t [protected] |
Algebraic _Conic_x_monotone_arc_2< Conic_arc_ >::alg_u [protected] |
Algebraic _Conic_x_monotone_arc_2< Conic_arc_ >::alg_v [protected] |
Algebraic _Conic_x_monotone_arc_2< Conic_arc_ >::alg_w [protected] |