mirror of
https://github.com/Open-Cascade-SAS/OCCT.git
synced 2026-05-25 17:43:48 +08:00
161 lines
6.6 KiB
Plaintext
Executable File
161 lines
6.6 KiB
Plaintext
Executable File
-- Created on: 1992-01-30
|
|
-- Created by: Didier PIFFAULT
|
|
-- Copyright (c) 1992-1999 Matra Datavision
|
|
-- Copyright (c) 1999-2012 OPEN CASCADE SAS
|
|
--
|
|
-- The content of this file is subject to the Open CASCADE Technology Public
|
|
-- License Version 6.5 (the "License"). You may not use the content of this file
|
|
-- except in compliance with the License. Please obtain a copy of the License
|
|
-- at http://www.opencascade.org and read it completely before using this file.
|
|
--
|
|
-- The Initial Developer of the Original Code is Open CASCADE S.A.S., having its
|
|
-- main offices at: 1, place des Freres Montgolfier, 78280 Guyancourt, France.
|
|
--
|
|
-- The Original Code and all software distributed under the License is
|
|
-- distributed on an "AS IS" basis, without warranty of any kind, and the
|
|
-- Initial Developer hereby disclaims all such warranties, including without
|
|
-- limitation, any warranties of merchantability, fitness for a particular
|
|
-- purpose or non-infringement. Please see the License for the specific terms
|
|
-- and conditions governing the rights and limitations under the License.
|
|
|
|
-- xpu:4/3/97 implementation
|
|
|
|
|
|
class SurfaceTransition from TopTrans
|
|
|
|
---Purpose: This algorithm is used to compute the transition
|
|
-- of a 3D surface intersecting a topological surfacic
|
|
-- boundary on a 3D curve ( intersection curve ).
|
|
-- The boundary is described by a set of faces
|
|
-- each face is described by
|
|
-- - its support surface,
|
|
-- - an orientation defining its matter side.
|
|
-- The geometric elements are described locally at the
|
|
-- intersection point by a second order development.
|
|
-- A surface is described by the normal vector, the
|
|
-- principal directions and the principal curvatures.
|
|
-- A curve is described by the tangent, the normal
|
|
-- and the curvature.
|
|
-- The algorithm keeps track of the two faces elements
|
|
-- closest to the part of the curve "before" and "after"
|
|
-- the intersection, these two elements are updated
|
|
-- for each new face.
|
|
-- The position of the curve can be computed when at
|
|
-- least one surface element has been given, this
|
|
-- position is "In","Out" or "On" for the part of the
|
|
-- curve "Before" or "After" the intersection.
|
|
|
|
uses
|
|
Pnt from gp,
|
|
Dir from gp,
|
|
State from TopAbs,
|
|
Orientation from TopAbs,
|
|
Array2OfReal from TColStd,
|
|
Array2OfOrientation from TopTrans
|
|
is
|
|
|
|
Create returns SurfaceTransition from TopTrans;
|
|
---Purpose: Create an empty Surface Transition.
|
|
|
|
Reset ( me : in out;
|
|
Tgt : Dir from gp; -- curve tangent at this point
|
|
Norm : Dir from gp; -- surface normal at this point
|
|
MaxD, MinD : Dir from gp; -- surface principal directions at this point
|
|
MaxCurv, MinCurv : in Real ); -- curvatures on surface at this point
|
|
---Purpose: Initialize a Surface Transition with the local
|
|
-- description of the intersection curve and of the
|
|
-- reference surface.
|
|
-- PREQUESITORY : Norm oriented OUTSIDE "geometric matter"
|
|
|
|
Reset ( me : in out;
|
|
Tgt : Dir from gp;
|
|
Norm : Dir from gp );
|
|
---Purpose: Initialize a Surface Transition with the local
|
|
-- description of a straight line.
|
|
|
|
Compare(me : in out;
|
|
Tole : Real; -- Cosine tolerance
|
|
Norm : Dir from gp; -- surface normal oriented at this point
|
|
MaxD, MinD : Dir from gp; -- surface principal directions at this point
|
|
MaxCurv, MinCurv : in Real; -- curvatures on surface at this point
|
|
S : Orientation from TopAbs;
|
|
O : Orientation from TopAbs );
|
|
---Purpose: Add a face element to the boundary.
|
|
--
|
|
-- - S defines topological orientation for the face :
|
|
-- S FORWARD means: along the intersection curve on the
|
|
-- reference surface, transition states while crossing
|
|
-- the face are OUT,IN.
|
|
-- S REVERSED means states are IN,OUT.
|
|
-- S INTERNAL means states are IN,IN.
|
|
--
|
|
-- - O defines curve's position on face :
|
|
-- O FORWARD means the face is before the intersection
|
|
-- O REVERSED means the face is AFTER
|
|
-- O INTERNAL means the curve intersection is in the face.
|
|
-- PREQUESITORY : Norm oriented OUTSIDE "geometric matter"
|
|
|
|
Compare(me : in out;
|
|
Tole : Real;
|
|
Norm : Dir from gp;
|
|
S : Orientation from TopAbs;
|
|
O : Orientation from TopAbs);
|
|
---Purpose: Add a plane or a cylindric face to the boundary.
|
|
|
|
StateBefore(me) returns State from TopAbs;
|
|
---Purpose: Returns the state of the reference surface before
|
|
-- the interference, this is the position relative to
|
|
-- the surface of a point very close to the intersection
|
|
-- on the negative side of the tangent.
|
|
|
|
StateAfter(me) returns State from TopAbs;
|
|
---Purpose: Returns the state of the reference surface after
|
|
-- interference, this is the position relative to the
|
|
-- surface of a point very close to the intersection
|
|
-- on the positive side of the tangent.
|
|
|
|
--
|
|
-- Private :
|
|
--
|
|
|
|
UpdateReference(me : in out;
|
|
Tole : Real;
|
|
isInfRef : Boolean;
|
|
CosInf, CosSup : in out Real;
|
|
Tran : Orientation from TopAbs;
|
|
TranRef : in out Orientation from TopAbs) is private;
|
|
|
|
ComputeCos(me;
|
|
Tole : Real; -- cosinus tolerance
|
|
Norm : Dir from gp; -- face normal
|
|
O : Orientation from TopAbs; -- intersection position on face
|
|
isleft : out Boolean) returns Real is private;
|
|
|
|
GetBefore(myclass;
|
|
Tran : Orientation from TopAbs)
|
|
returns State from TopAbs;
|
|
|
|
GetAfter(myclass;
|
|
Tran : Orientation from TopAbs)
|
|
returns State from TopAbs;
|
|
|
|
fields
|
|
|
|
-- local reference input data :
|
|
myTgt : Dir from gp; -- intersection curve tangent
|
|
myNorm : Dir from gp; -- reference surface normal
|
|
beafter : Dir from gp; -- direction (Before, After) on reference surface.
|
|
myCurvRef : Real; -- for the reference surface
|
|
|
|
-- local data for boundary faces :
|
|
myAng : Array2OfReal from TColStd;
|
|
myCurv : Array2OfReal from TColStd;
|
|
myOri : Array2OfOrientation from TopTrans;
|
|
|
|
-- flag for touch case (eap Mar 25 2002)
|
|
myTouchFlag : Boolean from Standard;
|
|
|
|
end SurfaceTransition;
|
|
|
|
|