MeshKit  1.0
AF2DfltPlaneProjMaker.hpp
Go to the documentation of this file.
00001 /*
00002  * AF2DfltPlaneProjMaker.hpp
00003  *
00004  * An AF2DfltPlaneProjMaker is an object that implements the default
00005  * method for making an AF2PlaneProjection.
00006  *
00007  * The method depends on having access to the geometric surface.  It uses the
00008  * start point of the neighborhood baseline edge as the origin of the plane.
00009  * It uses the direction of the neighborhood baseline edge as the x-direction
00010  * of the plane.  The mean of the normal vectors to the surface at the
00011  * endpoints of the baseline edge, after any component in the x-direction
00012  * is removed, is used as the normal to the plane.
00013  *
00014  * If a sizing function is provided, the size at the midpoint of the
00015  * (3-dimensional) baseline edge, which is a point that might not lie on
00016  * the surface, will be used as the scale for the plane projection,
00017  * provided that the size is larger than zero and is not too much different
00018  * than the actual length of the baseline edge.  In other words, a distance
00019  * in the plane of that length will be considered a distance of length
00020  * one when a rule is applied.  If no sizing function is provided or
00021  * the sizing function returns a value that is very near to zero relative
00022  * to the actual length of the baseline edge, then the actual length of
00023  * the baseline edge will be used as the scale.  If the sizing function
00024  * appears to return a reasonably defined value, but the value is much
00025  * smaller or larger than the actual length of the baseline edge, then
00026  * a scale closer to the actual length that attempts to change the size
00027  * towards the desired size will be used.
00028  */
00029 #ifndef AF2DFLTPLANEPROJMAKER_HPP
00030 #define AF2DFLTPLANEPROJMAKER_HPP
00031 
00032 // C++
00033 #include <cstddef>
00034 
00035 // MeshKit
00036 #include "meshkit/AF2LocalTransformMaker.hpp"
00037 #include "meshkit/SizingFunction.hpp"
00038 #include "meshkit/iGeom.hpp"
00039 
00040 class AF2DfltPlaneProjMaker: public AF2LocalTransformMaker
00041 {
00042   private:
00043 
00044     iGeom* iGeomPtr;
00045     iGeom::EntityHandle surface;
00046     MeshKit::SizingFunction* sizing;
00047 
00048   public:
00049 
00062      AF2DfltPlaneProjMaker(iGeom* iGeomPtrArg, iGeom::EntityHandle surf,
00063          MeshKit::SizingFunction* sizingArg = NULL);
00064 
00072     AF2LocalTransform* makeLocalTransform(
00073         const std::list<AF2Point3D*> & ngbhdPoints,
00074         const AF2Edge3D* const & baselineEdge,
00075         const std::list<const AF2Edge3D*> & otherNgbhdEdges) const;
00076 };
00077 
00078 #endif
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines