#ifndef FILE_EDGEFLW #define FILE_EDGEFLW /**************************************************************************/ /* File: edgeflw.hh */ /* Author: Joachim Schoeberl */ /* Date: 01. Okt. 95 */ /**************************************************************************/ /* 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; public: EdgeCalculation (const CSGeometry & ageometry, ARRAY & aspecpoints); ~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