# CartesianGeometry

Points, Vectors, Planes, and Transformations for x,y,z geometry.

• Fundamental cartesian geometry objects:
• Point2d, Point3d -- points with x,y,z coordinates
• Vector2d, Vector3d -- vectors with x,y,z coordinates
• Matrix3d -- 3x3 matrix
• commonly used for pure rotations
• scale and skew entries are also allowed.
• Transform -- an origin and axes.
• Range1d, Range2d, Range3d -- subsets of 1d, 2d, and 3d space bounded by low and high values.
• Ray3d -- a ray defined by origin and direction vector
• Plane3d -- an abstract base class extended by Plane3dByOriginAndNormal, Plane3dByOriginAndUnitNormal, Point4d, and ClipPlane
• Plane3dByOriginAndUnitNormal -- a plane defined by an origin and a single vector which is perpendicular to the plane
• plane3dByOriginAndVectors -- a plane defined by an origin and two vectors in the plane.
• Angles
• Angle -- a strongly typed angle object whose method names make it clear whether input and outputs are degrees or radians.
• AngleSweep -- an angular interval
• LatitudeLongitudeNumber -- carrier for position and altitude on sphere or ellipsoid
• YawPitchAndRollAngles -- 3 angles that define a rotated coordinate system.
• Utility classes
• FrameBuilder -- construction of coordinate frames from mixed data sources.
• ClipPlane -- a single plane
• ConvexClipPlaneSet -- an array of planes bounding a convex volume
• ClipPlaneSet -- an array of ConvexClipPlaneSet, defining the union of their volumes
• BilinearPatch -- twisted quadrilateral defined by 4 points
• BarycentricTriangle -- triangle defined by 3 points.
• Constant -- various numeric values exported as readonly constants

## Classes

Name Description
AlternatingCCTreeBuilder Context structure for building an AlternatingConvexClipTreeNode from a polygon.
AlternatingCCTreeNode An AlternatingConvexClipTreeNode is a node in a tree structure in which
AlternatingCCTreeNodeCurveClipper
Angle An `Angle` carries the numeric value of an angle, with methods to allow (require!) callers to
AngleSweep An `AngleSweep` is a pair of angles at start and end of an interval.
BarycentricTriangle 3 points defining a triangle to be evaluated with barycentric coordinates.
BooleanClipFactory A BooleanClipFactory is a factory to create objects that implement interior nodes of a tree of boolean clip operations.
ClipPlane A ClipPlane is a single plane represented as
ClipPrimitive * ClipPrimitive is a base class for clipping implementations that use
ClipShape A clipping volume defined by a shape (an array of 3d points using only x and y dimensions).
ClipUtilities Class whose various static methods are functions for clipping geometry
ClipVector Class holding an array structure of shapes defined by `ClipPrimitive`
ConvexClipPlaneSet A ConvexClipPlaneSet is a collection of ClipPlanes, often used for bounding regions of space.
Ellipsoid * An Ellipsoid is a (complete) unit sphere with an arbitrary (possibly skewed) `Transform` to 3d.
EllipsoidPatch * An `EllipsoidPatch` is
FrameBuilder Helper class to accumulate points and vectors until there is enough data to define a coordinate system.
GeodesicPathPoint Detailed data for a point on a 2-angle parameter space.
GeodesicPathSolver Algorithm implementation class for computing approximate optimal (shortest) path points.
Geometry Class containing static methods for typical numeric operations.
IndexedXYZCollectionPolygonOps `IndexedXYZCollectionPolygonOps` class contains static methods for typical operations on polygons carried as `IndexedXYZCollection`
LongitudeLatitudeNumber An `AngleAngleNumber` is a pair of angles (named `longitude` and `latitude`) and an additional number.
Matrix3d A Matrix3d is a 3x3 matrix.
NumberArray The `NumberArray` class contains static methods that act on arrays of numbers.
Plane3d Plane3d is the abstract base class for multiple 3d plane representations:
Plane3dByOriginAndUnitNormal A plane defined by
Plane3dByOriginAndVectors A Plane3dByOriginAndVectors is an origin and a pair of vectors.
Point2d 2D point with `x`,`y` as properties
Point2dArray The `Point2dArray` class contains static methods that act on arrays of 2d points.
Point2dArrayCarrier Helper object to access members of a Point2d[] in geometric calculations.
Point3d 3D point with `x`,`y`,`z` as properties
Point3dArray The `Point3dArray` class contains static methods that act on arrays of 3d points.
Point3dArrayPolygonOps `Point3dArrayPolygonOps` class contains static methods for typical operations on polygons carried as `Point3d[]`
Point4dArray The `Point4dArray` class contains static methods that act on arrays of 4d points.
PointStreamGrowableXYZArrayCollector Concrete class to handle startChain, handleXYZ and endChain calls and return a (one-level deep array of
PointStreamRangeCollector PointStream handler to collect the range of points.
PointStreamXYZXYZHandlerBase Base class for handling points in pairs.
PointStringDeepXYZArrayCollector
PolygonLocationDetail Carries data about a point in the plane of a polygon.
PolygonLocationDetailPair A pair of PolygonLocationDetail.
PolygonOps Various static methods to perform computations on an array of points interpreted as a polygon.
PolylineOps PolylineOps is a collection of static methods operating on polylines.
Range1d Range on a 1d axis
Range2d Range box in xy plane
Range3d Axis aligned range in 3D.
RangeBase Base class for Range1d, Range2d, Range3d.
Ray2d Ray with xy origin and direction
Ray3d A Ray3d contains
Segment1d * A Segment1d is an interval of an axis named x.
Transform A Transform consists of an origin and a Matrix3d.
TriangleLocationDetail Carries data about a location in the plane of a triangle.
UnionOfConvexClipPlaneSets A collection of ConvexClipPlaneSets.
UVSurfaceOps Support methods to act on surfaces with 0..1 uv fractional parameterization
Vector2d 2D vector with `x`,`y` as properties
Vector3d 3D vector with `x`,`y`,`z` as properties
Vector3dArray The `Vector3dArray` class contains static methods that act on arrays of 3d vectors.
XY Minimal object containing x,y and operations that are meaningful without change in both point and vector.
XYZ * `XYZ` is a minimal object containing x,y,z and operations that are meaningful without change in both
YawPitchRollAngles Three angles that determine the orientation of an object in space, sometimes referred to as [Tait–Bryan angles]

## Enumerations

Name Description
AxisIndex Enumeration of numeric indices of 3 axes AxisIndex.X, AxisIndex.Y, AxisIndex.Z
AxisOrder Enumeration of the 6 possible orderings of XYZ axis order
AxisScaleSelect Enumeration among choice for how a coordinate transformation should incorporate scaling.
ClipMaskXYZRangePlanes Bit mask type for referencing subsets of 6 planes of range box.
ClipPlaneContainment Enumerated type for describing where geometry lies with respect to clipping planes.
ClipStatus Enumerated type for describing what must yet be done to clip a piece of geometry.
ClipStepAction Enumeration of ways to handle an intermediate fragment from a clipping step.
InverseMatrixState A Matrix3d is tagged indicating one of the following states:
PolygonLocation Enumeration of possible locations of a point in the plane of a polygon.
StandardViewIndex Standard views.

## Interfaces

Name Description
BeJSONFunctions Interface for `toJSON` and `setFromJSON` methods
Clipper An object containing clipping planes that can be used to clip geometry.
ClipPlaneProps Wire format describing a ClipPlane.
ClipPrimitivePlanesProps Wire format describing a ClipPrimitive defined by a set of clip planes.
ClipPrimitiveShapeProps Wire format describing a ClipShape.
Cloneable Interface for method with a clone operation.
ICloneable Interface for an object with a clone method.
LowAndHighXYProps JSON representation of LowAndHighXY.
LowAndHighXYZProps JSON representation of LowAndHighXYZ.
PerpParallelOptions Options used for methods like isPerpendicularTo and isParallelTo.
PlaneAltitudeEvaluator Plane Evaluation methods.
PolygonClipper Interface for clipping convex polygons.
TrigValues Object with a radians value and its associated cosine and sine values.
WritableLowAndHighXY Interface for class with named properties `low` and `high`, both being `WriteableXAndY`
WritableLowAndHighXYZ Interface for class with named properties `low` and `high`, both being `WriteableXYAndZ`
WritableXAndY Interface for class with `x` and `y` as number properties.
WritableXYAndZ Interface for class with `x`, `y`, `z` as number property.
WriteableHasZ Interface for class with `z` as number property.
YawPitchRollProps Angle properties of a `YawPitchRoll` orientation

## Namespaces

Name Description
XYAndZ

## Type Aliases

Name Description
AngleProps The properties for a JSON representation of an `Angle`.
AngleSweepProps The properties for a JSON representation of an `AngleSweep`.
ClipPrimitiveProps Wire format describing a ClipPrimitive.
ClipVectorProps Wire format describing a ClipVector.
ConvexClipPlaneSetProps Wire format describing a ConvexClipPlaneSet.
HasZ Interface for readable `z` number members.
LowAndHighXY Interface for type with readable `low` and `high` members which have `x` and `y` number members.
LowAndHighXYZ Interface for type with readable `low` and `high` members which have `x`, `y`, and `z` number members.
Matrix3dProps Interface for variant json (one of)
Range1dProps Interface for variant json representing a Range1d
Range2dProps Interface for variant json representing a Range2d
Range3dProps Interface for variant json representing a Range3d
TransformProps Interface for variant json (one of)
UnionOfConvexClipPlaneSetsProps Wire format describing a UnionOfConvexClipPlaneSets.
XAndY Interface for readable `x` and `y` number members.
XYAndZ Interface for type with readable `x`, `y`, `z` number members.
XYProps Interface for variant json (one of)
XYZProps Interface for variant json (one of)

Last Updated: 15 May, 2024