Fact-checked by Grok 2 weeks ago

Boolean operations on polygons

Boolean operations on polygons are techniques that apply set-theoretic operations—such as , , , and (XOR)—to combine or subtract polygonal regions in the , producing new polygons that represent the resulting geometric shapes. These operations compute the boundaries of the output polygons by identifying and resolving intersections between input polygons, handling complexities like holes, self-intersections, and degenerate cases to ensure topological correctness. The core challenge in performing these operations lies in efficiently detecting all pairwise edge intersections and constructing the output boundary cycles, which may consist of multiple outer boundaries and interior holes. Algorithms typically employ sweep-line paradigms, where a vertical line scans the plane from left to right, maintaining an active status of edges sorted by y-coordinate to report intersections in O((n + k) log n) time, with n as the total number of edges and k as the number of intersections. A seminal approach is the Vatti algorithm, which uses left and right bounding chains to clip subject polygons against clip polygons, supporting arbitrary convex, concave, or self-intersecting inputs while generating output-sensitive results for union, intersection, and difference. More recent methods, such as those based on simplex theory, extend robustness to general planar polygons, including non-manifold configurations and touching edges, by subdividing edges at intersection points and using simplicial chains to model subordination without explicit level computations. These operations are foundational in numerous applications, including (CAD) for shape modeling, geographic information systems (GIS) for overlay analysis of spatial data, and for rendering clipped scenes or performing . In CAD and GIS, they enable precise manipulation of vector-based representations, while in graphics, they facilitate tasks like window clipping and hidden surface removal via trapezoidal decomposition. Despite advances, challenges persist in numerical robustness due to floating-point precision and handling near-degenerate cases, often addressed through exact arithmetic or perturbation techniques in high-precision implementations.

Fundamentals

Definition and Basic Concepts

Boolean operations on polygons refer to the application of set-theoretic operations—, , , and —to the planar regions bounded by one or more , producing a new or set of that represent the resulting geometric area. These operations treat as closed sets in the , accounting for both their boundaries and interiors to compute outcomes such as merged shapes (), overlapping regions (), subtracted areas (), or exclusive areas (). Such operations are essential in , enabling the manipulation of 2D shapes for various analytical purposes. A is defined as a closed chain of connected line segments forming a bounded in the . polygons are non-self-intersecting chains without holes, ensuring a single interior and adherence to Jordan curve properties, where the boundary divides the into exactly one interior and one exterior. In contrast, complex polygons may feature self-intersections or interior holes (bounded by additional chains), allowing representation of multiply connected regions like annular shapes. operations typically assume input polygons are simple, though extensions handle complex cases by preprocessing intersections. Key prerequisites for Boolean operations include point-in-polygon testing, which determines if a given point lies in the interior, , or exterior of a by methods such as or winding number computation, aiding in region classification. intersection detection identifies crossing points between polygon boundaries, which are critical for tracing new edges in the output without algorithmic details. These concepts originated in during the 1970s, driven by needs in and (CAD); seminal early work by Weiler in 1980 introduced graph-based approaches to polygon comparison and clipping, laying groundwork for handling set-like operations on polygonal regions. For example, consider the of two overlapping triangles sharing a partial : the operation merges their interiors into a single , eliminating the internal shared boundary while retaining the external outline as the new polygon's chain.

Types of Boolean Operations

Boolean operations on polygons encompass four primary types: , , , and . These operations treat polygons as point sets in the and compute the resulting geometry based on set-theoretic principles, assuming input polygons are —meaning they are closed, non-self-intersecting curves that divide the into an interior and exterior region. The outputs may be single polygons, polygons with holes, or multi-polygons comprising multiple disjoint components. The of two A and B, denoted A \cup B, combines their interiors while excluding duplicate coverage in overlapping areas, producing a that encompasses all points belonging to at least one of the inputs. Geometrically, this involves merging boundaries where polygons overlap, potentially creating holes if one input contains voids that are not filled by the other; for instance, the union of two partially overlapping rectangles yields a single polygon with an outline formed by the external of both, where intersecting edges are resolved by selecting the outer paths. If the rectangles touch only at a or edge without interior overlap, the union results in a multi-polygon of two disjoint components. This operation preserves the total area additively minus the overlap, and it requires simple polygons to ensure a well-defined result without degenerate features like isolated edges. The A \cap B retains only the regions where the interiors of both polygons overlap, outputting the shared area which may consist of multiple disjoint polygons. In terms of , intersecting edges split the boundaries, and the result is bounded by segments from both inputs; for two overlapping , the intersection forms a smaller (or polygon if angles differ) defined by the overlapping extents, with no holes unless the inputs introduce them through complex nesting. If the polygons touch externally without interior overlap, the intersection is empty. Inputs must be simple polygons to avoid ambiguities in overlap detection, and the operation can produce multi-polygons when overlaps are disconnected. The A \setminus B subtracts the interior of B from A, yielding points in A but not in B, which handles cases where B is partially overlapping, fully contained, or external to A. Geometrically, this splits A's boundaries at intersection points with B, removing the overlapping portion and potentially creating holes in the result if B is inside A; for example, subtracting one from another that partially overlaps produces an L-shaped from the remaining parts of the first . If B is completely outside A, the equals A; touching without overlap leaves the result unchanged. Like other operations, it demands simple inputs for validity, and outputs may include holes or multiple components. The A \Delta B, also known as the , comprises areas present in exactly one of the polygons, equivalent to (A \cup B) \setminus (A \cap B). This operation splits both polygons along their intersection boundaries, retaining non-overlapping regions; for two partially overlapping rectangles, it generates two disjoint L-shaped polygons, one from each input's exclusive area. If the polygons do not overlap but touch, the symmetric difference equals the , as a multi-polygon of both. It requires simple inputs and can output multi-polygons, often with increased boundary complexity due to edge splitting. These operations rely on topological properties, such as the , to define interiors unambiguously.

Mathematical Foundations

Polygon Representation

Polygons for Boolean operations are typically represented as ordered lists of vertices defining their boundaries, ensuring a consistent traversal that facilitates detection and . This vertex- representation assumes polygons without self-intersections initially, with vertices stored in counterclockwise order for the exterior boundary to align with geometric conventions. For example, a might be encoded as the coordinate [(0,0), (1,0), (0,1)], where the closing connects back to the first vertex implicitly, enabling efficient ray-casting or edge-crossing tests during operations like computation. To handle complex polygons with holes, representations employ nested rings: an outer boundary ring encloses one or more interior hole rings, each defined as a separate vertex list. The exterior ring is oriented counterclockwise, while interior holes are oriented clockwise, preserving the "left-hand rule" for interior determination and preventing topological ambiguities in Boolean results. Edge tables, derived from these vertex lists, store directed edges with start and end points, often augmented with pointers for adjacency, supporting sweep-line traversal in algorithms. Half-edge data structures, such as the (DCEL), extend this by representing each edge as a pair of oppositely directed half-edges, each linking to incident vertices, faces, and the next half-edge in a boundary cycle; this topology-aware format is particularly useful for constructing output polygons post-operation. Coordinate systems in polygon representations balance precision and performance, with commonly used for its computational efficiency in applications, though it risks accumulation of errors leading to degenerate cases like spurious intersections. Exact , employing rational or integer-based computations, mitigates these precision issues to ensure robust results, especially for degenerate inputs. Standardization aids interoperability; the OGC specification defines polygons via Well-Known Text (WKT) or Binary (WKB) formats, supporting 2D or 3D coordinates with explicit ring nesting. Similarly, SVG paths represent polygons through the <polygon> element's points attribute for simple cases or the <path> element's d attribute (e.g., "M x1 y1 L x2 y2 ... Z") for more flexible curves, though native support for holes requires clipping paths or multiple elements.

Topological Properties

