0024005: Intersecting a slightly off angle plane with a cylinder takes 7+ seconds
[occt.git] / src / IntPatch / IntPatch_Intersection.cdl
index f03835e..2afc0b0 100755 (executable)
 
 class Intersection from IntPatch
 
-       ---Purpose: This class provides a generic algorithm to intersect
+  ---Purpose: This class provides a generic algorithm to intersect
        --          2 surfaces.
 
 uses
-     HVertex        from Adaptor3d,
-     HCurve2d       from Adaptor2d,
-     HSurface       from Adaptor3d,
-     Point          from IntPatch,
+     HVertex         from Adaptor3d,
+     HCurve2d        from Adaptor2d,
+     HSurface        from Adaptor3d,
+     Point           from IntPatch,
      SequenceOfPoint from IntPatch,
-     TopolTool      from Adaptor3d,
-     SequenceOfLine from IntPatch,
-     Line           from IntPatch,
-     --amv
-     ListOfPntOn2S  from IntSurf
+     TopolTool       from Adaptor3d,
+     SequenceOfLine  from IntPatch,
+     Line            from IntPatch,
+     SurfaceType     from GeomAbs,
+     ListOfPntOn2S   from IntSurf
  
 raises NotDone           from StdFail,
        OutOfRange        from Standard,
@@ -52,147 +52,160 @@ is
             S2: HSurface from Adaptor3d; D2: TopolTool from Adaptor3d;
             TolArc,TolTang: Real from Standard)
            
-       returns Intersection from IntPatch
-       
-       raises ConstructionError from Standard;
+      returns Intersection from IntPatch
+           raises ConstructionError from Standard;
 
     Create (S1: HSurface from Adaptor3d; D1: TopolTool from Adaptor3d;
             TolArc,TolTang: Real from Standard)
            
-       returns Intersection from IntPatch
-       
-       raises ConstructionError from Standard;
+      returns Intersection from IntPatch
+      raises ConstructionError from Standard;
 
 
     SetTolerances(me       : in out;
                   TolArc   : Real from Standard;
-                 TolTang  : Real from Standard;
-                 UVMaxStep: Real from Standard;
-                 Fleche   : Real from Standard)
+                  TolTang  : Real from Standard;
+                  UVMaxStep: Real from Standard;
+                  Fleche   : Real from Standard)
                  
-       ---Purpose: Set the tolerances used by the algorithms:
-       --          --- Implicit   - Parametric  
-       --          --- Parametric - Parametric 
-       --          --- Implicit   - Implicit 
-       --         
-       --          TolArc   is  used  to   compute  the intersections
-       --          between the restrictions   of  a  surface   and  a
-       --          walking line.
-       --          
-       --          TolTang is used to compute the points on a walking
-       --          line, and in geometric algorithms.
-       --          
-       --          Fleche  is  a  parameter   used in    the  walking
-       --          algorithms to provide small curvatures on a line.
-       --          
-       --          UVMaxStep is  a  parameter   used in  the  walking
-       --          algorithms  to    compute the  distance between to
-       --          points in their respective parametrtic spaces.
-       --          
-        is static;
-
-    Perform (me: in out;
-             S1: HSurface from Adaptor3d; D1: TopolTool from Adaptor3d;
-             S2: HSurface from Adaptor3d; D2: TopolTool from Adaptor3d;
-             TolArc,TolTang: Real from Standard)            
+      ---Purpose: Set the tolerances used by the algorithms:
+      --          --- Implicit   - Parametric  
+      --          --- Parametric - Parametric 
+      --          --- Implicit   - Implicit 
+      --         
+      --          TolArc   is  used  to   compute  the intersections
+      --          between the restrictions   of  a  surface   and  a
+      --          walking line.
+      --          
+      --          TolTang is used to compute the points on a walking
+      --          line, and in geometric algorithms.
+      --          
+      --          Fleche  is  a  parameter   used in    the  walking
+      --          algorithms to provide small curvatures on a line.
+      --          
+      --          UVMaxStep is  a  parameter   used in  the  walking
+      --          algorithms  to    compute the  distance between to
+      --          points in their respective parametrtic spaces.
+      --
+      
+      is static;
 
