MeshKit
1.0
|
00001 /* 00002 * AF2Neighborhood.hpp 00003 * 00004 * An AF2Neighborhood represents a collection of points and edges 00005 * on the advancing front that are in the neighborhood of some specific 00006 * edge on the advancing front. The specific edge is called the 00007 * baseline edge. The advancing front algorithm uses an AF2Neighborhood 00008 * to assess whether it should add one or more additional faces and 00009 * perhaps also points and edges built off of the neighborhood's 00010 * baseline edge. 00011 * 00012 * The AF2Neighborhood manages conversion between an assumed 00013 * two-dimensional surface embedded in a three-dimensional 00014 * coordinate system and a local two-dimensional coordinate system 00015 * that is appropriate to the neighborhood. 00016 */ 00017 #ifndef AF2NEIGHBORHOOD_HPP 00018 #define AF2NEIGHBORHOOD_HPP 00019 00020 // C++ 00021 #include <list> 00022 #include <map> 00023 00024 // MeshKit 00025 #include "meshkit/AF2Point2D.hpp" 00026 #include "meshkit/AF2Point3D.hpp" 00027 #include "meshkit/AF2Edge2D.hpp" 00028 #include "meshkit/AF2Edge3D.hpp" 00029 #include "meshkit/AF2LocalTransform.hpp" 00030 00031 class AF2Neighborhood 00032 { 00033 private: 00034 00035 const AF2LocalTransform* localTransform; 00036 std::list<const AF2Point2D*> points2D; 00037 AF2Edge3D* baseEdge3D; 00038 const AF2Edge2D* baseEdge2D; 00039 std::list<const AF2Edge2D*> edges2D; 00040 std::map<AF2Point3D*, const AF2Point2D*> map3DTo2D; 00041 std::map<const AF2Point2D*, AF2Point3D*> map2DTo3D; 00042 00043 public: 00044 00080 AF2Neighborhood(const std::list<AF2Point3D*> & points, 00081 AF2Edge3D* baselineEdge, 00082 const std::list<const AF2Edge3D*> & otherEdges, 00083 const AF2LocalTransform* localTransformArg); 00084 00088 ~AF2Neighborhood(); 00089 00093 AF2Neighborhood(const AF2Neighborhood & toCopy); 00094 00098 AF2Neighborhood & operator=(const AF2Neighborhood & rhs); 00099 00107 const AF2Edge2D* getBaselineEdge2D() const; 00108 00115 AF2Edge3D* getBaselineEdge3D() const; 00116 00133 AF2Point3D* getCorrespondingPoint( 00134 const AF2Point2D* const & ngbhdPoint2D) const; 00135 00143 const std::list<const AF2Edge2D*>* getEdges2D() const; 00144 00151 const std::list<const AF2Point2D*>* getPoints2D() const; 00152 00173 AF2Point3D* transformPoint(const AF2Point2D* const & point2D, 00174 unsigned long const & pntId) const; 00175 }; 00176 00177 #endif