geometry: add minimum distance threshold parameter to SHAPE_LINE_CHAIN::Find()/FindSegment()
This commit is contained in:
parent
b3fb7190df
commit
7553b7b092
|
@ -544,7 +544,7 @@ public:
|
||||||
* @param aP the point to be looked for
|
* @param aP the point to be looked for
|
||||||
* @return index of the correspoinding point in the line chain or negative when not found.
|
* @return index of the correspoinding point in the line chain or negative when not found.
|
||||||
*/
|
*/
|
||||||
int Find( const VECTOR2I& aP ) const;
|
int Find( const VECTOR2I& aP, int aThreshold = 0 ) const;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Function FindSegment()
|
* Function FindSegment()
|
||||||
|
@ -553,7 +553,7 @@ public:
|
||||||
* @param aP the point to be looked for
|
* @param aP the point to be looked for
|
||||||
* @return index of the correspoinding segment in the line chain or negative when not found.
|
* @return index of the correspoinding segment in the line chain or negative when not found.
|
||||||
*/
|
*/
|
||||||
int FindSegment( const VECTOR2I& aP ) const;
|
int FindSegment( const VECTOR2I& aP, int aThreshold = 1 ) const;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Function Slice()
|
* Function Slice()
|
||||||
|
|
|
@ -463,20 +463,30 @@ int SHAPE_LINE_CHAIN::Split( const VECTOR2I& aP )
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int SHAPE_LINE_CHAIN::Find( const VECTOR2I& aP ) const
|
int SHAPE_LINE_CHAIN::Find( const VECTOR2I& aP, int aThreshold ) const
|
||||||
{
|
{
|
||||||
for( int s = 0; s < PointCount(); s++ )
|
for( int s = 0; s < PointCount(); s++ )
|
||||||
if( CPoint( s ) == aP )
|
{
|
||||||
return s;
|
if( aThreshold == 0 )
|
||||||
|
{
|
||||||
|
if( CPoint( s ) == aP )
|
||||||
|
return s;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if( (CPoint( s ) - aP).EuclideanNorm() <= aThreshold )
|
||||||
|
return s;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int SHAPE_LINE_CHAIN::FindSegment( const VECTOR2I& aP ) const
|
int SHAPE_LINE_CHAIN::FindSegment( const VECTOR2I& aP, int aThreshold ) const
|
||||||
{
|
{
|
||||||
for( int s = 0; s < SegmentCount(); s++ )
|
for( int s = 0; s < SegmentCount(); s++ )
|
||||||
if( CSegment( s ).Distance( aP ) <= 1 )
|
if( CSegment( s ).Distance( aP ) <= aThreshold )
|
||||||
return s;
|
return s;
|
||||||
|
|
||||||
return -1;
|
return -1;
|
||||||
|
|
Loading…
Reference in New Issue