glc_plane.h
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00025
00026 #ifndef GLC_PLANE_H_
00027 #define GLC_PLANE_H_
00028
00029 #include "glc_vector3d.h"
00030
00031 #include "../glc_config.h"
00032
00035
00038
00039 class GLC_LIB_EXPORT GLC_Plane
00040 {
00042
00044
00045 public:
00047 GLC_Plane();
00048
00050
00051 GLC_Plane(double A, double B, double C, double D);
00052
00054 GLC_Plane(const GLC_Vector3d& normal, double minimumDistance);
00055
00057 GLC_Plane(const GLC_Vector3d& normal, const GLC_Point3d& point);
00058
00060
00061 GLC_Plane(const GLC_Point3d&, const GLC_Point3d&, const GLC_Point3d&);
00062
00064 GLC_Plane(const GLC_Plane&);
00065
00067 GLC_Plane &operator=(const GLC_Plane&);
00068
00070 ~GLC_Plane();
00072
00074
00076
00077 public:
00078
00080 inline double coefA() const
00081 {return m_Eq[0];}
00082
00084 inline double coefB() const
00085 {return m_Eq[1];}
00086
00088 inline double coefC() const
00089 {return m_Eq[2];}
00090
00092 inline double coefD() const
00093 {return m_Eq[3];}
00094
00096 inline double distanceToPoint(const GLC_Point3d& p) const
00097 {return m_Eq[0] * p.x() + m_Eq[1] * p.y() + m_Eq[2] * p.z() + m_Eq[3];}
00098
00100 bool operator==(GLC_Plane) const;
00101
00103 inline bool operator!=(const GLC_Plane& p) const
00104 {return !operator==(p);}
00105
00107 inline GLC_Vector3d normal() const
00108 {return GLC_Vector3d(m_Eq[0], m_Eq[1], m_Eq[2]);}
00109
00111 inline bool lieOnThisPlane(const GLC_Point3d& p)
00112 {return (m_Eq[0] * p.x() + m_Eq[1] * p.y() + m_Eq[2] * p.z() + m_Eq[3]) == 0.0f;}
00113
00115 const double* data() const
00116 {return m_Eq;}
00117
00119 QString toString() const;
00121
00123
00125
00126 public:
00128 inline void setA(double a)
00129 {m_Eq[0]= a;}
00130
00132 inline void setB(double b)
00133 {m_Eq[1]= b;}
00134
00136 inline void setC(double c)
00137 {m_Eq[2]= c;}
00138
00140 inline void setD(double d)
00141 {m_Eq[3]= d;}
00142
00144 void normalize();
00145
00147 GLC_Plane& setPlane(const GLC_Vector3d& normal, const GLC_Point3d& point);
00148
00149
00151
00153
00155 private:
00157 double m_Eq[4];
00158 };
00159
00160 #endif