If true, then detect all pairs of crossing edges and eliminate them by
adding a new vertex at their intersection point.
When this option is true, the effective snap_radius() for edges is
increased by S2::kIntersectionError to take into account the
additional error when computing intersection points. In other words,
edges may move by up to snap_radius() + S2::kIntersectionError.
Undirected edges should always be used when the output is a polygon,
since splitting a directed loop at a self-intersection converts it into
two loops that don't define a consistent interior according to the
"interior is on the left" rule. (On the other hand, it is fine to use
directed edges when defining a polygon *mesh* because in that case the
input consists of sibling edge pairs.)
Self-intersections can also arise when importing data from a 2D
projection. You can minimize this problem by subdividing the input
edges so that the S2 edges (which are geodesics) stay close to the
original projected edges (which are curves on the sphere). This can
be done using s2builderutil::EdgeSplitter(), for example.
If true, then detect all pairs of crossing edges and eliminate them by adding a new vertex at their intersection point.
When this option is true, the effective snap_radius() for edges is increased by S2::kIntersectionError to take into account the additional error when computing intersection points. In other words, edges may move by up to snap_radius() + S2::kIntersectionError.
Undirected edges should always be used when the output is a polygon, since splitting a directed loop at a self-intersection converts it into two loops that don't define a consistent interior according to the "interior is on the left" rule. (On the other hand, it is fine to use directed edges when defining a polygon *mesh* because in that case the input consists of sibling edge pairs.)
Self-intersections can also arise when importing data from a 2D projection. You can minimize this problem by subdividing the input edges so that the S2 edges (which are geodesics) stay close to the original projected edges (which are curves on the sphere). This can be done using s2builderutil::EdgeSplitter(), for example.
DEFAULT: false