![]() |
Mesh Oriented datABase
(version 5.4.1)
Array-based unstructured mesh datastructure
|
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 |
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.
moab::BSPTree::Plane::Plane | ( | ) | [inline] |
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;
}
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().
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 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().
{
return fabs( signed_distance( point ) );
}
void moab::BSPTree::Plane::flip | ( | ) | [inline] |
reverse plane normal
Definition at line 135 of file BSPTree.hpp.
Referenced by moab::BSPTreeIter::calculate_polyhedron(), moab::BSPTreeBoxIter::down(), moab::BSPTreePlaneIter::operator++(), moab::BSPTreeBoxIter::step(), and moab::BSPTreeBoxIter::step_to_first_leaf().
{
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().
{
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] |
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.
{
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.
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;
}
double moab::BSPTree::Plane::coeff |
norm[0]*x + norm[1]*y + norm[2]*z + coeff = 0
Definition at line 105 of file BSPTree.hpp.
Referenced by moab::BSPTreeIter::calculate_polyhedron(), flip(), moab::plane_cut_edge(), set(), moab::BSPTree::set_split_plane(), and signed_distance().
double moab::BSPTree::Plane::norm[3] |
Unit normal of plane.
Definition at line 104 of file BSPTree.hpp.
Referenced by moab::BSPTreeIter::calculate_polyhedron(), flip(), Plane(), moab::plane_cut_edge(), set(), moab::BSPTree::set_split_plane(), and signed_distance().