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; } }
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; }