MOAB: Mesh Oriented datABase  (version 5.4.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 81 of file BSPTree.hpp.

## Constructor & Destructor Documentation

 moab::BSPTree::Plane::Plane ( )  [inline]

Definition at line 83 of file BSPTree.hpp.

Referenced by set().

: coeff( 0.0 ) {}

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

Definition at line 84 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 91 of file BSPTree.hpp.

References 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 98 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 124 of file BSPTree.hpp.

References signed_distance().

        {
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 118 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 129 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::flip ( )  [inline]

reverse plane normal

Definition at line 135 of file BSPTree.hpp.

References coeff, and norm.

        {
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 143 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 151 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 157 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 112 of file BSPTree.hpp.

References coeff, and norm.

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


## Member Data Documentation

 double moab::BSPTree::Plane::coeff

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

Definition at line 105 of file BSPTree.hpp.

 double moab::BSPTree::Plane::norm[3]

Unit normal of plane.

Definition at line 104 of file BSPTree.hpp.

List of all members.

The documentation for this struct was generated from the following files: