Header menu logo Euclid

Euclid Namespace

Type/Module Description

AutoOpenLine2D

When Euclid is opened this module will be auto-opened. It only contains extension members for type Line2D.

AutoOpenLine3D

When Euclid is opened this module will be auto-opened. It only contains extension members for type Line3D.

AutoOpenMatrix

When Euclid is opened this module will be auto-opened. It only contains extension members for type Matrix.

AutoOpenPnt

When Euclid is opened this module will be auto-opened. It only contains extension members for type Pnt.

AutoOpenPPlane

When Euclid is opened this module will be auto-opened. It only contains extension members for type PPlane.

AutoOpenPt

When Euclid is opened this module will be auto-opened. It only contains extension members for type Pt.

AutoOpenQuaternion

When Euclid is opened this module will be auto-opened. It only contains extension members for type Quaternion.

AutoOpenUnitVc

When Euclid is opened this module will be auto-opened. It only contains extension members for type UnitVc.

AutoOpenUnitVec

When Euclid is opened this module will be auto-opened. It only contains extension members for type UnitVec.

AutoOpenVc

When Euclid is opened this module will be auto-opened. It only contains extension members for type Vc.

AutoOpenVec

When Euclid is opened this module will be auto-opened. It only contains extension members for type Vec.

BBox

 An immutable 3D-bounding-box.
 This implementation guarantees the box to be always valid.
 That means the Min X, Y and Z values are always smaller or equal than the respective Max values.
 The X, Y and Z axes are also called Width, Depth and Height3D.

   Z-Axis       Y-Axis (Depth)
   ^           /
   |   7      /        6 MaxPt
   |   +---------------+
   |  /|    /         /|
   | / |   /         / |
 4 |/  |  /       5 /  |
   +---------------+   |
   |   |/          |   |
   |   +-----------|---+
   |  / 3          |  / 2
   | /             | /
   |/              |/
   +---------------+----> X-Axis (Width)
   0 MinPt         1

Box

 An immutable 3D Box with any rotation in 3D space.
 Described by an Origin and three Edge vectors.
 Similar to PPlane, however the three vectors are not unitized.
 This implementation guarantees the box to be always valid.
 That means the Min X, Y and Z axes cannot be flipped individually.
 However the length of one of these axes might still be zero.

   local        local
   Z-Axis       Y-Axis
   ^           /
   |   7      /        6
   |   +---------------+
   |  /|    /         /|
   | / |   /         / |
 4 |/  |  /       5 /  |
   +---------------+   |
   |   |/          |   |
   |   +-----------|---+
   |  / 3          |  / 2
   | /             | /
   |/              |/     local
   +---------------+----> X-Axis
   0               1

BRect

 An immutable 2D bounding rectangle.
 Sometimes also called 2D a bounding box.
 This implementation guarantees the rectangle to be always valid.
 That means the Min X and Y values are always smaller or equal than the respective Max values.

   Y-Axis (Height2D)
   ^
   |
   |             2 max X,Y
 3 +------------+
   |            |
   |            |
   |            |
   |            |
   |            |       local
   +------------+-----> X-Axis (Width)
  0-min X,Y      1

Cosine

Precalculated cosine values for faster checking the angles of dot products of unit-vectors.

Debug2D

By default the function in this module do nothing. But they are called in case of some errors within this library's Loop module. Set these mutable function object from your 2D or 3D environment if you want debug objects to be drawn.

Debug3D

By default the function in this module do nothing. But they are called in case of some errors within this library's Loop module. Set these mutable function object from your 3D environment if you want debug objects to be drawn.

EuclidDivByZeroException

Exception for attempting to divide by a 0.0 or almost 0.0 value. Almost 0.0 is defined by UtilEuclid.zeroLengthTolerance as 1e-12.

EuclidException

Exception in Euclid.

Format

For formatting floats with adaptive precision.

Intersect

Line2D

An immutable finite line in 2D. Represented by a 2D start and 2D end point.

Line3D

An immutable finite line in 3D. Represented by a 3D start and 3D end point.

LineIntersectionTypes

A module for the result types of 2D and 3D line-line-intersections.

Loop

A counter-clockwise, closed series of 2D points. Checked for too short segments and duplicate points but might have colinear points. Checked for self intersection. This class stores for each segment precomputed list of unit-vectors, lengths and bounding Rectangles. This is to have better performance when calculating Loop with Loop intersections or point containment.

Matrix

An immutable 4x4 transformation matrix. The matrix is represented in the following column-vector syntax form: M11 M21 M31 X41 M12 M22 M32 Y42 M13 M23 M33 Z43 M14 M24 M34 M44 Where X41, Y42 and Z43 refer to the translation part of the matrix. Note: Never use the struct default constructor Matrix() as it will create an invalid zero Matrix. Use Matrix.create or Matrix.createUnchecked instead.

NPlane

An immutable un-parametrized plane defined by a point and a normal vector. As opposed to the PPlane this plane is not parametrized in a X, Y and Z direction. Note: Never use the struct default constructor NPlane() as it will create an invalid zero Plane. Use NPlane.create or Plane.createUnchecked instead.

Pnt

An immutable 3D point. Made up from 3 floats: X, Y, and Z. A 3D point represents a location in space, but not direction or an offset. (use Vec for that.) (2D Points are called 'Pt' )

PointLoopRel

Discriminated union for the three possible relations of a point to a closed polyline Loop. Points are consider on loop if they are within loop.SnapThreshold tolerance.

Points

Provides operations on 2D and 3D points.

Polyline2D

A mutable 2D Polyline. If the last point is the same as the first point, the Polyline2D is considered closed.

Polyline3D

A mutable 3D Polyline. If the last point is the same as the first point, the Polyline3D is closed.

PPlane

An immutable Parametrized Plane or Frame with X, Y and Z Direction. This struct is called 'PPlane' , the other plane 'NPlane' refers to an un-oriented plane consisting only of a Origin and a Normal. Note: Never use the struct default constructor PPlane() as it will create an invalid zero length PPlane. Use PPlane.create or PPlane.createUnchecked instead.

Pt

Pt is an immutable 2D point. Made up from 2 floats: X and Y.

Quaternion

An immutable unitized Quaternion, for arbitrary 3D rotations. This implementation guarantees the Quaternion to be always unitized. Note: Never use the struct default constructor Quaternion() as it will create an invalid zero length Quaternion. Use Quaternion.create or Quaternion.createUnchecked instead.

Rect2D

 An immutable 2D Rectangle with any rotation in 2D space.
 Described by an Origin and two Edge vectors.
 This implementation guarantees the 2D Rectangle to be always valid.
 That means the X and Y axes are always perpendicular to each other.
 However the length of one of these axes might still be zero.

   local
   Y-Axis
   ^
   |
   |             2
 3 +------------+
   |            |
   |            |
   |            |
   |            |
   |            |       local
   +------------+-----> X-Axis
  0-Origin       1

Rect3D

 An immutable planar 3D-rectangle with any rotation in 3D space.
 Described by an Origin and two Edge vectors.
 Similar to PPlane, however the two vectors are not unitized.
 This implementation guarantees the 3D-rectangle to be always valid.
 That means the  X and Y axes are always perpendicular to each other.
 However the length of one of these axes might still be zero.

   local
   Y-Axis
   ^
   |
   |             2
 3 +------------+
   |            |
   |            |
   |            |
   |            |
   |            |       local
   +------------+-----> X-Axis
  0-Origin       1

RelAngleDiscriminant

Precalculated relative angle discriminant values for faster checking the angles in line line intersection.

RigidMatrix

An immutable 4x3 rigid matrix. For only rotation and translation in 3D space. This matrix guarantees to NOT scale, shear, flip, mirror, reflect or project. Angles are preserved. Lengths are preserved. Area is preserved. Volume is preserved. A rigid matrix is a matrix whose 3x3 columns and rows are orthogonal unit-vectors. The matrix is represented in the following column-vector syntax form: M11 M21 M31 X41 M12 M22 M32 Y42 M13 M23 M33 Z43 Where X41, Y42 and Z43 refer to the translation part of the RigidMatrix. The Determinant of this matrix is always 1.0. Note: Never use the struct default constructor RigidMatrix() as it will create an invalid zero RigidMatrix. Use RigidMatrix.create or RigidMatrix.createUnchecked instead.

Rotation2D

2D Counter Clockwise rotation. It can be applied in World X, Y or Z plane. Internally stored just as a Sine and Cosine value. For arbitrary rotations use Quaternions or 4x4 Matrix. However this module has much better performance than the more general Matrix4x4 or a Quaternion. Note: Never use the struct default constructor Rotation2D() as it will create an invalid zero Rotation2D. Use Rotation2D.create or Rotation2D.createUnchecked instead.

Similarity2D

For finding 2D object that are similar but not exactly the same. Based on their 2D point clouds. Within one list of points the order does not matter, but each location must exist only once in order to be consider similar within the tolerance. (This module could be extended to work in 3d too)

Topology

UnitVc

UnitVc is an immutable 2D unit-vector. it is guaranteed to be unitized. Never use the struct default constructor UnitVc()! It will create an invalid zero length vector. Use UnitVc.create or UnitVc.createUnchecked instead.

UnitVec

An immutable 3D vector guaranteed to be always unitized. A 3D vector represents a direction or an offset in space, but not a location. A 4x4 transformation matrix applied to a vector will only rotate and scale the vector but not translate it. (2D unit-vectors are called 'UnitVc' ) Use UnitVec.create or UnitVec.createUnchecked to created instances. Note: Never use the struct default constructor UnitVec() as it will create an invalid zero length vector. Use UnitVec.create or UnitVec.createUnchecked instead.

UtilEuclid

Math Utility functions and values for use within Euclid.

Vc

Vc is an immutable 2D vector with any length. Made up from 2 floats: X and Y.

Vec

An immutable 3D vector of any length. Made up from 3 floats: X, Y, and Z. A 3D vector represents a direction or an offset in space, but not a location. A 4x4 transformation matrix applied to a vector will only rotate and scale the vector but not translate it. (3D unit-vectors of length 1.0 are called 'UnitVec' ) (2D vectors are called 'Vc' )

XLineCone

The result of a line cone intersection test. This is the return type of the function Intersection.lineCone.

Type something to start searching.