libMesh::Plane Class Reference

#include <plane.h>

Inheritance diagram for libMesh::Plane:

List of all members.

Public Member Functions

 Plane ()
 Plane (const Point &p, const Point &n)
 Plane (const Point &p0, const Point &p1, const Point &p2)
 Plane (const Plane &other_plane)
 ~Plane ()
void create_from_point_normal (const Point &p, const Point &n)
void create_from_three_points (const Point &p0, const Point &p1, const Point &p2)
void xy_plane (const Real zpos=0.)
void xz_plane (const Real ypos=0.)
void yz_plane (const Real xpos=0.)
bool above_surface (const Point &p) const
bool below_surface (const Point &p) const
bool on_surface (const Point &p) const
Point closest_point (const Point &p) const
Point unit_normal (const Point &p) const
const Pointget_planar_point () const
virtual Point surface_coords (const Point &world_coords) const
virtual Point world_coords (const Point &surf_coords) const

Private Member Functions

const Pointnormal () const

Private Attributes

Point _point
Point _normal

Detailed Description

This class defines a plane.

Author:
Benjamin S. Kirk, 2002

Definition at line 40 of file plane.h.


Constructor & Destructor Documentation

libMesh::Plane::Plane (  ) 

Dummy Constructor.

Definition at line 32 of file plane.C.

00033 {
00034 }

libMesh::Plane::Plane ( const Point p,
const Point n 
)

Constructs a plane containing point p with normal n.

Definition at line 38 of file plane.C.

References create_from_point_normal().

00040 {
00041   this->create_from_point_normal (p, n);
00042 }

libMesh::Plane::Plane ( const Point p0,
const Point p1,
const Point p2 
)

Constructs a plane containing the three points. The normal is determined in a counter-clockwise sense. See the create_from_three_points method for more details.

Definition at line 46 of file plane.C.

References create_from_three_points().

00049 {
00050   this->create_from_three_points (p0, p1, p2);
00051 }

libMesh::Plane::Plane ( const Plane other_plane  ) 

Copy-constructor.

Definition at line 55 of file plane.C.

References _normal, _point, and create_from_point_normal().

00055                                       :
00056   Surface()
00057 {
00058   this->create_from_point_normal(other_plane._point,
00059                                  other_plane._normal);
00060 }

libMesh::Plane::~Plane (  ) 

Destructor. Does nothing at the moment.

Definition at line 64 of file plane.C.

00065 {
00066 }


Member Function Documentation

bool libMesh::Plane::above_surface ( const Point p  )  const [virtual]
Returns:
true if the point p is above the surface, false otherwise.

Implements libMesh::Surface.

Definition at line 127 of file plane.C.

References _point, normal(), and libMesh::Real.

Referenced by below_surface().

00128 {
00129   // Create a vector from the surface to point p;
00130   const Point w = p - _point;
00131 
00132   // The point is above the surface if the projection
00133   // of that vector onto the normal is positive
00134   const Real proj = w*this->normal();
00135 
00136   if (proj > 0.)
00137     return true;
00138 
00139   return false;
00140 }

bool libMesh::Plane::below_surface ( const Point p  )  const [virtual]
Returns:
true if the point p is below the surface, false otherwise.

Implements libMesh::Surface.

Definition at line 144 of file plane.C.

References above_surface().

00145 {
00146   return ( !this->above_surface (p) );
00147 }

Point libMesh::Plane::closest_point ( const Point p  )  const [virtual]
Returns:
the closest point on the surface to point p.

Implements libMesh::Surface.

Definition at line 169 of file plane.C.

References _point, and normal().

00170 {
00171   // Create a vector from the surface to point p;
00172   const Point w = p - _point;
00173 
00174   // The closest point in the plane to point p
00175   // is in the negative normal direction
00176   // a distance w (dot) p.
00177   const Point cp = p - this->normal()*(w*this->normal());
00178 
00179   return cp;
00180 }

void libMesh::Plane::create_from_point_normal ( const Point p,
const Point n 
)

Defines a plane containing point p with normal n.

Definition at line 70 of file plane.C.

References _normal, _point, and libMesh::TypeVector< T >::unit().

Referenced by Plane().

00071 {
00072   _normal = n.unit();
00073   _point  = p;
00074 }

void libMesh::Plane::create_from_three_points ( const Point p0,
const Point p1,
const Point p2 
)

Defines a plane intersecting the three points p0, p1, and p2. The normal is constructed in a counter-clockwise sense, i.e. (p1-p0)x(p2-p0);

