MeshKit  1.0
AF2FreeZoneDefLCQualLim.hpp
Go to the documentation of this file.
00001 /*
00002  * AF2FreeZoneDefLCQualLim.hpp
00003  *
00004  * A free zone definition that uses the quality level of the rule
00005  * application to scale the location of the points from a preferred
00006  * location toward some limiting acceptable location.
00007  *
00008  * When applying this free zone definition at any quality level,
00009  * the preferred point locations and limiting point locations
00010  * (for the vertex binding that maps the rule's reference vertices
00011  * to actual coordinates) are computed by applying point transforms
00012  * to reference preferred and limiting locations.
00013  * After that, the actual location for each boundary point of the free
00014  * zone at the given quality level by takin a linear combination
00015  * of the preferred location for the point and the limiting acceptable
00016  * location for the point.  The coefficients of the linear combination
00017  * are defined such that as the qualityClass number q increases (i.e.,
00018  * the quality decreases), the preferred location's coefficient is 1/q.
00019  */
00020 
00021 #ifndef AF2FREEZONEDEFLCQUALLIM_HPP
00022 #define AF2FREEZONEDEFLCQUALLIM_HPP
00023 
00024 // C++
00025 #include <list>
00026 
00027 // MeshKit
00028 #include "meshkit/AF2FreeZoneDef.hpp"
00029 #include "meshkit/AF2Point2D.hpp"
00030 #include "meshkit/AF2PointTransform.hpp"
00031 
00032 class AF2FreeZoneDefLCQualLim : public AF2FreeZoneDef
00033 {
00034   private:
00035 
00036     int numPoints;
00037     AF2Point2D* prefBndryPoints;
00038     AF2Point2D* limBndryPoints;
00039     const AF2PointTransform** prefPointTransforms;
00040     const AF2PointTransform** limPointTransforms;
00041 
00042   public:
00043 
00078     AF2FreeZoneDefLCQualLim(
00079         std::list<AF2Point2D> const & preferBndryPnts,
00080         std::list<const AF2PointTransform*> const & preferPntTrnsfrms,
00081         std::list<AF2Point2D> const & limitBndryPnts,
00082         std::list<const AF2PointTransform*> const & limitPntTrnsfrms);
00083 
00084     ~AF2FreeZoneDefLCQualLim();
00085 
00089     AF2FreeZoneDefLCQualLim(const AF2FreeZoneDefLCQualLim & toCopy);
00090 
00094     AF2FreeZoneDefLCQualLim& operator=(const AF2FreeZoneDefLCQualLim & rhs);
00095 
00096     AF2FreeZoneDefLCQualLim* clone() const;
00097 
00113     AF2FreeZone* makeFreeZone(
00114         AF2Binding const & vertexBinding, unsigned int qualityClass) const;
00115 };
00116 
00117 #endif
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines