This library implements objects for 2D geometry, like points, lines, line segments, arcs, curves and so on, as well as algorithms for these objects, like line-line intersections and arc approximation by Bézier curves.
Copyright (C) 2018-2023 Thomas Leitner [email protected], licensed under the MIT - see the LICENSE file.
- Objects
- Point
- Segment
- Polygon
- PolygonSet
- Rectangle
- Polyline (TODO)
- Rectangle (TODO)
- QuadraticCurve (TODO)
- QubicCurve (TODO)
- Arc (TODO)
- Circle (TODO)
- Path (TODO)
- Algorithms
- Segment-Segment Intersection
- Boolean Operations on PolygonSets
require 'geom2d'
# Point, can also be interpreted as vector
point1 = Geom2D::Point(2, 2)
point2 = Geom2D::Point([2, 2]) # arrays are fine but not as efficient
point3 = Geom2D::Point(point2) # copy constructor
# Segment defined by two points or a point and a vector
line1 = Geom2D::Segment(point1, point2)
line2 = Geom2D::Segment(point1, vector: point2)
line3 = Geom2D::Segment([3, 4], [9, 6]) # arrays are also possible
# Segment intersection
line1.intersect(line3) # => intersection_point