MeshKit
1.0
|
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