-       raises ConstructionError from Standard    
-
-        is static;
-    
-    --amv
     Perform (me: in out;
              S1: HSurface from Adaptor3d; D1: TopolTool from Adaptor3d;
              S2: HSurface from Adaptor3d; D2: TopolTool from Adaptor3d;
              TolArc,TolTang: Real from Standard;
-            LOfPnts: in out ListOfPntOn2S from IntSurf;
-            RestrictLine: Boolean from Standard = Standard_True)
-
-       raises ConstructionError from Standard    
-
-       is static;
-
-    Perform (me: in out;
-             S1: HSurface from Adaptor3d; D1: TopolTool from Adaptor3d;
-             S2: HSurface from Adaptor3d; D2: TopolTool from Adaptor3d;
-            U1,V1,U2,V2 : Real from Standard;
-             TolArc,TolTang: Real from Standard)
+             isGeomInt : Boolean from Standard = Standard_True)             
 
-       raises ConstructionError from Standard    
-
-       is static;
+      raises ConstructionError from Standard    
+      is static;
+    
+      --amv
+    Perform ( me: in out;
+              S1: HSurface from Adaptor3d; D1: TopolTool from Adaptor3d;
+              S2: HSurface from Adaptor3d; D2: TopolTool from Adaptor3d;
+              TolArc,TolTang: Real from Standard;
+              LOfPnts: in out ListOfPntOn2S from IntSurf;
+              RestrictLine: Boolean from Standard = Standard_True;
+              isGeomInt : Boolean from Standard = Standard_True)
+              
+      ---Purpose: If isGeomInt == Standard_False, then method 
+      --          Param-Param intersection will be used.
+      
+      raises ConstructionError from Standard
+      is static;
+
+    Perform ( me: in out;
+              S1: HSurface from Adaptor3d; D1: TopolTool from Adaptor3d;
+              S2: HSurface from Adaptor3d; D2: TopolTool from Adaptor3d;
+              U1,V1,U2,V2 : Real from Standard;
+              TolArc,TolTang: Real from Standard)
+              
+      raises ConstructionError from Standard
+      is static;
 
     Perform (me: in out;
              S1: HSurface from Adaptor3d; D1: TopolTool from Adaptor3d;
              TolArc,TolTang: Real from Standard)
-
-       raises ConstructionError from Standard    
-
-       is static;
-
-
+      
+      raises ConstructionError from Standard
+      is static;
+  
+    ParamParamPerfom( me: in out;
+                      S1: HSurface from Adaptor3d; D1: TopolTool from Adaptor3d;
+                      S2: HSurface from Adaptor3d; D2: TopolTool from Adaptor3d;
+                      TolArc,TolTang: Real from Standard;
+                      LOfPnts: in out ListOfPntOn2S from IntSurf;
+                      RestrictLine: Boolean from Standard;
+                      typs1, typs2: SurfaceType from GeomAbs)
+
+      is private;
+      
+    GeomGeomPerfom( me: in out;
+                    S1: HSurface from Adaptor3d; D1: TopolTool from Adaptor3d;
+                    S2: HSurface from Adaptor3d; D2: TopolTool from Adaptor3d;
+                    TolArc,TolTang: Real from Standard;
+                    LOfPnts: in out ListOfPntOn2S from IntSurf;
+                    RestrictLine: Boolean from Standard;
+                    typs1, typs2: SurfaceType from GeomAbs)
+
+      is private;
+                    
+    GeomParamPerfom(me: in out;
+                    S1: HSurface from Adaptor3d; D1: TopolTool from Adaptor3d;
+                    S2: HSurface from Adaptor3d; D2: TopolTool from Adaptor3d;
+                    isNotAnalitical: Boolean from Standard;
+                    typs1, typs2: SurfaceType from GeomAbs)
+      
+      is private;
+      
     IsDone(me)
     
        ---Purpose: Returns True if the calculus was succesfull.
 
        returns Boolean from Standard
-       ---C++: inline
-       
+      ---C++: inline
+      
        is static;
 
 
     IsEmpty(me)
-    
-       ---Purpose: Returns true if the is no intersection.
-
-       returns Boolean from Standard
-       ---C++: inline
-
-       raises NotDone from StdFail
-
-       is static;
+      ---Purpose: Returns true if the is no intersection.
+      ---C++: inline
+      returns Boolean from Standard
+      raises NotDone from StdFail
+      is static;
 
 
     TangentFaces(me)
