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