Closed simple polygons in the plane, by the , divide the into two distinct regions: a bounded interior and an unbounded exterior. This separation is fundamental to operations, as it ensures that the boundaries of input unambiguously delineate regions for , , and , preserving the topological distinction between inside and outside during computation. For , the theorem applies directly since they are piecewise linear Jordan curves, allowing reliable classification of points and edges relative to each . The provides a precise measure for determining point inclusion in , particularly those with holes or self-intersections. Defined as the net number of times a closed winds around a given point, it quantifies the topological : a point is interior if the winding number is non-zero (typically ±1 for simple regions) and exterior if zero. For a polygon P and point q, the winding number is formally given by w(P, q) = \frac{1}{2\pi} \int_P d\theta, where \theta represents the angle subtended by the curve at q, derived conceptually from ray-casting methods that sum signed angle contributions from each edge. This integral captures the oriented traversal, enabling robust inclusion tests even for complex polygons. Boolean operations on polygons affect connectivity by altering the number of connected components and the genus, which corresponds to the number of holes in the resulting 2-manifold. For instance, the union of two disjoint simple polygons yields two connected components, while an overlapping union merges them into one; intersection typically reduces components by extracting shared regions but can increase genus if the overlap encloses voids, as in the case of two polygons whose intersection forms an annular region with one hole. An example is the intersection of two simple polygons that partially overlap to create a result with multiple boundary components, reducing the total from four (two outer plus two inner if holed) to fewer by filling or merging enclosures. These changes are analyzed in regularized Boolean combinations, ensuring the output remains a valid polygon with connected interiors. Key topological invariants are preserved under Boolean operations on polygons: orientability remains, as the plane's embedding ensures all resulting boundaries are consistently oriented without Möbius-like twists, and boundedness holds for finite input polygons, yielding compact results without unbounded extensions. In the categorical framework, Boolean operations function as morphisms between objects representing 2-manifolds with boundary, mapping input polygon pairs to output manifolds while respecting gluing along intersection curves to maintain topological integrity.

Algorithms

Sweep Line Methods

Sweep line methods for Boolean operations on polygons employ a vertical line that moves across the plane from left to right, processing events at vertices and intersections while maintaining the status of active edges in a data structure such as a balanced binary tree to ensure efficient queries and updates. This approach, rooted in the Bentley-Ottmann line segment intersection algorithm, enables the detection of all edge intersections in an output-sensitive manner and facilitates the construction of resulting polygons through trapezoidal decomposition or edge traversal. The overall time complexity is O((n + k) log n), where n is the total number of vertices and k is the number of intersections found. The Vatti algorithm, introduced in 1992, is a seminal sweep line method for performing Boolean operations on general polygons, including those with holes and self-intersections. It begins by constructing a scanbeam table from the y-coordinates of all vertices, defining horizontal strips (scanbeams) through which the sweep line advances from bottom to top. An event queue, implemented as a priority queue ordered by y-coordinate (and x for ties), processes vertex events: at each local minimum vertex, new edges are added to the active edge table (AET), a balanced tree sorted by current x-intersection with the sweep line. As the sweep line moves, it detects potential intersections between adjacent active edges by checking pairs in the AET; upon finding an intersection, the event is inserted into the queue if it lies ahead in the sweep. Trapezoidal decomposition occurs implicitly as the algorithm traverses scanbeams, classifying edges as left or right boundaries and building output trapezoids bounded by active edges and event points. For edge intersection handling, intersections are resolved by swapping the order of edges in the AET at the intersection y-coordinate, ensuring proper topological ordering; self-intersections in non-simple polygons are resolved during this sweep by treating them as standard events, preventing invalid topologies in the result. Boolean operations are achieved by labeling edges (subject or clip) and applying rules to connect segments based on winding or even-odd criteria within trapezoids—for instance, the union of two polygons can be computed by merging overlapping trapezoids from both inputs while discarding non-overlapping regions exterior to either. The Greiner-Hormann algorithm, presented in 1998, complements sweep line techniques by focusing on efficient clipping through entry and exit flag labeling, though it uses a brute-force intersection phase rather than sweeping for that step. It first computes all intersections between subject and clip polygon edges using a pairwise testing routine that parameterizes intersection points along edges with alpha values (0 to 1). Intersection points are inserted into both polygons' edge lists, splitting edges at these locations. Each intersection is then marked with entry/exit flags based on whether the subject polygon's interior is entered or exited by the clip polygon's edge, using the even-odd rule or winding number for classification. The output polygons are constructed by traversing the modified edge lists, starting from unmarked vertices or intersections, and following connected segments while respecting flags to include or exclude portions—for example, in intersection, only segments inside the clip polygon (entry to exit) are retained. This handles non-simple polygons by resolving self-intersections during the intersection phase and flag assignment. A pseudocode outline for the intersection finding and labeling phases is as follows:
function FindIntersections(subject, clip):
    intersections = []
    for each edge_s in subject.edges:
        for each edge_c in clip.edges:
            if intersect(edge_s, edge_c) at point p with alphas alpha_s, alpha_c:
                insert p into edge_s at alpha_s
                insert p into edge_c at alpha_c
                add (p, edge_s, edge_c) to intersections
    return intersections

