A collection of definitions and algorithms for working with 2- and 3- dimensional geometries in Swift.
(README.md is still in construction.)
N-dimensional | |||
---|---|---|---|
Primitive | Illustration | Geometria type | Remarks |
Axis-aligned bounding-box | AABB.swift | Defined as two point vectors describing the minimal and maximal coordinates contained within the AABB. | |
Ray (unit vector direction) | DirectionalRay.swift |
Defined as a starting point vector and a unit vector describing the direction of the ray.
Conceptually it extends to infinity in only one of its two ends (pointed to by its direction unit vector). |
|
N-dimensional Ellipsoid | Ellipsoid.swift | Defined as a center point vector and an axis vector. | |
Hyperplane | Hyperplane.swift | Defined as a point vector on the plane and a unit vector orthogonal to the hyperplane's surface. Defines a split between two half-spaces of the space it is contained within. Is considered a convex, volumetric space that can be intersected against lines and contain points. | |
Line | Line.swift | Defined as a pair of point vectors on the line. Conceptually it extends to infinity at both ends. | |
Line segment | LineSegment.swift | Defined as start and end point vectors on the line. Conceptually it is contained only within the limits of start <-> end. | |
N-dimensional capsule | NCapsule.swift |
Defined as a line segment containing two point vectors describing the span of the capsule's body, and a scalar
radius that defines the maximal distance to the line segment points must be to be considered as contained within the capsule.
Specializes as a Stadium in 2D and Capsule in 3D. |
|
Hyperrectangle | NRectangle.swift | Defined as an origin (top-left in two dimensions) point vector and an N-dimensional size vector. | |
N-sphere | NSphere.swift | Defined as a center point vector and a scalar radius. | |
N-dimensional cube (Hypercube) | NSquare.swift |
Generalized for any dimension.
Defined as an origin point (top-left in two dimensions) and a scalar value that describes the span of the cube, in each dimension. Forms a square in 2D, and a cube in 3D. |
|
Plane | PointNormalPlane.swift | Defined as a point vector on the plane and a unit vector orthogonal to the plane's surface. | |
Ray (two-point) | Ray.swift |
Defined as a pair of points start and b describing the two points the ray crosses before projecting to infinity.
Similar in definition to a line and line segment, but extends in one direction to infinity. |
|
Triangle | Triangle.swift | Defined as a set of three point vectors. |
An extra library dependency exported called GeometriaClipping
can be used to generate boolean geometry from input geometries composed of line and circular arc simplexes.
The operations supported are the following:
2-dimensional | ||
---|---|---|
Operation | Illustration | GeometriaClipping type |
Union | Union2Parametric.swift | |
Intersection | Intersection2Parametric.swift | |
Subtraction | Subtraction2Parametric.swift | |
Exclusive disjunction or Symmetric Difference | ExclusiveDisjunction2Parametric.swift |