moab
moab::BSPTree::Plane Struct Reference

struct to store a plane More...

#include <BSPTree.hpp>

List of all members.

Public Member Functions

 Plane ()
 Plane (const double n[3], double d)
 Plane (double a, double b, double c, double d)
 Plane (Axis normal, double point_on_axis)
double signed_distance (const double point[3]) const
bool below (const double point[3]) const
bool above (const double point[3]) const
double distance (const double point[3]) const
void flip ()
void set (const double normal[3], const double point[3])
void set (const double pt1[3], const double pt2[3], const double pt3[3])
void set (double i, double j, double k, double cff)
void set (Axis normal, double point_on_axis)

Public Attributes

double norm [3]
 Unit normal of plane.
double coeff
 norm[0]*x + norm[1]*y + norm[2]*z + coeff = 0

Detailed Description

struct to store a plane

If plane is defined as Ax+By+Cz+D=0, then norm={A,B,C} and coeff=-D.

Definition at line 75 of file BSPTree.hpp.


Constructor & Destructor Documentation

Definition at line 76 of file BSPTree.hpp.

{}
moab::BSPTree::Plane::Plane ( const double  n[3],
double  d 
) [inline]

Definition at line 77 of file BSPTree.hpp.

                                         : coeff(d)
      { norm[0] = n[0]; norm[1] = n[1]; norm[2] = n[2]; }
moab::BSPTree::Plane::Plane ( double  a,
double  b,
double  c,
double  d 
) [inline]

a x + b y + c z + d = 0

Definition at line 80 of file BSPTree.hpp.

                                                    : coeff(d)
      { norm[0] = a; norm[1] = b; norm[2] = c; }
moab::BSPTree::Plane::Plane ( Axis  normal,
double  point_on_axis 
) [inline]

Create Y = 1 plane by doing Plane( Y, 1.0 );

Definition at line 83 of file BSPTree.hpp.

                                               : coeff(-point_on_axis)
      { norm[0] = norm[1] = norm[2] = 0; norm[normal] = 1.0; }

Member Function Documentation

bool moab::BSPTree::Plane::above ( const double  point[3]) const [inline]

return true if point is above the plane

Definition at line 102 of file BSPTree.hpp.

      { return signed_distance(point) >= 0.0; }
bool moab::BSPTree::Plane::below ( const double  point[3]) const [inline]

return true if point is below the plane

Definition at line 98 of file BSPTree.hpp.

      { return signed_distance(point) <= 0.0; }
double moab::BSPTree::Plane::distance ( const double  point[3]) const [inline]

Definition at line 105 of file BSPTree.hpp.

      { return fabs( signed_distance(point) ); }
void moab::BSPTree::Plane::flip ( ) [inline]

reverse plane normal

Definition at line 109 of file BSPTree.hpp.

      { norm[0] = -norm[0]; norm[1] = -norm[1]; norm[2] = -norm[2]; coeff = -coeff; }
void moab::BSPTree::Plane::set ( const double  normal[3],
const double  point[3] 
) [inline]

Definition at line 112 of file BSPTree.hpp.

      { 
         const double dot = normal[0]*point[0] + normal[1]*point[1] + normal[2]*point[2];
        *this = Plane( normal, -dot ); 
      }
void moab::BSPTree::Plane::set ( const double  pt1[3],
const double  pt2[3],
const double  pt3[3] 
)

Definition at line 92 of file BSPTree.cpp.

{
  const double v1[] = { pt2[0] - pt1[0], pt2[1] - pt1[1], pt2[2] - pt1[2] };
  const double v2[] = { pt3[0] - pt1[0], pt3[1] - pt1[1], pt3[2] - pt1[2] };
  const double nrm[] = { v1[1]*v2[2] - v1[2]*v2[1],
                          v1[2]*v2[0] - v1[0]*v2[2],
                          v1[0]*v2[1] - v1[1]*v2[0] };
  set( nrm, pt1 );
}
void moab::BSPTree::Plane::set ( double  i,
double  j,
double  k,
double  cff 
) [inline]

Definition at line 120 of file BSPTree.hpp.

      { *this = Plane( i, j, k, cff ); }
void moab::BSPTree::Plane::set ( Axis  normal,
double  point_on_axis 
) [inline]

Create Y = 1 plane by doing set( Y, 1.0 );

Definition at line 124 of file BSPTree.hpp.

      { 
        coeff = -point_on_axis;
        norm[0] = norm[1] = norm[2] = 0; 
        norm[normal] = 1.0; 
      }
double moab::BSPTree::Plane::signed_distance ( const double  point[3]) const [inline]

Signed distance from point to plane: absolute value is distance from point to plane positive if 'above' plane, negative if 'below' Note: assumes unit-length normal.

Definition at line 94 of file BSPTree.hpp.

      { return point[0]*norm[0]+point[1]*norm[1]+point[2]*norm[2] + coeff; }

Member Data Documentation

norm[0]*x + norm[1]*y + norm[2]*z + coeff = 0

Definition at line 87 of file BSPTree.hpp.

Unit normal of plane.

Definition at line 86 of file BSPTree.hpp.


The documentation for this struct was generated from the following files:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines