106 template <
class FT >
113 template <
class FT >
117 {
return !(*
this == r); }
120 template <
class FT >
126 template <
class FT >
131 template <
class FT >
137 template <
class FT >
148 return source() + FT(i) * (second_point() - source());
152 template <
class FT >
159 template <
class FT >
166 template <
class FT >
170 {
return RayS3<FT>( source(), - direction() ); }
173 template <
class FT >
180 template <
class FT >
184 return (p == source()) ||
190 template <
class FT >
194 {
return source() == second_point(); }
197 template <
class FT >
220 #ifndef CGAL_NO_OSTREAM_INSERT_RAYS3
221 template <
class FT >
223 operator<<(std::ostream& os, const RayS3<FT>& r)
228 return os << r.start() <<
' ' << r.direction();
230 return os<< r.start() << r.direction();
232 return os <<
"RayS3(" << r.start() <<
", " << r.direction() <<
")";
235 #endif // CGAL_NO_OSTREAM_INSERT_RAYS3
237 #ifndef CGAL_NO_ISTREAM_EXTRACT_RAYS3
238 template <
class FT >
250 #endif // CGAL_NO_ISTREAM_EXTRACT_RAYS3
PointS3< FT > source() const
RayS3 transform(const Aff_transformationS3< FT > &t) const
Comparison_result compare_y(const Point_2< R > &p, const Point_2< R > &q)
bool operator==(const RayS3< FT > &r) const
bool operator!=(const RayS3< FT > &r) const
Comparison_result compare_x(const Point_2< R > &p, const Point_2< R > &q)
bool has_on(const PointS3< FT > &p) const
bool collinear(const Point_2< R > &p, const Point_2< R > &q, const Point_2< R > &r)
DirectionS3< FT > direction() const
PointS3< FT > second_point() const
VectorS3< FT > vector() const
#define CGAL_kernel_exactness_precondition(EX)
bool is_degenerate() const
PointS3< FT > point(int i) const
#define CGAL_BEGIN_NAMESPACE
Comparison_result compare_z(const PointS3< FT > &p, const PointS3< FT > &q)
PointS3< FT > start() const
bool collinear_has_on(const PointS3< FT > &p) const
LineS3< FT > supporting_line() const
#define CGAL_END_NAMESPACE
#define CGAL_kernel_precondition(EX)