Definition at line 78 of file plane.C.

References _normal, _point, libMesh::TypeVector< T >::cross(), and libMesh::TypeVector< T >::unit().

Referenced by Plane().

00081 {
00082   // Just use p0 for the point.
00083   _point = p0;
00084 
00085   const Point e0 = p1 - p0;
00086   const Point e1 = p2 - p0;
00087   const Point n  = e0.cross(e1);
00088 
00089   _normal = n.unit();
00090 }

const Point & libMesh::Plane::get_planar_point (  )  const
Returns:
a point on the plane useful for determining position

Definition at line 189 of file plane.C.

References _point.

00190 {
00191   return _point;
00192 }

const Point & libMesh::Plane::normal (  )  const [inline, private]

Returns the normal for the plane.

Definition at line 158 of file plane.h.

References _normal.

Referenced by above_surface(), closest_point(), and on_surface().

00159 {
00160   return _normal;
00161 }

bool libMesh::Plane::on_surface ( const Point p  )  const [virtual]
Returns:
true if the point p is on the surface, false otherwise. Note that the definition of on the surface really means "very close" to account for roundoff error.

Implements libMesh::Surface.

Definition at line 151 of file plane.C.

References _point, std::abs(), normal(), and libMesh::Real.

00152 {
00153   // Create a vector from the surface to point p;
00154   const Point w = p - _point;
00155 
00156   // If the projection of that vector onto the
00157   // plane's normal is 0 then the point is in
00158   // the plane.
00159   const Real proj = w * this->normal();
00160 
00161   if (std::abs(proj) < 1.e-10)
00162     return true;
00163 
00164   return false;
00165 }

Point libMesh::Surface::surface_coords ( const Point world_coords  )  const [inline, virtual, inherited]
Returns:
the Point world_coords in the surface's coordinate system. world_coords is in the world coordinate system. This method is not purely virtual, because there may be surfaces that do not have an own coordinate system. These simply do not have to overload this method.

Reimplemented in libMesh::Sphere.

Definition at line 121 of file surface.h.

00122 {
00123   Point p (from_world_coords);
00124   return p;
00125 }

Point libMesh::Plane::unit_normal ( const Point p  )  const [virtual]
Returns:
a unit vector normal to the surface at point p.

Implements libMesh::Surface.

Definition at line 184 of file plane.C.

References _normal.

00185 {
00186   return _normal;
00187 }

Point libMesh::Surface::world_coords ( const Point surf_coords  )  const [inline, virtual, inherited]
Returns:
the world (cartesian) coordinates for the surface coordinates surf_coords. This method is not purely virtual, because there may be surfaces that do not have an own coordinate system. These simply do not have to overload this method.

Reimplemented in libMesh::Sphere.

Definition at line 130 of file surface.h.

00131 {
00132   Point p (surf_coords);
00133   return p;
00134 }

void libMesh::Plane::xy_plane ( const Real  zpos = 0.  ) 

Creates an XY plane located at z=zpos,

Definition at line 94 of file plane.C.

References _normal, and _point.

00095 {
00096   const Point p (0., 0., zpos);
00097   const Point n (0., 0., 1.);
00098 
00099   _point  = p;
00100   _normal = n;
00101 }

void libMesh::Plane::xz_plane ( const Real  ypos = 0.  ) 

Creates an XZ plane located at y=ypos,

Definition at line 105 of file plane.C.

References _normal, and _point.

00106 {
00107   const Point p (0., ypos, 0.);
00108   const Point n (0., 1., 0.);
00109 
00110   _point  = p;
00111   _normal = n;
00112 }

void libMesh::Plane::yz_plane ( const Real  xpos = 0.  ) 

Creates an YZ plane located at x=xpos,

Definition at line 116 of file plane.C.

References _normal, and _point.

00117 {
00118   const Point p (xpos, 0., 0.);
00119   const Point n (1., 0., 0.);
00120 
00121   _point  = p;
00122   _normal = n;
00123 }


Member Data Documentation

The plane is defined by a point and a normal.

Definition at line 149 of file plane.h.

Referenced by above_surface(), closest_point(), create_from_point_normal(), create_from_three_points(), get_planar_point(), on_surface(), Plane(), xy_plane(), xz_plane(), and yz_plane().


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

Site Created By: libMesh Developers
Last modified: February 05 2013 19:55:34 UTC

Hosted By:
SourceForge.net Logo