#ifndef FILE_EDGEFLW #define FILE_EDGEFLW /**************************************************************************/ /* File: edgeflw.hh */ /* Author: Joachim Schoeberl */ /* Date: 01. Okt. 95 */ /**************************************************************************/ namespace netgen { /* Edge - following function and Projection to edge of implicitly given edge */ /** Calculates edges. The edges of a solid geometry are computed. Special points have to be given. */ extern void CalcEdges (const CSGeometry & geometry, const Array & specpoints, double h, Mesh & mesh); class EdgeCalculation { const CSGeometry & geometry; Array & specpoints; Point3dTree * searchtree; Point3dTree * meshpoint_tree; int cntedge; double ideps; MeshingParameters & mparam; public: EdgeCalculation (const CSGeometry & ageometry, Array & aspecpoints, MeshingParameters & amparam); ~EdgeCalculation(); void SetIdEps(const double epsin) {ideps = epsin;} void Calc(double h, Mesh & mesh); private: void CalcEdges1 (double h, Mesh & mesh); void FollowEdge (int pi1, int & ep, int & pos, // const Array & hsp, const Array & hsp, double h, const Mesh & mesh, Array > & edgepoints, Array & curvelength); void AnalyzeEdge (int s1, int s2, int s1_rep, int s2_rep, int pos, int layer, const Array > & edgepoints, Array & refedges, Array & refedgesinv); void StoreEdge (const Array & refedges, const Array & refedgesinv, const Array > & edgepoints, const Array & curvelength, int layer, Mesh & mesh); void StoreShortEdge (const Array & refedges, const Array & refedgesinv, const Array > & edgepoints, const Array & curvelength, int layer, Mesh & mesh); void CopyEdge (const Array & refedges, const Array & refedgesinv, int copyfromedge, const Point<3> & fromstart, const Point<3> & fromend, const Point<3> & tostart, const Point<3> & toend, int copyedgeidentification, int layer, Mesh & mesh); void SplitEqualOneSegEdges (Mesh & mesh); void FindClosedSurfaces (double h, Mesh & mesh); public: bool point_on_edge_problem; }; } #endif