Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <s2/s2latlng.h>
- #include <vector>
- #include <s2/s2polyline.h>
- #include <s2/s2builderutil_snap_functions.h>
- #include <s2/s2builderutil_s2polyline_layer.h>
- #include <s2/s2loop.h>
- int main(int argc, char **argv) {
- std::vector<S2LatLng> latlngs;
- latlngs.emplace_back(S2LatLng::FromRadians(1, -1));
- latlngs.emplace_back(S2LatLng::FromRadians(1, 1));
- latlngs.emplace_back(S2LatLng::FromRadians(-1, -1));
- latlngs.emplace_back(S2LatLng::FromRadians(-1, 1));
- latlngs.emplace_back(S2LatLng::FromRadians(1, -1));
- S2Polyline inPolyline(latlngs);
- S2Polyline outPolyline;
- s2builderutil::IntLatLngSnapFunction snap(2);
- snap.set_snap_radius(S1Angle::Radians(0.01));
- S2Builder::Options options(snap);
- options.set_split_crossing_edges(true);
- options.set_simplify_edge_chains(true);
- options.set_idempotent(false);
- S2Builder builder(options);
- builder.StartLayer(absl::make_unique<s2builderutil::S2PolylineLayer>(&outPolyline));
- builder.AddPolyline(inPolyline);
- S2Error error;
- S2_CHECK(builder.Build(&error)) << error;
- std::vector<S2Point> correctedContour;
- for (int i=0; i<outPolyline.num_vertices()-1; i++)
- correctedContour.emplace_back(outPolyline.vertex(i));
- S2Loop loop(correctedContour);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement