8 #ifndef IMPALGEBRA_PLANE_3D_H 
    9 #define IMPALGEBRA_PLANE_3D_H 
   11 #include <IMP/algebra/algebra_config.h> 
   15 #include <cereal/access.hpp> 
   17 IMPALGEBRA_BEGIN_NAMESPACE
 
   25       : normal_(normal_to_plane) {
 
   26     distance_ = normal_ * point_on_plane;
 
   28                                 "The normal vector must be normalized");
 
   31       : distance_(distance_to_plane), normal_(normal_to_plane) {
 
   33                                 "The normal vector must be normalized");
 
   35   Vector3D get_point_on_plane()
 const { 
return normal_ * distance_; }
 
   36   const Vector3D &get_normal()
 const { 
return normal_; }
 
   39     return p - normal_ * (normal_ * p - distance_);
 
   51   { out << 
"(" << distance_ << 
": " << spaces_io(normal_) << 
")"; });
 
   55   double get_distance_from_origin()
 const { 
return distance_; }
 
   61   friend class cereal::access;
 
   63   template<
class Archive> 
void serialize(Archive &ar) {
 
   64     ar(distance_, normal_);
 
   78   return p + 2 * (proj - p);
 
   82                           return std::numeric_limits<double>::infinity(), {
 
   84   Vector3D ip = get_ones_vector_d<3>(std::numeric_limits<double>::infinity());
 
   87 IMPALGEBRA_END_NAMESPACE
 
Base class for geometric types. 
 
double get_height(const Surface &s, const XYZR &d)
Get height of sphere above surface. 
 
#define IMP_SHOWABLE_INLINE(Name, how_to_show)
Declare the methods needed by an object that can be printed. 
 
BoundingBoxD< 3 > BoundingBox3D
Typedef for Python. 
 
#define IMP_USAGE_CHECK_FLOAT_EQUAL(expra, exprb, message)
 
Vector3D get_reflected(const Plane3D &pln, const Vector3D &p)
Return the point reflected about the plane. 
 
#define IMP_AREA_GEOMETRY_METHODS(Name, name, area, bounding_box)
Implement the needed namespace methods for a geometry type. 
 
Base class for geometric types. 
 
double get_distance(const Plane3D &pln, const Vector3D &p)
Return the distance between a plane and a point in 3D. 
 
#define IMP_UNUSED(variable)
 
Plane3D get_opposite() const 
Return the plane with the opposite normal. 
 
A bounding box in D dimensions. 
 
Vector3D get_projected(const Vector3D &p) const 
Project the point onto the plane.