// ====================================================================== // // Copyright (c) 2000 The CGAL Consortium // // This software and related documentation is part of an INTERNAL release // of the Computational Geometry Algorithms Library (CGAL). It is not // intended for general use. // // ---------------------------------------------------------------------- // // release : // release_date : // // file : include/CGAL/Cartesian/point_constructions_3.h // revision : $Revision$ // revision_date : $Date$ // author(s) : Herve Bronnimann // coordinator : INRIA Sophia-Antipolis (Mariette.Yvinec@sophia.inria.fr) // // ====================================================================== #ifndef CGAL_CARTESIAN_POINT_CONSTRUCTIONS_3_H #define CGAL_CARTESIAN_POINT_CONSTRUCTIONS_3_H #include #include #include CGAL_BEGIN_NAMESPACE template < class R > CGAL_KERNEL_MEDIUM_INLINE PointC3 midpoint(PointC3 const& p, PointC3 const& q ) { typename R::FT x,y,z; midpointC3(p.x(),p.y(),p.z(),q.x(),q.y(),q.z(),x,y,z); return PointC3(x,y,z); } template < class R > PointC3 circumcenter( PointC3 const& p, PointC3 const& q, PointC3 const& r, PointC3 const& s) { typename R::FT x,y,z; circumcenterC3(p.x(),p.y(),p.z(), q.x(),q.y(),q.z(), r.x(),r.y(),r.z(), s.x(),s.y(),s.z(), x,y,z); return PointC3(x,y,z); } template < class R > PointC3 circumcenter( PointC3 const& p, PointC3 const& q, PointC3 const& r) { typename R::FT x,y,z; circumcenterC3(p.x(),p.y(),p.z(), q.x(),q.y(),q.z(), r.x(),r.y(),r.z(), x,y,z); return PointC3(x,y,z); } template CGAL_KERNEL_LARGE_INLINE PointC3 point_on_line(int i, const LineC3& l) { typename R::FT x, y, z; point_on_lineC3(l.point().x(),l.point().y(),l.point().z(), l.direction().dx(),l.direction().dy(),l.direction().dz(), i,x,y,z); return PointC3(x,y,z); } template CGAL_KERNEL_LARGE_INLINE PointC3 projection_line(const PointC3& p, const LineC3& l) { typename R::FT x,y,z; projection_lineC3(p.x(),p.y(),p.z(), l.point().x(), l.point().y(), l.point().z(), l.direction().dx(),l.direction().dy(),l.direction().dz(), x,y,z); return PointC3(x,y,z); } template CGAL_KERNEL_LARGE_INLINE PointC3 point_on_plane(const PlaneC3& p) { typename R::FT x, y, z; point_on_planeC3(p.a(),p.b(),p.c(),p.d(),x,y,z); return PointC3(x,y,z); } template CGAL_KERNEL_LARGE_INLINE PointC3 projection_plane(const PointC3& p, const PlaneC3& h) { typename R::FT x,y,z; projection_planeC3(h.a(),h.b(),h.c(),h.d(), p.x(),p.y(),p.z(), x,y,z); return PointC3(x,y,z); } CGAL_END_NAMESPACE #endif // CGAL_CARTESIAN_POINT_CONSTRUCTIONS_3_H