SEG: Correct sign in LineDistance
This commit is contained in:
@@ -441,7 +441,7 @@ int SEG::LineDistance( const VECTOR2I& aP, bool aDetermineSide ) const
|
||||
|
||||
ecoord dist = isqrt( dist_sq );
|
||||
|
||||
return static_cast<int>( aDetermineSide ? dist : std::abs( dist ) );
|
||||
return static_cast<int>( aDetermineSide ? sgn( det ) * dist : std::abs( dist ) );
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -716,4 +716,20 @@ BOOST_AUTO_TEST_CASE( SegCreatePerpendicular )
|
||||
}
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE( LineDistance )
|
||||
{
|
||||
SEG seg( { 0, 0 }, { 10, 0 } );
|
||||
|
||||
BOOST_TEST( seg.LineDistance( { 5, 0 } ) == 0 );
|
||||
BOOST_TEST( seg.LineDistance( { 5, 8 } ) == 8 );
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE( LineDistanceSided )
|
||||
{
|
||||
SEG seg( { 0, 0 }, { 10, 0 } );
|
||||
|
||||
BOOST_TEST( seg.LineDistance( { 5, 8 }, true ) == 8 );
|
||||
BOOST_TEST( seg.LineDistance( { 5, -8 }, true ) == -8 );
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_SUITE_END()
|
||||
|
||||
Reference in New Issue
Block a user