diff --git a/libsrc/stlgeom/stltool.cpp b/libsrc/stlgeom/stltool.cpp index 96cc384a..9028cd72 100644 --- a/libsrc/stlgeom/stltool.cpp +++ b/libsrc/stlgeom/stltool.cpp @@ -778,11 +778,13 @@ void STLChart :: SetNormal (const Point<3> & apref, const Vec<3> & anormal) t2 = Cross (normal, t1); } +/* Point<2> STLChart :: Project2d (const Point<3> & p3d) const { Vec<3> v = p3d-pref; return Point<2> (t1 * v, t2 * v); } +*/ @@ -792,6 +794,8 @@ Point<2> STLChart :: Project2d (const Point<3> & p3d) const int i1, i2; public: */ + +/* STLBoundarySeg :: STLBoundarySeg (int ai1, int ai2, const Array > & points, const STLChart * chart) @@ -809,6 +813,7 @@ STLBoundarySeg (int ai1, int ai2, const Array > & points, boundingbox.Set (p2d1); boundingbox.Add (p2d2); } +*/ void STLBoundarySeg :: Swap () { @@ -1104,6 +1109,15 @@ int STLBoundary :: TestSegChartNV(const Point3d & p1, const Point3d& p2, double eps = 1e-3; bool ok = true; + /* + static long int cnt = 0; + static long int totnseg = 0; + totnseg += nseg; + cnt++; + if ( (cnt % 100000) == 0) + cout << "avg nseg = " << double(totnseg)/cnt << endl; + */ + for (int j = 1; j <= nseg; j++) { const STLBoundarySeg & seg = GetSegment(j); diff --git a/libsrc/stlgeom/stltool.hpp b/libsrc/stlgeom/stltool.hpp index ca3d6e2f..647d030e 100644 --- a/libsrc/stlgeom/stltool.hpp +++ b/libsrc/stlgeom/stltool.hpp @@ -100,7 +100,11 @@ private: public: void SetNormal (const Point<3> & apref, const Vec<3> & anormal); const Vec<3> & GetNormal () const { return normal; } - Point<2> Project2d (const Point<3> & p3d) const; + Point<2> Project2d (const Point<3> & p3d) const + { + Vec<3> v = p3d-pref; + return Point<2> (t1 * v, t2 * v); + } }; class STLBoundarySeg @@ -116,7 +120,19 @@ class STLBoundarySeg public: STLBoundarySeg () { ; } STLBoundarySeg (int ai1, int ai2, const Array > & points, - const STLChart * achart); + const STLChart * chart) + : p1(points.Get(ai1)), p2(points.Get(ai2)), + i1(ai1), i2(ai2) + { + center = ::netgen::Center (p1, p2); + rad = Dist (p1, center); + + p2d1 = chart->Project2d (p1); + p2d2 = chart->Project2d (p2); + + boundingbox.Set (p2d1); + boundingbox.Add (p2d2); + } int operator== (const STLBoundarySeg & s2) const { return i1 == s2.i1 && i2 == s2.i2; }