53 #ifndef CGAL_REP_CLASS_DEFINED
54 #error no representation class defined
55 #endif // CGAL_REP_CLASS_DEFINED
57 #ifdef CGAL_HOMOGENEOUS_H
59 #include <CGAL/LineH2.h>
60 #endif // CGAL_LINEH2_H
61 #endif // CGAL_HOMOGENEOUS_H
63 #ifdef CGAL_CARTESIAN_H
65 #include <CGAL/Cartesian/Line_2.h>
66 #endif // CGAL_LINEC2_H
67 #endif // CGAL_CARTESIAN_H
69 #ifdef CGAL_SIMPLE_CARTESIAN_H
71 #endif // CGAL_SIMPLE_CARTESIAN_H
74 #ifndef CGAL_PREDICATES_ON_POINTS_2_H
76 #endif // CGAL_PREDICATES_ON_POINTS_2_H
77 #ifndef CGAL_VECTOR_2_H
79 #endif // CGAL_VECTOR_2_H
84 class Line_2 :
public R_::Line_2_base
88 typedef typename R::RT
RT;
89 typedef typename R::FT
FT;
103 Line_2(
const CGAL::Point_2<R> &p,
const CGAL::Point_2<R> &
q)
125 Line_2(
const CGAL::Point_2<R> &p,
const CGAL::Direction_2<R> &
d)
137 return !(*
this == l);
158 return RLine_2::x_at_y(y);
163 return RLine_2::y_at_x(x);
168 return RLine_2::perpendicular(p);
178 return RLine_2::point(i);
188 return RLine_2::point();
194 return RLine_2::direction();
199 return RLine_2::oriented_side(p);
202 bool has_on(
const CGAL::Point_2<R> &p)
const
204 return RLine_2::has_on_boundary(p);
209 return RLine_2::has_on_boundary(p);
214 return RLine_2::has_on_positive_side(p);
219 return RLine_2::has_on_negative_side(p);
225 return RLine_2::is_horizontal();
231 return RLine_2::is_vertical();
237 return RLine_2::is_degenerate();
240 CGAL::Line_2<R>
transform(
const CGAL::Aff_transformation_2<R> &t)
const
242 return RLine_2::transform(t);
248 #ifndef NO_OSTREAM_INSERT_LINE_2
251 operator<<(std::ostream &os, const Line_2<R> &l)
253 typedef typename R::Line_2_base RLine_2;
254 return os << (
const RLine_2&)l;
256 #endif // NO_OSTREAM_INSERT_LINE_2
258 #ifndef NO_ISTREAM_EXTRACT_LINE_2
263 typedef typename R::Line_2_base RLine_2;
264 return is >> (RLine_2&)p;
266 #endif // NO_ISTREAM_EXTRACT_LINE_2
273 #ifndef CGAL_SEGMENT_2_H
275 #endif // CGAL_SEGMENT_2_H
278 #endif // CGAL_RAY_2_H
280 #endif // CGAL_LINE_2_H
CGAL::Point_2< R > projection(const CGAL::Point_2< R > &p) const
CGAL::Line_2< R > perpendicular(const CGAL::Point_2< R > &p) const
bool is_degenerate() const
FT x_at_y(const FT &y) const
CGAL_END_NAMESPACE CGAL_BEGIN_NAMESPACE bool operator==(const Origin &o, const Point_2< R > &p)
void int int REAL REAL * y
Line_2(const RT &a, const RT &b, const RT &c)
CGAL::Point_2< R > point() const
bool has_on_boundary(const CGAL::Point_2< R > &p) const
Line_2(const CGAL::Line_2< R > &l)
Line_2(const CGAL::Ray_2< R > &r)
CGAL::Line_2< R > opposite() const
bool operator!=(const CGAL::Line_2< R > &l) const
CGAL::Direction_2< R > direction() const
bool has_on_positive_side(const CGAL::Point_2< R > &p) const
Line_2(const CGAL::Point_2< R > &p, const CGAL::Direction_2< R > &d)
CGAL::Point_2< R > point(int i) const
CGAL::Line_2< R > transform(const CGAL::Aff_transformation_2< R > &t) const
Line_2(const CGAL::Segment_2< R > &s)
bool is_horizontal() const
Line_2(const CGAL::Point_2< R > &p, const CGAL::Point_2< R > &q)
bool operator==(const CGAL::Line_2< R > &l) const
CGAL_BEGIN_NAMESPACE T opposite(const T &t)
CGAL_KERNEL_LARGE_INLINE PointS3< FT > projection(const PointS3< FT > &p, const PlaneS3< FT > &h)
#define CGAL_BEGIN_NAMESPACE
bool has_on(const CGAL::Point_2< R > &p) const
#define CGAL_END_NAMESPACE
Oriented_side oriented_side(const CGAL::Point_2< R > &p) const
FT y_at_x(const FT &x) const
bool has_on_negative_side(const CGAL::Point_2< R > &p) const