function LabelIntersections(subject, clip, intersections):
    for each inter in intersections:
        p = inter.point
        edge_s = inter.subject_edge
        edge_c = inter.clip_edge
        # Determine if entering or exiting based on [orientation](/page/Orientation)
        if is_inside_clip(p - [epsilon](/page/Epsilon), clip):  # Test near point
            if [orientation](/page/Orientation)(clip, edge_c) == left:  # Assuming CCW polygons
                inter.flag = entry
            else:
                inter.flag = exit
        else:
            if [orientation](/page/Orientation)(clip, edge_c) == left:
                inter.flag = exit
            else:
                inter.flag = entry
Subsequent traversal uses these flags to build the result contours. For union, the labeling inverts the inside/outside tests to merge exteriors. These methods excel in handling general cases, with sweep line variants like Vatti providing logarithmic efficiency for large inputs by avoiding quadratic intersection checks.

Clipping-Based Approaches

Clipping-based approaches to Boolean operations on polygons involve treating the operations as successive clippings of one polygon against another, often by processing boundaries iteratively against clip edges. These methods are particularly suitable for hierarchical structures or specialized applications where one polygon acts as a convex or simple clip boundary, enabling modular computation of s, differences, and unions through repeated boundary traversals. The Sutherland-Hodgman algorithm, introduced in , exemplifies an early clipping-based technique. It clips a subject iteratively against each edge of a clip , processing vertices sequentially to output a new list of vertices for the next clip edge. For each clip edge, the algorithm evaluates incoming and outgoing vertices relative to the edge: retaining inside vertices, discarding outside ones, and computing intersection points for edge crossings. This produces the clipped after processing all clip edges, making it efficient for clippers but limited for ones without modifications. To address concave polygons, the Weiler-Atherton algorithm, developed in 1977, extends clipping by traversing the boundaries of both subject and clip polygons. It first identifies all intersection points between edges of the two polygons, marking them as entry or exit points relative to the clip polygon's interior. Traversal begins at a vertex outside the clip polygon, following the subject polygon's edges while switching to the clip polygon's boundary at intersection points to correctly outline the clipped region. This boundary-following approach handles concavities and holes by constructing output polygons that alternate between subject and clip edges as needed. The output of these clipping algorithms is often represented using a (DCEL), a that organizes the resulting planar subdivision. In a DCEL, half-edges link incident faces, vertices, and opposite half-edges, enabling efficient navigation of boundaries and interiors for polygons with holes or multiple components. This structure facilitates the assembly of complex results from clipping steps, such as multiple disjoint polygons or nested regions. Clipping algorithms can be adapted to Boolean operations by modifying the traversal rules based on inside/outside status: intersection is computed by clipping the subject to the interior of the clip , while difference clips the subject against the clip to retain only the exterior portions. Union is computed by traversing to include portions inside either the subject or clip , such as starting from exterior vertices and switching at intersections. These adaptations leverage the boundary traversal nature to build results incrementally. In geographic information systems (GIS), clipping-based methods prove efficient for map overlay tasks, where polygons represent spatial features like land parcels. However, they can generate up to O(n²) intersection points in the worst case for n edges per polygon, leading to quadratic complexity when handling dense overlays. For instance, computing the difference between a star-shaped polygon (subject) and a rectangular clip polygon involves clipping the star's concave arms against the rectangle's edges using Weiler-Atherton traversal, yielding a result with trimmed protrusions while preserving the star's overall topology.

Implementations and Applications

In Computer Graphics

