0024002: Overall code and build procedure refactoring -- automatic
[occt.git] / src / TopTrans / TopTrans_CurveTransition.hxx
diff --git a/src/TopTrans/TopTrans_CurveTransition.hxx b/src/TopTrans/TopTrans_CurveTransition.hxx
new file mode 100644 (file)
index 0000000..0edbf2c
--- /dev/null
@@ -0,0 +1,130 @@
+// Created on: 1992-01-30
+// Created by: Didier PIFFAULT
+// Copyright (c) 1992-1999 Matra Datavision
+// Copyright (c) 1999-2014 OPEN CASCADE SAS
+//
+// This file is part of Open CASCADE Technology software library.
+//
+// This library is free software; you can redistribute it and/or modify it under
+// the terms of the GNU Lesser General Public License version 2.1 as published
+// by the Free Software Foundation, with special exception defined in the file
+// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
+// distribution for complete text of the license and disclaimer of any warranty.
+//
+// Alternatively, this file may be used under the terms of Open CASCADE
+// commercial license or contractual agreement.
+
+#ifndef _TopTrans_CurveTransition_HeaderFile
+#define _TopTrans_CurveTransition_HeaderFile
+
+#include <Standard.hxx>
+#include <Standard_DefineAlloc.hxx>
+#include <Standard_Handle.hxx>
+
+#include <gp_Dir.hxx>
+#include <Standard_Real.hxx>
+#include <Standard_Boolean.hxx>
+#include <TopAbs_Orientation.hxx>
+#include <TopAbs_State.hxx>
+#include <Standard_Integer.hxx>
+class gp_Dir;
+
+
+//! This algorithm  is used to  compute the transition
+//! of a Curve intersecting a curvilinear boundary.
+//!
+//! The geometric  elements  are described locally  at
+//! the   intersection   point  by    a   second order
+//! development.
+//!
+//! The curve is described  by the intersection point,
+//! the tangent vector and the curvature.
+//!
+//! The  boundary  is described  by   a set  of  curve
+//! elements, a curve element is either :
+//!
+//! - A curve.
+//!
+//! - A curve and an orientation  called a half-curve,
+//! the boundary  of the curve is  before or after the
+//! intersection point depending on the orientation.
+class TopTrans_CurveTransition 
+{
+public:
+
+  DEFINE_STANDARD_ALLOC
+
+  
+  //! Create an empty  Curve Transition.
+  Standard_EXPORT TopTrans_CurveTransition();
+  
+  //! Initialize a Transition with the local description
+  //! of a Curve.
+  Standard_EXPORT void Reset (const gp_Dir& Tgt, const gp_Dir& Norm, const Standard_Real Curv);
+  
+  //! Initialize a Transition with the local description
+  //! of a straigth line.
+  Standard_EXPORT void Reset (const gp_Dir& Tgt);
+  
+  //! Add  a curve element to the  boundary.    If Or is
+  //! REVERSED  the curve  is   before the intersection,
+  //! else if  Or  is FORWARD  the   curv  is after  the
+  //! intersection   and    if   Or  is   INTERNAL   the
+  //! intersection is in the middle of the curv.
+  Standard_EXPORT void Compare (const Standard_Real Tole, const gp_Dir& Tang, const gp_Dir& Norm, const Standard_Real Curv, const TopAbs_Orientation S, const TopAbs_Orientation Or);
+  
+  //! returns   the  state   of  the   curve  before the
+  //! intersection, this is the position relative to the
+  //! boundary of a point very close to the intersection
+  //! on the negative side of the tangent.
+  Standard_EXPORT TopAbs_State StateBefore() const;
+  
+  //! returns  the    state of  the  curve   after   the
+  //! intersection, this is the position relative to the
+  //! boundary of a point very close to the intersection
+  //! on the positive side of the tangent.
+  Standard_EXPORT TopAbs_State StateAfter() const;
+
+
+
+
+protected:
+
+
+
+
+
+private:
+
+  
+  //! Compare two curvature and return true  if N1,C1 is
+  //! before N2,C2 in the edge orientation
+  Standard_EXPORT Standard_Boolean IsBefore (const Standard_Real Tole, const Standard_Real Angl, const gp_Dir& Nor1, const Standard_Real Cur1, const gp_Dir& Nor2, const Standard_Real Cur2) const;
+  
+  //! Compare two angles at tolerance Tole
+  Standard_EXPORT Standard_Integer Compare (const Standard_Real Ang1, const Standard_Real Ang2, const Standard_Real Tole) const;
+
+
+  gp_Dir myTgt;
+  gp_Dir myNorm;
+  Standard_Real myCurv;
+  Standard_Boolean Init;
+  gp_Dir TgtFirst;
+  gp_Dir NormFirst;
+  Standard_Real CurvFirst;
+  TopAbs_Orientation TranFirst;
+  gp_Dir TgtLast;
+  gp_Dir NormLast;
+  Standard_Real CurvLast;
+  TopAbs_Orientation TranLast;
+
+
+};
+
+
+
+
+
+
+
+#endif // _TopTrans_CurveTransition_HeaderFile