# 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

- 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

- 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

- 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 | |

ClipPlane | A ClipPlane is a single plane represented as |

ClipPrimitive | 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). |

ClipVector | Class holding an array structure of shapes defined by clip plane sets |

Constant | Commonly used constant values. |

ConvexClipPlaneSet | A ConvexClipPlaneSet is a collection of ClipPlanes, often used for bounding regions of space. |

FrameBuilder | Helper class to accumulate points and vectors until there is enough data to define a coordinate system. |

Geometry | |

NumberArray | |

OrderedRotationAngles | OrderedRotationAngles represents a non-trivial rotation using three simple axis rotation angles, and an order in which to apply them. |

Plane3dByOriginAndUnitNormal | A plane defined by |

Plane3dByOriginAndVectors | A Point3dVector3dVector3d is an origin and a pair of vectors. |

PlaneSetParamsCache | Cache structure that holds a ClipPlaneSet and various parameters for adding new ClipPlanes to the set. |

Point2d | |

Point2dArray | |

Point3dArray | |

Point3dArrayCarrier | Helper object to access members of a Point3d[] in geometric calculations. |

Point4dArray | |

PolygonOps | Static class for operations that treat an array of points as a polygon (with area!) |

Range1d | |

Range2d | |

Range3d | |

RangeBase | |

Ray3d | A Ray3d contains |

Segment1d | * A Segment1d is an interval of an axis named x. |

Transform | A transform is an origin and a Matrix3d. |

UnionOfConvexClipPlaneSets | A collection of ConvexClipPlaneSets. |

Vector2d | 3D vector with x,y properties |

Vector3dArray | |

XY | Minimal object containing x,y and operations that are meaningful without change in both point and vector. |

YawPitchRollAngles | Three angles that determine the orientation of an object in space. |

## Enumerations

Name | Description |
---|---|

AxisIndex | |

AxisOrder | Enumeration of the 6 possible orderings of XYZ axis order |

AxisScaleSelect | Enumeration among choice for how a coordinate transformation should incorporate scaling. |

ClipMask | Bit mask type for easily keeping track of defined vs undefined values and which parts of a clipping shape |

StandardViewIndex |

## Interfaces

Name | Description |
---|---|

BeJSONFunctions | |

IsNullCheck | |

PlaneAltitudeEvaluator | Interface so various plane representations can be used by algorithms that just want altitude evaluations. |

TrigValues | |

WritableLowAndHighXY | |

WritableLowAndHighXYZ | |

WritableXAndY | |

WritableXYAndZ | |

WriteableHasZ | |

YawPitchRollProps | The properties that define YawPitchRollAngles. |

## Type Aliases

Name | Description |
---|---|

AngleProps | The Properties for a JSON representation of an Angle. |

AngleSweepProps | The Properties for a JSON representation of an AngleSweep. |

HasZ | |

LowAndHighXY | |

LowAndHighXYZ | |

Matrix3dProps | |

Range1dProps | |

Range2dProps | |

Range3dProps | |

TransformProps | |

XAndY | |

XYAndZ | |

XYProps | |

XYZProps |

Last Updated: 17 December, 2018