MOAB: Mesh Oriented datABase  (version 5.3.1)
moab::BSPTree::Plane Struct Reference

struct to store a plane More...

#include <BSPTree.hpp>

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 79 of file BSPTree.hpp.


Constructor & Destructor Documentation

Definition at line 81 of file BSPTree.hpp.

Referenced by set().

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

Definition at line 82 of file BSPTree.hpp.

References norm.

                                             : 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 89 of file BSPTree.hpp.

References b, and norm.

                                                        : 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 96 of file BSPTree.hpp.

References norm.

                                                   : 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 122 of file BSPTree.hpp.

References signed_distance().

Referenced by moab::BSPTreeBoxIter::intersects(), moab::BSPTree::leaf_containing_point(), and moab::BSPTreeBoxIter::side_above_plane().

        {
            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 116 of file BSPTree.hpp.

References signed_distance().

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

Definition at line 127 of file BSPTree.hpp.

References signed_distance().

Referenced by moab::BSPTreeBoxIter::side_on_plane(), and test_set_plane().

        {
            return fabs( signed_distance( point ) );
        }
void moab::BSPTree::Plane::set ( const double  normal[3],
const double  point[3] 
) [inline]

Definition at line 141 of file BSPTree.hpp.

References moab::dot(), and Plane().

Referenced by test_leaf_splits_intersects(), and test_set_plane().

        {
            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 84 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 149 of file BSPTree.hpp.

References Plane().

        {
            *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 155 of file BSPTree.hpp.

References coeff, and norm.

        {
            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 110 of file BSPTree.hpp.

References coeff, and norm.

Referenced by above(), below(), distance(), moab::BSPTreeBoxIter::get_neighbors(), and moab::BSPTreeBoxIter::splits().

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

Member Data Documentation

List of all members.


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