namespace
{
- inline bool isLessAngle( const gp_Vec& v1, const gp_Vec& v2, const double cos2 )
+ inline bool isLessAngle( const gp_Vec& v1, const gp_Vec& v2, const double cos )
{
double dot = v1 * v2; // cos * |v1| * |v2|
double l1 = v1.SquareMagnitude();
double l2 = v2.SquareMagnitude();
- return ( dot * dot ) / l1 / l2 >= cos2;
+ return (( dot * cos >= 0 ) &&
+ ( dot * dot ) / l1 / l2 >= ( cos * cos ));
}
}
CoplanarFaces::CoplanarFaces()
if (!normOK)
return;
- const double cosTol2 = Cos( myToler ) * Cos( myToler );
+ const double cosTol = Cos( myToler * M_PI / 180. );
NCollection_Map< SMESH_TLink, SMESH_TLink > checkedLinks;
std::list< pair< const SMDS_MeshElement*, gp_Vec > > faceQueue;
if ( f->GetNodeIndex( n2 ) > -1 )
{
gp_Vec norm = getNormale( static_cast<const SMDS_MeshFace*>(f), &normOK );
- if (!normOK || isLessAngle( myNorm, norm, cosTol2))
+ if (!normOK || isLessAngle( myNorm, norm, cosTol))
{
myCoplanarIDs.Add( f->GetID() );
faceQueue.push_back( make_pair( f, norm ));
myIds.Clear();
TCollection_AsciiString aStr = theStr;
- //aStr.RemoveAll( ' ' );
- //aStr.RemoveAll( '\t' );
for ( int i = 1; i <= aStr.Length(); ++i )
- if ( isspace( aStr.Value( i )))
- aStr.SetValue( i, ',');
-
- for ( int aPos = aStr.Search( ",," ); aPos != -1; aPos = aStr.Search( ",," ) )
- aStr.Remove( aPos, 1 );
+ {
+ char c = aStr.Value( i );
+ if ( !isdigit( c ) && c != ',' && c != '-' )
+ aStr.SetValue( i, ' ');
+ }
+ aStr.RemoveAll( ' ' );
TCollection_AsciiString tmpStr = aStr.Token( ",", 1 );
int i = 1;