Boolean operations on polygons play a crucial role in , particularly in 2D vector rendering and pipelines, where they enable the creation of complex shapes from simpler primitives without loss of scalability. In formats like and PDF, path operations facilitate the combination of shapes for filling and stroking by constructing compound paths with multiple subpaths, which are then rendered using fill rules such as nonzero winding or even-odd to achieve effects akin to unions, intersections, or differences. For instance, in , subpaths within a single <path> element allow designers to define overlapping or nested contours that are filled collectively, supporting scalable vector illustrations in web browsers and design tools. Similarly, PDF leverages path construction operators like m (moveto), l (lineto), and h (closepath) to build merged shapes, with painting operators such as B (fill and stroke using nonzero winding) or B* (using even-odd) applying the combined directly in document rendering. In font rendering, operations are essential for combining glyph outlines, particularly when creating ligatures—precomposed characters like "fi" that merge adjacent letter shapes—or adjusting for by unioning contours to ensure smooth optical spacing. Font perform these unions on Bézier path segments to generate composite glyphs, preserving vector precision during hinting and rasterization stages in systems like or . This process allows typefaces to adapt dynamically to text layouts, where overlapping outlines are resolved into single paths for efficient rendering in applications from web browsers to desktop software. Real-time applications in further highlight the utility of polygon Boolean operations, such as in procedural terrain generation for games, where unions and differences carve landscapes from base meshes to create varied like hills or valleys on the fly. In , merging UI elements via polygon unions reduces draw calls and optimizes ; for example, in an OpenGL-based engine, uniting the outlines of multiple buttons into a single overlay shape streamlines rendering by treating the result as one filled path, enhancing performance in interactive scenes. The language, introduced in the , pioneered such capabilities with path operators like eofill for the even-odd fill , which simulates Boolean effects by selectively filling regions based on path intersections, influencing modern graphics standards. Following operations, integration with rasterization ensures high-quality output by converting the resulting vector paths to pixels while applying techniques to mitigate jagged edges. This vector-to-raster step typically occurs post-operation in the rendering , using methods like sub-pixel sampling or analytical coverage computation to smooth boundaries, as seen in GPU-accelerated pipelines where the combined is scan-converted with flatness tolerances for curve approximation. Algorithms such as Greiner-Hormann may be employed briefly in these contexts to compute the unioned paths before rasterization.

In CAD and GIS Systems

In computer-aided design (CAD) systems, Boolean operations on polygons extend the principles of Constructive Solid Geometry (CSG) from three-dimensional solids to two-dimensional profiles, enabling the assembly of complex parts by combining or subtracting polygonal regions. For instance, in AutoCAD, users first convert closed polylines into regions using the REGION command, then apply Boolean operations such as subtraction to create features like holes in structural components. This approach supports precise engineering design, where subtracting a circular polygon from a rectangular base simulates drilling operations without manual trimming. Early foundations for interactive polygon manipulation appeared in pioneering CAD systems like in 1963, which introduced graphical editing concepts, though full operations were formalized in the early 1990s with tools such as Bentley , which integrated 2D operations for drafting and design file management starting with version 5 in 1993. In geographic information systems (GIS), operations underpin overlay analysis, where polygons representing categories are intersected or unioned to generate maps of combined attributes, such as identifying agricultural zones overlapping expansion areas. Similarly, computing intersections of administrative boundary polygons facilitates the delineation of shared jurisdictions, essential for policy planning and resource allocation. Specialized libraries enhance robustness in both CAD and GIS applications through support for exact predicates, which ensure accurate geometric computations without floating-point errors. The library provides 2D regularized Boolean set-operations on polygons bounded by curves, incorporating exact predicates via kernel types like Exact_predicates_inexact_constructions_kernel for reliable intersection detection. Likewise, the GEOS library, a core component of many GIS tools, implements operations such as and on polygons with robust spatial predicates derived from high-precision arithmetic, enabling consistent results in overlay tasks. Scalability for large datasets is achieved through spatial indexing structures, such as R-trees or quadtrees, which accelerate operations by pruning unnecessary pairwise comparisons in CAD and GIS workflows involving thousands of features. For example, in , the Difference tool performs a on layers to compute zones, such as excluding high-elevation contour-derived areas from lowland basins to isolate inundation risks. This method integrates with models to produce actionable maps for disaster management.

Challenges and Limitations

Handling Degeneracies

Boolean operations on polygons frequently encounter degeneracies, which are geometric configurations that violate the general position assumptions underlying most algorithms, such as collinear edges, touching vertices, zero-area polygons, or infinite intersections along overlapping segments. These issues can lead to incorrect topology, such as flipped orientations or spurious components, if not addressed properly. Early algorithms for polygon Boolean operations, developed before the , often failed to handle these degeneracies robustly, resulting in artifacts like thin "sliver" polygons that represented numerical errors rather than intended . For instance, methods like Sutherland-Hodgman clipping from 1974 and Weiler-Atherton from 1977 assumed non-degenerate inputs and produced unreliable outputs in degenerate cases, prompting the development of more resilient approaches in subsequent decades. To achieve robustness, exact arithmetic techniques employ rational numbers or to perform computations without floating-point errors, ensuring precise evaluation of geometric predicates like tests. Libraries such as implement these through kernels that use , allowing Boolean operations to maintain topological correctness even with degenerate inputs. Perturbation methods address degeneracies by applying small shifts to input vertices, moving them to positions where standard algorithms apply without special cases; this "simulation of simplicity" avoids explicit handling of rare configurations while preserving the expected . Following , snap rounding simplifies the output by snapping intersection points to a discrete , reducing numerical noise and ensuring non-degenerate edges without introducing new overlaps. Robustness libraries like GMP, integrated into geometric software, handle predicates such as orientation tests exactly using multi-precision integers and rationals, preventing topology flips that arise from inexact computations in degenerate scenarios. A common example is resolving a T-junction during a operation, where an edge endpoint from one lies exactly on the interior of an edge from another; exact predicates detect this without perturbation, and the algorithm splits the host edge at the contact point to correctly merge the boundaries without creating extraneous vertices or gaps.

Computational Complexity

The of Boolean operations on polygons is measured relative to the input size, defined as n, the total number of vertices across the two input polygons A and B. These operations fundamentally rely on detecting and processing intersections between , which forms the basis for constructing the output polygon(s). Standard algorithms employ data structures like doubly connected edge lists (DCEL) to represent intermediate topological information, requiring O(n + k) space, where k is the size of the output, including intersection points and resulting vertices. Most practical algorithms for operations, such as sweep line methods, exhibit output-sensitive of O((n + k) \log n), where k accounts for the number of edge intersections and output vertices. This bound arises from efficiently reporting all pairwise edge intersections using techniques like the Bentley-Ottmann sweep line, which handles intersections in O((n + i) \log n) time, with i being the number of intersections, before tracing the resulting to form the output. In the worst case, however, k can reach \Theta(n^2), as demonstrated by configurations like two interlocking "combs" with alternating teeth, where nearly every edge of one intersects every edge of the other, leading to a quadratic number of intersection points and overall of O(n^2 \log n). Theoretical advancements include Chazelle and Edelsbrunner's optimal algorithm from the early 1990s, which computes the arrangement of line segments—and by extension, supports Boolean operations on polygons—in O(n \log n + k) time, improving on prior bounds by achieving near-linearity in the output size. Despite its optimality, the algorithm is highly impractical for implementation due to enormous constant factors and intricate data structures, making it unsuitable for real-world use. For scenarios involving repeated Boolean operations, optimizations via hierarchical decompositions, such as (BSP) trees, can preprocess polygons in O(n \log n) time, enabling subsequent operations in linear time relative to the tree sizes, which is particularly beneficial in applications. A core primitive underlying these complexities is the orientation test for determining if three points p_1(x_1, y_1), p_2(x_2, y_2), and p_3(x_3, y_3) are collinear, clockwise, or counterclockwise, computed via the sign of the cross product: \begin{vmatrix} x_2 - x_1 & y_2 - y_1 \\ x_3 - x_1 & y_3 - y_1 \end{vmatrix} = (x_2 - x_1)(y_3 - y_1) - (y_2 - y_1)(x_3 - x_1) A value of zero indicates collinearity, which is crucial for detecting proper intersections during edge tests; this predicate runs in constant time and is invoked O(n^2) times in naive approaches but far fewer in optimized sweep line variants.

References

  1. [1]
    A generic solution to polygon clipping | Communications of the ACM
    A generic solution to polygon clipping. Author: Bala R. Vatti. Bala R. Vatti Lockheed Commercial Electronics Co., Hudson, NH.
  2. [2]
  3. [3]
    Boolean Operations in 2D - Stanford Computer Graphics Laboratory
    Boolean operations on polygons are therefore not limited to operations on the boundary of the objects. The functions described in this chapter allow to perform ...
  4. [4]
    [PDF] Chapter 4 Polygons
    Polygons. Geometry: C&A 2021 of what we call a simple polygon, defined below. Definition 4.1. A simple polygon is a compact region P ⊂ R2 that is bounded by a ...
  5. [5]
    [PDF] 1 Simple Polygons
    We can regard any polygon as a closed curve in the plane. Every simple polygon has at least three vertices. 1Historically, the definition of “simple closed ...
  6. [6]
    A reliable test for inclusion of a point in a polygon - ACM Digital Library
    This paper takes a careful look at a well-known implementation of an algorithm that tests a point in the plane for inclusion in a given polygon.
  7. [7]
    CGAL 6.1 - 2D Regularized Boolean Set-Operations: User Manual
    These operations accept as input, and may result as output, polygons with holes. A polygon with holes represents a point set that may be bounded or unbounded.A Simple Example · Operations on Polygons with... · A Sequence of Set Operations
  8. [8]
    Colored DCEL for Boolean Operations in 2D - ResearchGate
    In this paper, new algorithms and their implementation solving these problems are presented. Assuming that line segment intersection is done already, the common ...Abstract And Figures · References (14) · Recommended Publications
  9. [9]
    CGAL 6.1 - 2D Regularized Boolean Set-Operations
    The halfedges are ordered in pairs sometimes referred to as twins, such that each halfedge pair represent an edge. A model of the GeneralPolygonSetDcel simply ...
  10. [10]
    Basic Shapes — SVG 2
    The basic shapes in SVG are: circle, ellipse, line, path, polygon, polyline, and rect.
  11. [11]
    [PDF] A Winding Number and Point-in-Polygon Algorithm
    Since the point-in-polygon test is invariant under horizontal and vertical translation, the geometry may be translated so that the point x is at the origin.
  12. [12]
    [PDF] Topological
    We discuss representations of polygons and algorithms that test points against polygons or compute regularized. Boolean combinations or contacts between ...
  13. [13]
    A generic solution to polygon clipping
    The solution clips a subject polygon against a clip polygon, using left and right bounds. It handles convex, concave, and self-intersecting polygons, and is ...
  14. [14]
    A new algorithm for computing Boolean operations on polygons
    This paper presents a new algorithm for computing Boolean operations on polygons. These kind of operations are frequently used in the geosciences.
  15. [15]
    Efficient clipping of arbitrary polygons - ACM Digital Library
    In this paper we present an algorithm for clipping arbitrary polygons that is conceptually simple, for example, the data structure for the polygons we use ...
  16. [16]
    Reentrant polygon clipping | Communications of the ACM
    This paper presents a new 2D polygon clipping method, based on an extension to the Sutherland-Cohen 2D line clipping method. After discussing three basic ...Missing: original | Show results with:original
  17. [17]
    Hidden surface removal using polygon area sorting
    An algorithm for polygon clipping, and for determining polygon intersections and unions. This paper introduces a universal algorithm for polygon clipping ...
  18. [18]
    [PDF] Polygon Clipping and Filling - Department of Computer Science
    Weiler-Atherton Algorithm: Union. • Find a vertex of A outside of B. • Traverse linked list. • At each intersection point switch to other polygon. • Do until ...
  19. [19]
    [PDF] An Efficient Map Overlay Algorithm Based on Spatial Access ... - IAPG
    The basic building block for analysis operations in GIS is the operation map overlay. However, available map overlay algorithms suffer from poor performance. In ...
  20. [20]
    Paths — SVG 2
    Paths represent the geometry of the outline of an object, defined in terms of moveto (set a new current point), lineto (draw a straight line), curveto (draw a ...
  21. [21]
    PDF Reference, version 1.6 - Adobe Open Source
    Adobe publishes the PDF specification in order to encourage the development of such third-party applications. The emergence of PDF as a standard for ...
  22. [22]
    Merge Overlapping Polygons - OpenGL - Khronos Forums
    Jul 7, 2004 · I am trying to merge overlapping polygons into a single polygon to be rendered as a GL_LINE_LOOP, so really an outline of the merged ...Polygon Merge Algorithm - OpenGLRendering UI Elements - OpenGL: Basic CodingMore results from community.khronos.orgMissing: UI element unions graphics engines
  23. [23]
    [PDF] PostScript Language Reference, third edition - Adobe
    All instances of the name PostScript in the text are references to the PostScript language as defined by Adobe. Systems Incorporated unless otherwise stated.
  24. [24]
    Rasterization: a Practical Implementation - Scratchapixel
    The solution in rendering is called anti-aliasing (AA). Instead of rendering just one sample per pixel, we divide the pixel into sub-pixels and perform the ...
  25. [25]
    [PDF] Wavelet Rasterization
    Abstract. We present a method for analytically calculating an anti-aliased rasterization of arbitrary polygons or fonts bounded by Bézier curves in 2D as ...
  26. [26]
    Boolean operations on 2D polylines. - CAD Forum
    Oct 18, 2014 · A AutoCAD offers standard commands for boolean operations (union, subtract, intersection) primarly for 3D solids. But you can use this type of operations also ...
  27. [27]
    AutoCAD LT 2025 Help | SUBTRACT (Command) | Autodesk
    With SUBTRACT, you can create a 2D region object by subtracting one set of existing region objects from another, overlapping set.
  28. [28]
    A closer look at the AutoCAD Region command - Design & Motion
    Aug 1, 2016 · Using the subtract command you can remove an overlapping part of one region from another. To use this command type SUBTRACT at the command line ...
  29. [29]
  30. [30]
    History of MicroStation - Communities
    May 7, 2024 · The first MicroStation with the ability to write to .DGN design files was introduced early in 1987. It was able to place most graphic primitives and cells.Boolean operator - Limitations in solid modellingMicroStation Forum - Simple Boolean Solid ModellingMore results from bentleysystems.service-now.com
  31. [31]
    24. SPATIAL ANALYSIS (2): Overlay Operations & Analysis in GIS
    It is the Boolean operation that uses OR. Therefore the output map corresponds to the area extent of input layer or analysis layer or both. UNOIN requires both ...
  32. [32]
    Understanding overlay analysis—ArcGIS Pro | Documentation
    Overlay analysis allows you to perform an analysis of multiple inputs that contain a variety of ranges.
  33. [33]
    JTS | FAQ
    Sep 8, 2020 · Specifically, JTS computes spatial predicates (including intersects ) using high-precision arithemtic. This determines the exact spatial ...
  34. [34]
    Data Structures for Parallel Spatial Algorithms on Large Datasets ...
    This paper describes data structures and algorithms for efficient implementation of GIS operations for large datasets on multicore Intel CPUs and on NVIDA GPUs.
  35. [35]
    Model how land subsidence affects flooding - Learn ArcGIS
    Use spatial analyst tools in ArcGIS Pro to analyze the before and after impacts of land subsidence on flooding.
  36. [36]
    [PDF] Guidance for Flood Risk Analysis and Mapping - FEMA
    Feb 1, 2018 · Cross-Section Elevation Differences. 14 ... created by subtracting the ground elevation from the WSEL grid would produce artificially-high.<|control11|><|separator|>
  37. [37]
  38. [38]
    [PDF] A Technique to Cope with Degenerate Cases in Geometric Algorithms
    One of the goals of SoS is to perturb a set of objects such that all degeneracies disappear. A degeneracy is something that is not defined in general; its ...
  39. [39]
    A new algorithm for computing Boolean operations on polygons
    In this paper we have proposed a new algorithm for computing Boolean operations on polygons. The algorithm is based on the classical plane sweep technique for ...
  40. [40]
    CGAL 6.1 - 2D and 3D Linear Geometry Kernel: User Manual
    Predicates are at the heart of a geometry kernel. They are basic units for the composition of geometric algorithms and encapsulate decisions. Hence their ...
  41. [41]
    The GNU MP Bignum Library
    GMP is a free library for arbitrary precision arithmetic, operating on signed integers, rational numbers, and floating-point numbers, designed to be fast.GMP manual · GMP Repository Usage · GMP developers' corner
  42. [42]
    [PDF] Efficient clipping of arbitrary polygons
    The algorithm can handle arbitrary closed polygons, specifically where the clip and subject polygons may self-intersect. The algorithm is simple and faster than ...
  43. [43]
    Scalable Overlay Operations over DCEL Polygon Layers
    The Doubly Connected Edge List (DCEL) is an edge-list structure that has been widely utilized in spatial applications for planar topological computations.
  44. [44]
    [PDF] Improved Binary Space Partition Merging ?
    Oct 31, 2008 · In this paper, we give a simple method for computing boolean set operations using Binary. Space Partition (BSP) trees. A key improvement within ...
  45. [45]
    [PDF] CMSC 754: Lecture 4 Line Segment Intersection
    First observe that it is possible to determine whether these line segments intersect, simply by applying an appropriate combination of orientation tests. (We ...