-    
-       ---Purpose: Returns True if the two patches are considered as
-       --          entierly tangent, i-e every restriction arc of one
-       --          patch is inside the geometric base of the other patch.
-
-       returns Boolean from Standard
-       ---C++: inline
-       
-       raises NotDone from StdFail
-       
-       is static;
-
-
+      ---Purpose: Returns True if the two patches are considered as
+      --          entierly tangent, i-e every restriction arc of one
+      --          patch is inside the geometric base of the other patch.
+      ---C++: inline
+      
+      returns Boolean from Standard
+      raises NotDone from StdFail
+      is static;
+      
     OppositeFaces(me)
-    
-       ---Purpose: Returns True when the TangentFaces returns True and the
-       --          normal vectors evaluated at a point on the first and the
-       --          second surface are opposite. 
-       --          The exception DomainError is raised if TangentFaces
-       --          returns False.
+      ---Purpose: Returns True when the TangentFaces returns True and the
+      --          normal vectors evaluated at a point on the first and the
+      --          second surface are opposite. 
+      --          The exception DomainError is raised if TangentFaces
+      --          returns False.
+      ---C++: inline
 
        returns Boolean from Standard
-       ---C++: inline
-       
-       raises NotDone     from StdFail,
-               DomainError from Standard
-       
-       is static;
+      raises  NotDone     from StdFail,
+              DomainError from Standard
+      is static;
 
 
     NbPnts(me)
-    
-       ---Purpose: Returns the number of "single" points.
+      ---Purpose: Returns the number of "single" points.
+      ---C++: inline
 
        returns Integer from Standard
-       ---C++: inline
-
        raises NotDone from StdFail
-       
        is static;
 
 
@@ -200,52 +213,46 @@ is
     
        ---Purpose: Returns the point of range Index.
        --          An exception is raised if Index<=0 or Index>NbPnt.
+      ---C++: return const&
+      ---C++: inline
 
        returns Point from IntPatch
-       ---C++: return const&
-       ---C++: inline
-
-       raises NotDone    from StdFail,
-               OutOfRange from Standard
+       raises  NotDone    from StdFail,
+              OutOfRange from Standard
 
        is static;
 
 
     NbLines(me)
-    
-       ---Purpose: Returns the number of intersection lines.
-
-       returns Integer from Standard
-       ---C++: inline
-
-       raises NotDone from StdFail
-
-       is static;
-
-
+      ---Purpose: Returns the number of intersection lines.
+      ---C++: inline
+      
+      returns Integer from Standard
+      raises NotDone from StdFail
+      is static;
+      
     Line(me; Index: Integer from Standard)
-    
-       ---Purpose: Returns the line of range Index.
+      ---Purpose: Returns the line of range Index.
        --          An exception is raised if Index<=0 or Index>NbLine.
+      ---C++: return const&
+      ---C++: inline
 
        returns Line from IntPatch
-       ---C++: return const&
-       ---C++: inline
-
-       raises NotDone    from StdFail,
-               OutOfRange from Standard
+       raises  NotDone    from StdFail,
+              OutOfRange from Standard
+              
+      is static;
+      
+    SequenceOfLine(me)
+      ---C++: return const&
+      
+      returns SequenceOfLine from IntPatch
+      raises NotDone    from StdFail
+      is static;
        
-       is static;
-       
-    SequenceOfLine(me) 
-       returns SequenceOfLine from IntPatch
-       ---C++: return const&
-        raises NotDone    from StdFail
-       is static;
-       
-    Dump(me; Mode: Integer from Standard;
-             S1: HSurface from Adaptor3d; D1: TopolTool from Adaptor3d;
-             S2: HSurface from Adaptor3d; D2: TopolTool from Adaptor3d) 
+    Dump(me; Mode : Integer from Standard;
+             S1   : HSurface from Adaptor3d; D1: TopolTool from Adaptor3d;
+             S2   : HSurface from Adaptor3d; D2: TopolTool from Adaptor3d) 
        ---Purpose: Dump of each result line. 
        ---         Mode for more accurate dumps. 
        --