51 #ifndef CGAL_PLANE_3_H
52 #define CGAL_PLANE_3_H
54 #ifndef CGAL_REP_CLASS_DEFINED
55 #error no representation class defined
56 #endif // CGAL_REP_CLASS_DEFINED
58 #if defined(CGAL_CFG_INCOMPLETE_TYPE_BUG_1) && \
59 !defined(CGAL_NO_PLANE_TRANSFORM_IN_AT)
60 #define CGAL_NO_PLANE_TRANSFORM_IN_AT
61 #endif // CGAL_CFG_INCOMPLETE_TYPE_BUG_1
63 #ifdef CGAL_HOMOGENEOUS_H
64 #ifndef CGAL_PLANEH3_H
65 #include <CGAL/PlaneH3.h>
66 #endif // CGAL_PLANEH3_H
67 #endif // CGAL_HOMOGENEOUS_H
69 #ifdef CGAL_CARTESIAN_H
70 #ifndef CGAL_PLANEC3_H
71 #include <CGAL/Cartesian/Plane_3.h>
72 #endif // CGAL_PLANEC3_H
73 #endif // CGAL_CARTESIAN_H
75 #ifdef CGAL_SIMPLE_CARTESIAN_H
77 #endif // CGAL_SIMPLE_CARTESIAN_H
82 #endif // CGAL_LINE_3_H
83 #ifndef CGAL_POINT_2_H
85 #endif // CGAL_POINT_2_H
90 class Plane_3 :
public R_::Plane_3_base
94 typedef typename R::RT
RT;
95 typedef typename R::FT
FT;
105 const CGAL::Point_3<R>&
q,
106 const CGAL::Point_3<R>& r)
109 Plane_3(
const CGAL::Point_3<R>& p,
const CGAL::Direction_3<R>&
d)
112 Plane_3(
const CGAL::Point_3<R>& p,
const CGAL::Vector_3<R>&
v)
118 Plane_3(
const CGAL::Line_3<R>& l,
const CGAL::Point_3<R>& p)
121 Plane_3(
const CGAL::Segment_3<R>&
s,
const CGAL::Point_3<R>& p)
124 Plane_3(CGAL::Ray_3<R>& r,
const CGAL::Point_3<R>& p)
132 {
return !(*
this == p); }
136 {
return RPlane_3::a(); }
139 {
return RPlane_3::b(); }
142 {
return RPlane_3::c(); }
148 {
return RPlane_3::perpendicular_line(p); }
157 {
return RPlane_3::point(); }
160 {
return RPlane_3::orthogonal_vector(); }
163 {
return RPlane_3::orthogonal_direction(); }
166 {
return RPlane_3::base1(); }
169 {
return RPlane_3::base2(); }
171 CGAL::Point_2<R>
to_2d(
const CGAL::Point_3<R>& p)
const
172 {
return RPlane_3::to_2d(p); }
174 CGAL::Point_3<R>
to_3d(
const CGAL::Point_2<R>& p)
const
175 {
return RPlane_3::to_3d(p); }
177 CGAL::Plane_3<R>
transform( CGAL::Aff_transformation_3<R>& t)
const
178 {
return CGAL::Plane_3<R>( RPlane_3::transform(t) ); }
181 {
return RPlane_3::oriented_side(p); }
183 bool has_on(
const CGAL::Point_3<R>& p)
const
184 {
return RPlane_3::has_on_boundary(p); }
186 bool has_on(
const CGAL::Line_3<R>& l)
const
187 {
return RPlane_3::has_on_boundary(l); }
190 {
return RPlane_3::has_on_boundary(p); }
193 {
return RPlane_3::has_on_boundary(l); }
196 {
return RPlane_3::has_on_positive_side(p); }
199 {
return RPlane_3::has_on_negative_side(p); }
202 {
return RPlane_3::is_degenerate(); }
205 #ifndef NO_OSTREAM_INSERT_PLANE_3
208 operator<<(std::ostream& os, const Plane_3<R>& p)
210 typedef typename R::Plane_3_base RPlane_3;
211 return os << (
const RPlane_3& )p;
213 #endif // NO_OSTREAM_INSERT_PLANE_3
215 #ifndef NO_ISTREAM_EXTRACT_PLANE_3
220 typedef typename R::Plane_3_base RPlane_3;
221 return is >> (RPlane_3& )t;
223 #endif // NO_ISTREAM_EXTRACT_PLANE_3
229 #endif // CGAL_PLANE_3_H
bool has_on(const CGAL::Line_3< R > &l) const
Plane_3(const CGAL::Point_3< R > &p, const CGAL::Direction_3< R > &d)
CGAL_END_NAMESPACE CGAL_BEGIN_NAMESPACE bool operator==(const Origin &o, const Point_2< R > &p)
CGAL::Plane_3< R > opposite() const
bool has_on_positive_side(const CGAL::Point_3< R > &p) const
CGAL::Plane_3< R > transform(CGAL::Aff_transformation_3< R > &t) const
CGAL::Line_3< R > perpendicular_line(const CGAL::Point_3< R > &p) const
bool has_on_boundary(const CGAL::Line_3< R > &l) const
Plane_3(const RT &a, const RT &b, const RT &c, const RT &d)
Plane_3(CGAL::Ray_3< R > &r, const CGAL::Point_3< R > &p)
bool has_on_boundary(const CGAL::Point_3< R > &p) const
*********************************************************************Illinois Open Source License ****University of Illinois NCSA **Open Source License University of Illinois All rights reserved ****Developed free of to any person **obtaining a copy of this software and associated documentation to deal with the Software without including without limitation the rights to and or **sell copies of the and to permit persons to whom the **Software is furnished to do subject to the following this list of conditions and the following disclaimers ****Redistributions in binary form must reproduce the above **copyright this list of conditions and the following **disclaimers in the documentation and or other materials **provided with the distribution ****Neither the names of the Center for Simulation of Advanced the University of nor the names of its **contributors may be used to endorse or promote products derived **from this Software without specific prior written permission ****THE SOFTWARE IS PROVIDED AS WITHOUT WARRANTY OF ANY **EXPRESS OR INCLUDING BUT NOT LIMITED TO THE WARRANTIES **OF FITNESS FOR A PARTICULAR PURPOSE AND **NONINFRINGEMENT IN NO EVENT SHALL THE CONTRIBUTORS OR **COPYRIGHT HOLDERS BE LIABLE FOR ANY DAMAGES OR OTHER WHETHER IN AN ACTION OF TORT OR **ARISING OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE **USE OR OTHER DEALINGS WITH THE SOFTWARE v
bool operator==(const CGAL::Plane_3< R > &p) const
CGAL::Point_3< R > point() const
CGAL::Point_3< R > projection(const CGAL::Point_3< R > &p) const
CGAL::Direction_3< R > orthogonal_direction() const
CGAL::Vector_3< R > base1() const
Plane_3(const CGAL::Point_3< R > &p, const CGAL::Point_3< R > &q, const CGAL::Point_3< R > &r)
CGAL::Vector_3< R > base2() const
Plane_3(const CGAL::Line_3< R > &l, const CGAL::Point_3< R > &p)
Plane_3(const RPlane_3 &p)
CGAL::Vector_3< R > orthogonal_vector() const
Plane_3(const CGAL::Plane_3< R > &p)
CGAL_BEGIN_NAMESPACE T opposite(const T &t)
Plane_3(const CGAL::Point_3< R > &p, const CGAL::Vector_3< R > &v)
CGAL_KERNEL_LARGE_INLINE PointS3< FT > projection(const PointS3< FT > &p, const PlaneS3< FT > &h)
#define CGAL_BEGIN_NAMESPACE
CGAL::Point_3< R > to_3d(const CGAL::Point_2< R > &p) const
bool operator!=(const CGAL::Plane_3< R > &p) const
bool has_on(const CGAL::Point_3< R > &p) const
Plane_3(const CGAL::Segment_3< R > &s, const CGAL::Point_3< R > &p)
bool has_on_negative_side(const CGAL::Point_3< R > &p) const
#define CGAL_END_NAMESPACE
Oriented_side oriented_side(const CGAL::Point_3< R > &p) const
CGAL::Point_2< R > to_2d(const CGAL::Point_3< R > &p) const
bool is_degenerate() const