1
0
mirror of https://git.dev.opencascade.org/repos/occt.git synced 2025-05-06 10:36:12 +03:00
occt/src/TopCnx/TopCnx_EdgeFaceTransition.cxx
2012-03-05 19:23:40 +04:00

123 lines
3.3 KiB
C++
Executable File

// File: TopCnx_EdgeFaceTransition.cxx
// Created: Wed Aug 12 17:08:45 1992
// Author: Remi LEQUETTE
// <rle@phylox>
#include <TopCnx_EdgeFaceTransition.ixx>
//=======================================================================
//function : TopCnx_EdgeFaceTransition
//purpose :
//=======================================================================
TopCnx_EdgeFaceTransition::TopCnx_EdgeFaceTransition() :
nbBoundForward(0),
nbBoundReversed(0)
{
}
//=======================================================================
//function : Reset
//purpose :
//=======================================================================
void TopCnx_EdgeFaceTransition::Reset(const gp_Dir& Tgt,
const gp_Dir& Norm,
const Standard_Real Curv)
{
myCurveTransition.Reset(Tgt,Norm,Curv);
nbBoundForward = nbBoundReversed = 0;
}
//=======================================================================
//function : Reset
//purpose :
//=======================================================================
void TopCnx_EdgeFaceTransition::Reset(const gp_Dir& Tgt)
{
myCurveTransition.Reset(Tgt);
nbBoundForward = nbBoundReversed = 0;
}
//=======================================================================
//function : AddInterference
//purpose :
//=======================================================================
void TopCnx_EdgeFaceTransition::AddInterference(const Standard_Real Tole,
const gp_Dir& Tang,
const gp_Dir& Norm,
const Standard_Real Curv,
const TopAbs_Orientation Or,
const TopAbs_Orientation Tr,
const TopAbs_Orientation BTr)
{
myCurveTransition.Compare(Tole,Tang,Norm,Curv,Tr,Or);
switch (BTr) {
case TopAbs_FORWARD :
nbBoundForward++;
break;
case TopAbs_REVERSED :
nbBoundReversed++;
break;
case TopAbs_INTERNAL :
case TopAbs_EXTERNAL :
break;
}
}
//=======================================================================
//function : Transition
//purpose :
//=======================================================================
TopAbs_Orientation TopCnx_EdgeFaceTransition::Transition()const
{
TopAbs_State Bef = myCurveTransition.StateBefore();
TopAbs_State Aft = myCurveTransition.StateAfter();
if (Bef == TopAbs_IN) {
if (Aft == TopAbs_IN )
return TopAbs_INTERNAL;
else if (Aft == TopAbs_OUT)
return TopAbs_REVERSED;
else
cout << "\n*** Complex Transition : unprocessed state"<<endl;
}
else if (Bef == TopAbs_OUT) {
if (Aft == TopAbs_IN )
return TopAbs_FORWARD;
else if (Aft == TopAbs_OUT)
return TopAbs_EXTERNAL;
else
cout << "\n*** Complex Transition : unprocessed state"<<endl;
}
else
cout << "\n*** Complex Transition : unprocessed state"<<endl;
return TopAbs_INTERNAL;
}
//=======================================================================
//function : BoundaryTransition
//purpose :
//=======================================================================
TopAbs_Orientation TopCnx_EdgeFaceTransition::BoundaryTransition()const
{
if (nbBoundForward > nbBoundReversed)
return TopAbs_FORWARD;
else if (nbBoundForward < nbBoundReversed)
return TopAbs_REVERSED;
else if ((nbBoundReversed % 2) == 0)
return TopAbs_EXTERNAL;
else
return TopAbs_EXTERNAL;
}