geometry: get rid of useless vertex references in SEG class
This commit is contained in:
parent
5bf50ee910
commit
5a51d11b78
|
@ -46,17 +46,14 @@ public:
|
||||||
* to an object the segment belongs to (e.g. a line chain) or references to locally stored
|
* to an object the segment belongs to (e.g. a line chain) or references to locally stored
|
||||||
* points (m_a, m_b).
|
* points (m_a, m_b).
|
||||||
*/
|
*/
|
||||||
VECTOR2I& A;
|
VECTOR2I A;
|
||||||
VECTOR2I& B;
|
VECTOR2I B;
|
||||||
|
|
||||||
/** Default constructor
|
/** Default constructor
|
||||||
* Creates an empty (0, 0) segment, locally-referenced
|
* Creates an empty (0, 0) segment, locally-referenced
|
||||||
*/
|
*/
|
||||||
SEG() : A( m_a ), B( m_b )
|
SEG()
|
||||||
{
|
{
|
||||||
A = m_a;
|
|
||||||
B = m_b;
|
|
||||||
m_is_local = true;
|
|
||||||
m_index = -1;
|
m_index = -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -64,13 +61,10 @@ public:
|
||||||
* Constructor
|
* Constructor
|
||||||
* Creates a segment between (aX1, aY1) and (aX2, aY2), locally referenced
|
* Creates a segment between (aX1, aY1) and (aX2, aY2), locally referenced
|
||||||
*/
|
*/
|
||||||
SEG( int aX1, int aY1, int aX2, int aY2 ) : A( m_a ), B( m_b )
|
SEG( int aX1, int aY1, int aX2, int aY2 ) :
|
||||||
|
A ( VECTOR2I( aX1, aY1 ) ),
|
||||||
|
B ( VECTOR2I( aX2, aY2 ) )
|
||||||
{
|
{
|
||||||
m_a = VECTOR2I( aX1, aY1 );
|
|
||||||
m_b = VECTOR2I( aX2, aY2 );
|
|
||||||
A = m_a;
|
|
||||||
B = m_b;
|
|
||||||
m_is_local = true;
|
|
||||||
m_index = -1;
|
m_index = -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -78,11 +72,8 @@ public:
|
||||||
* Constructor
|
* Constructor
|
||||||
* Creates a segment between (aA) and (aB), locally referenced
|
* Creates a segment between (aA) and (aB), locally referenced
|
||||||
*/
|
*/
|
||||||
SEG( const VECTOR2I& aA, const VECTOR2I& aB ) : A( m_a ), B( m_b ), m_a( aA ), m_b( aB )
|
SEG( const VECTOR2I& aA, const VECTOR2I& aB ) : A( aA ), B( aB )
|
||||||
{
|
{
|
||||||
A = m_a;
|
|
||||||
B = m_b;
|
|
||||||
m_is_local = true;
|
|
||||||
m_index = -1;
|
m_index = -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -93,44 +84,24 @@ public:
|
||||||
* @param aB reference to the end point in the parent shape
|
* @param aB reference to the end point in the parent shape
|
||||||
* @param aIndex index of the segment within the parent shape
|
* @param aIndex index of the segment within the parent shape
|
||||||
*/
|
*/
|
||||||
SEG ( VECTOR2I& aA, VECTOR2I& aB, int aIndex ) : A( aA ), B( aB )
|
SEG ( const VECTOR2I& aA, const VECTOR2I& aB, int aIndex ) : A( aA ), B( aB )
|
||||||
{
|
{
|
||||||
m_is_local = false;
|
|
||||||
m_index = aIndex;
|
m_index = aIndex;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Copy constructor
|
* Copy constructor
|
||||||
*/
|
*/
|
||||||
SEG ( const SEG& aSeg ) : A( m_a ), B( m_b )
|
SEG ( const SEG& aSeg ) : A( aSeg.A ), B( aSeg.B ), m_index ( aSeg.m_index )
|
||||||
{
|
{
|
||||||
if( aSeg.m_is_local )
|
|
||||||
{
|
|
||||||
m_a = aSeg.m_a;
|
|
||||||
m_b = aSeg.m_b;
|
|
||||||
A = m_a;
|
|
||||||
B = m_b;
|
|
||||||
m_is_local = true;
|
|
||||||
m_index = -1;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
A = aSeg.A;
|
|
||||||
B = aSeg.B;
|
|
||||||
m_index = aSeg.m_index;
|
|
||||||
m_is_local = false;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
SEG& operator=( const SEG& aSeg )
|
SEG& operator=( const SEG& aSeg )
|
||||||
{
|
{
|
||||||
A = aSeg.A;
|
A = aSeg.A;
|
||||||
B = aSeg.B;
|
B = aSeg.B;
|
||||||
m_a = aSeg.m_a;
|
|
||||||
m_b = aSeg.m_b;
|
|
||||||
m_index = aSeg.m_index;
|
m_index = aSeg.m_index;
|
||||||
m_is_local = aSeg.m_is_local;
|
|
||||||
|
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -289,14 +260,8 @@ public:
|
||||||
private:
|
private:
|
||||||
bool ccw( const VECTOR2I& aA, const VECTOR2I& aB, const VECTOR2I &aC ) const;
|
bool ccw( const VECTOR2I& aA, const VECTOR2I& aB, const VECTOR2I &aC ) const;
|
||||||
|
|
||||||
///> locally stored start/end coordinates (used when m_is_local == true)
|
|
||||||
VECTOR2I m_a, m_b;
|
|
||||||
|
|
||||||
///> index withing the parent shape (used when m_is_local == false)
|
///> index withing the parent shape (used when m_is_local == false)
|
||||||
int m_index;
|
int m_index;
|
||||||
|
|
||||||
///> locality flag
|
|
||||||
bool m_is_local;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -344,8 +309,7 @@ inline const VECTOR2I SEG::NearestPoint( const VECTOR2I& aP ) const
|
||||||
|
|
||||||
inline std::ostream& operator<<( std::ostream& aStream, const SEG& aSeg )
|
inline std::ostream& operator<<( std::ostream& aStream, const SEG& aSeg )
|
||||||
{
|
{
|
||||||
if( aSeg.m_is_local )
|
aStream << "[ " << aSeg.A << " - " << aSeg.B << " ]";
|
||||||
aStream << "[ local " << aSeg.A << " - " << aSeg.B << " ]";
|
|
||||||
|
|
||||||
return aStream;
|
return aStream;
|
||||||
}
|
}
|
||||||
|
|
|
@ -445,7 +445,7 @@ public:
|
||||||
|
|
||||||
struct compareOriginDistance
|
struct compareOriginDistance
|
||||||
{
|
{
|
||||||
compareOriginDistance( VECTOR2I& aOrigin ):
|
compareOriginDistance( const VECTOR2I& aOrigin ):
|
||||||
m_origin( aOrigin )
|
m_origin( aOrigin )
|
||||||
{}
|
{}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue