16#include "CLHEP/Geometry/defs.h"
17#include "CLHEP/Geometry/Point3D.h"
18#include "CLHEP/Geometry/Normal3D.h"
19#include "CLHEP/Geometry/Transform3D.h"
46 :
a_(n.x()),
b_(n.y()),
c_(n.z()),
d_(-n*p) {}
54 a_ = n.x();
b_ = n.y();
c_ = n.z();
d_ = -n*p1;
63 template<
typename U = T,
64 typename =
typename std::enable_if<!std::is_same<U,float>::value >::type>
86 T
a()
const {
return a_; }
89 T
b()
const {
return b_; }
92 T
c()
const {
return c_; }
95 T
d()
const {
return d_; }
105 if (ll > 0.) {
a_ /= ll;
b_ /= ll;
c_ /= ll,
d_ /= ll; }
112 return a()*p.
x() +
b()*p.
y() +
c()*p.
z() +
d();
125 T k = -
d()/(
a()*
a()+
b()*
b()+
c()*
c());
132 return a() == p.
a() &&
b() == p.
b() &&
c() == p.
c() &&
d() == p.
d();
138 return a() != p.
a() ||
b() != p.
b() ||
c() != p.
c() ||
d() != p.
d();
146 d_ = -n*
point().transform(m);
a_ = n.x();
b_ = n.y();
c_ = n.z();
155 std::ostream &
operator<<(std::ostream & os,
const Plane3D<float> & p);
161 std::ostream &
operator<<(std::ostream & os,
const Plane3D<double> & p);
165#ifdef ENABLE_BACKWARDS_COMPATIBILITY
Plane3D(T a1, T b1, T c1, T d1)
Plane3D< T > & normalize()
Plane3D(const Normal3D< T > &n, const Point3D< T > &p)
Plane3D(Plane3D< T > &&)=default
Plane3D(const Plane3D< T > &)=default
Point3D< T > point(const Point3D< T > &p) const
Plane3D(const Point3D< T > &p1, const Point3D< T > &p2, const Point3D< T > &p3)
Plane3D< T > & operator=(const Plane3D< T > &)=default
Plane3D< T > & operator=(Plane3D< T > &&)=default
Normal3D< T > normal() const
Point3D< T > point() const
Plane3D(const Plane3D< float > &p)
T distance(const Point3D< T > &p) const
bool operator!=(const Plane3D< T > &p) const
bool operator==(const Plane3D< T > &p) const
Plane3D< T > & transform(const Transform3D &m)
std::ostream & operator<<(std::ostream &os, const BasicVector3D< float > &a)