bool isPointInside(const Vec2f &point, const vector<Vec2f> &polygon)
 {
     const size_t size = polygon.size();
     
     if (size <= 2)
     {
         return false;
     }
     else
     {
         size_t crossings = 0;
         
         for (size_t s = 0; s < size - 1; ++s)
         {
             crossings += linearCrossings(&(polygon[s]), point);
         }
         
         Vec2f temp[2];
         temp[0] = polygon[size - 1];
         temp[1] = polygon[0];
         crossings += linearCrossings(&(temp[0]), point);
         
         return (crossings & 1) == 1;
     }
 }
Esempio n. 2
0
bool PolyLineT<T>::contains( const vec2 &pt ) const
{
	if( mPoints.size() <= 2 )
		return false;

	size_t crossings = 0;
	for( size_t s = 0; s < mPoints.size() - 1; ++s ) {
		crossings += linearCrossings( &(mPoints[s]), pt );
	}

	T temp[2];
	temp[0] = mPoints[mPoints.size()-1];
	temp[1] = mPoints[0];
	crossings += linearCrossings( &(temp[0]), pt );
	
	return (crossings & 1) == 1;
}