void minkowskiSum( const LineString& gA, const Polygon_2& gB, Polygon_set_2& polygonSet ) { if ( gA.isEmpty() ) { return ; } int npt = gA.numPoints() ; for ( int i = 0; i < npt - 1 ; i++ ) { Polygon_2 P; P.push_back( gA.pointN( i ).toPoint_2() ); P.push_back( gA.pointN( i+1 ).toPoint_2() ); // // We want to compute the "minkowski sum" on each segment of the line string // This is not very well defined. But it appears CGAL supports it. // However we must use the explicit "full convolution" method for that particular case in CGAL >= 4.7 #if CGAL_VERSION_NR < 1040701000 // version 4.7 Polygon_with_holes_2 part = minkowski_sum_2( P, gB ); #else Polygon_with_holes_2 part = minkowski_sum_by_full_convolution_2( P, gB ); #endif // merge into a polygon set if ( polygonSet.is_empty() ) { polygonSet.insert( part ); } else { polygonSet.join( part ); } } }
LineString::LineString( const LineString& other ): Geometry() { for ( size_t i = 0; i < other.numPoints(); i++ ) { _points.push_back( other.pointN( i ).clone() ) ; } }
void ForceValidityVisitor::visit( LineString& g ) { g.forceValidityFlag( valid_ ); for ( size_t i = 0; i < g.numPoints(); i++ ) { visit( g.pointN( i ) ); } }
void WktWriter::writeInner( const LineString & g ) { _s << "("; for ( size_t i = 0; i < g.numPoints(); i++ ){ if ( i != 0 ) _s << ","; write( g.pointN(i).coordinates() ); } _s << ")"; }
void minkowskiSum( const LineString& gA, const Polygon_2 & gB, Polygon_set_2 & polygonSet ){ if ( gA.isEmpty() ){ return ; } int npt = gA.numPoints() ; for ( int i = 0; i < npt - 1 ; i++ ){ Polygon_2 P; P.push_back( gA.pointN(i).toPoint_2() ); P.push_back( gA.pointN(i+1).toPoint_2() ); Polygon_with_holes_2 part = minkowski_sum_2( P, gB ); // merge into a polygon set if ( polygonSet.is_empty() ){ polygonSet.insert( part ); }else{ polygonSet.join( part ); } } }
void GetPointsVisitor::visit( const LineString& g ) { for ( size_t i = 0; i < g.numPoints(); i++ ) { visit( g.pointN( i ) ); } }
void AffineTransform3::transform( LineString& ls ) { for ( size_t i = 0; i < ls.numPoints(); ++i ) { transform( ls.pointN( i ) ); } }