-
Notifications
You must be signed in to change notification settings - Fork 0
DiGi.Geometry.Spatial.Classes
Represents the abstract base class for a 3D boolean operation result.
public abstract class BooleanOperationResult3D : DiGi.Core.Classes.SerializableObject, DiGi.Geometry.Spatial.Interfaces.IBooleanOperationResult3D, DiGi.Core.Interfaces.ISerializableResult, DiGi.Core.Interfaces.IResult, DiGi.Core.Interfaces.IObject, DiGi.Core.Interfaces.ISerializableObject, DiGi.Core.Interfaces.ICloneableObject<DiGi.Core.Interfaces.ISerializableObject>, DiGi.Core.Interfaces.ICloneableObjectInheritance System.Object → DiGi.Core.Classes.Object → DiGi.Core.Classes.SerializableObject → BooleanOperationResult3D
Derived
↳ DifferenceResult3D
↳ IntersectionResult3D
↳ UnionResult3D
Implements IBooleanOperationResult3D, DiGi.Core.Interfaces.ISerializableResult, DiGi.Core.Interfaces.IResult, DiGi.Core.Interfaces.IObject, DiGi.Core.Interfaces.ISerializableObject, DiGi.Core.Interfaces.ICloneableObject<DiGi.Core.Interfaces.ISerializableObject>, DiGi.Core.Interfaces.ICloneableObject
Initializes a new instance of the BooleanOperationResult3D class.
protected BooleanOperationResult3D();Initializes a new instance of the BooleanOperationResult3D class using another instance.
protected BooleanOperationResult3D(DiGi.Geometry.Spatial.Classes.BooleanOperationResult3D? booleanOperationResult3D);booleanOperationResult3D BooleanOperationResult3D
The instance to copy from.
Initializes a new instance of the BooleanOperationResult3D class with the specified geometries.
protected BooleanOperationResult3D(System.Collections.Generic.IEnumerable<DiGi.Geometry.Spatial.Interfaces.IGeometry3D>? geometry3Ds);geometry3Ds System.Collections.Generic.IEnumerable<DiGi.Geometry.Spatial.Interfaces.IGeometry3D>
The geometries to store in the result.
Initializes a new instance of the BooleanOperationResult3D class using the specified System.Text.Json.Nodes.JsonObject.
protected BooleanOperationResult3D(System.Text.Json.Nodes.JsonObject? jsonObject);jsonObject System.Text.Json.Nodes.JsonObject
The System.Text.Json.Nodes.JsonObject used to initialize the instance.
Gets the type of the boolean operation.
public abstract DiGi.Geometry.Core.Enums.BooleanOpertaionType BooleanOpertaionType { get; }Implements BooleanOpertaionType
Gets the total number of DiGi.Geometry.Spatial.Interfaces.IGeometry3D elements.
public int Count { get; }Implements Count
Gets the 3D geometry at the specified index.
public DiGi.Geometry.Spatial.Interfaces.IGeometry3D? this[int index] { get; }index System.Int32
The zero-based index of the geometry to retrieve.
Implements this[int]
DiGi.Geometry.Spatial.Interfaces.IGeometry3D
Determines whether there are any 3D geometries present.
public bool Any();Implements Any()
System.Boolean
true if any geometries are present; otherwise, false.
Determines whether the collection contains any object of the specified type T.
public bool Contains<T>()
where T : DiGi.Geometry.Spatial.Interfaces.IGeometry3D;T
The type of geometry to search for.
Implements Contains<T>()
System.Boolean
true if an object of type T is present; otherwise, false.
Retrieves a list of 3D geometries of the specified type T.
public System.Collections.Generic.List<T>? GetGeometry3Ds<T>()
where T : DiGi.Geometry.Spatial.Interfaces.IGeometry3D;T
The type of geometry to retrieve, which must implement the DiGi.Geometry.Spatial.Interfaces.IGeometry3D interface.
Implements GetGeometry3Ds<T>()
System.Collections.Generic.List<T>
A list of matching geometries, or null if no geometries are present.
Represents a three-dimensional bounding box defined by minimum and maximum Point3D points.
public class BoundingBox3D : DiGi.Geometry.Spatial.Classes.Geometry3D, DiGi.Geometry.Core.Interfaces.IBoundingBox<DiGi.Geometry.Spatial.Classes.Point3D>, DiGi.Geometry.Core.Interfaces.IBoundingBox, DiGi.Geometry.Core.Interfaces.IGeometry, DiGi.Core.Interfaces.ISerializableObject, DiGi.Core.Interfaces.ICloneableObject<DiGi.Core.Interfaces.ISerializableObject>, DiGi.Core.Interfaces.ICloneableObject, DiGi.Core.Interfaces.IObjectInheritance System.Object → DiGi.Core.Classes.Object → DiGi.Core.Classes.SerializableObject → Geometry3D → BoundingBox3D
Implements DiGi.Geometry.Core.Interfaces.IBoundingBox<Point3D>, DiGi.Geometry.Core.Interfaces.IBoundingBox, DiGi.Geometry.Core.Interfaces.IGeometry, DiGi.Core.Interfaces.ISerializableObject, DiGi.Core.Interfaces.ICloneableObject<DiGi.Core.Interfaces.ISerializableObject>, DiGi.Core.Interfaces.ICloneableObject, DiGi.Core.Interfaces.IObject
Initializes a new instance of the BoundingBox3D class using an existing BoundingBox3D object.
public BoundingBox3D(DiGi.Geometry.Spatial.Classes.BoundingBox3D? boundingBox3D);boundingBox3D BoundingBox3D
The BoundingBox3D object to copy values from.
Initializes a new instance of the BoundingBox3D class using two Point3D points to define the boundaries.
public BoundingBox3D(DiGi.Geometry.Spatial.Classes.Point3D? point3D_1, DiGi.Geometry.Spatial.Classes.Point3D? point3D_2);point3D_1 Point3D
The first Point3D? point used to calculate the minimum and maximum bounds.
point3D_2 Point3D
The second Point3D? point used to calculate the minimum and maximum bounds.
Initializes a new instance of the BoundingBox3D class using a specified Point3D and an offset value.
public BoundingBox3D(DiGi.Geometry.Spatial.Classes.Point3D? point3D, double offset);point3D Point3D
The optional Point3D to serve as the center point for the bounding box.
offset System.Double
The System.Double offset used to determine the extent of the bounding box from the center point.
Initializes a new instance of the BoundingBox3D class using a collection of nullable Point3D objects.
public BoundingBox3D(System.Collections.Generic.IEnumerable<DiGi.Geometry.Spatial.Classes.Point3D?>? point3Ds);point3Ds System.Collections.Generic.IEnumerable<Point3D>
An System.Collections.Generic.IEnumerable<> of nullable Point3D objects used to determine the minimum and maximum boundaries of the bounding box.
Initializes a new instance of the BoundingBox3D class using a collection of Point3D points and a specified offset.
public BoundingBox3D(System.Collections.Generic.IEnumerable<DiGi.Geometry.Spatial.Classes.Point3D?>? point3Ds, double offset);point3Ds System.Collections.Generic.IEnumerable<Point3D>
The System.Collections.Generic.IEnumerable<> of Point3D objects used to determine the minimum and maximum boundaries.
offset System.Double
The System.Double value to apply as an offset to the bounding box.
Initializes a new instance of the BoundingBox3D class using the specified System.Text.Json.Nodes.JsonObject.
public BoundingBox3D(System.Text.Json.Nodes.JsonObject? jsonObject);jsonObject System.Text.Json.Nodes.JsonObject
The System.Text.Json.Nodes.JsonObject containing the data to initialize the bounding box. This value can be null.
Gets the depth value, calculated as the difference between the Y-coordinate of the maximum point and the Y-coordinate of the minimum point. Returns a System.Double.NaN if either the maximum or minimum points are null.
public double Depth { get; }System.Double
A System.Double representing the depth.
Gets the height of the object, calculated as the difference between the Z-coordinate of the maximum point and the Z-coordinate of the minimum point.
public double Height { get; }System.Double
A System.Double representing the height, or System.Double.NaN if the bounds are not defined.
Gets or sets the maximum boundary point of the bounding volume. Setting this value expands the bounds to include the specified Point3D.
public DiGi.Geometry.Spatial.Classes.Point3D Max { get; set; }Implements Max
Point3D
The Point3D representing the maximum coordinates.
Gets the X-coordinate of the maximum bound without allocating a Point3D, or System.Double.NaN if the maximum point is null.
public double MaxX { get; }System.Double
A System.Double representing the maximum X-coordinate.
Gets the Y-coordinate of the maximum bound without allocating a Point3D, or System.Double.NaN if the maximum point is null.
public double MaxY { get; }System.Double
A System.Double representing the maximum Y-coordinate.
Gets the Z-coordinate of the maximum bound without allocating a Point3D, or System.Double.NaN if the maximum point is null.
public double MaxZ { get; }System.Double
A System.Double representing the maximum Z-coordinate.
Gets or sets the minimum Point3D point of the boundary.
public DiGi.Geometry.Spatial.Classes.Point3D Min { get; set; }Implements Min
Point3D
The Point3D representing the minimum coordinates.
Gets the X-coordinate of the minimum bound without allocating a Point3D, or System.Double.NaN if the minimum point is null.
public double MinX { get; }System.Double
A System.Double representing the minimum X-coordinate.
Gets the Y-coordinate of the minimum bound without allocating a Point3D, or System.Double.NaN if the minimum point is null.
public double MinY { get; }System.Double
A System.Double representing the minimum Y-coordinate.
Gets the Z-coordinate of the minimum bound without allocating a Point3D, or System.Double.NaN if the minimum point is null.
public double MinZ { get; }System.Double
A System.Double representing the minimum Z-coordinate.
Gets the width of the bounding area.
public double Width { get; }System.Double
A System.Double representing the difference between the maximum X coordinate and the minimum X coordinate, or System.Double.NaN if either point is null.
Adds a BoundingBox3D to the collection.
public bool Add(DiGi.Geometry.Spatial.Classes.BoundingBox3D? boundingBox3D);boundingBox3D BoundingBox3D
The BoundingBox3D instance to add.
System.Boolean
A System.Boolean value indicating whether the BoundingBox3D was successfully added; returns false if the provided BoundingBox3D or its minimum and maximum points are null.
Adds a Point3D to the bounding volume and updates the minimum and maximum bounds.
public bool Add(DiGi.Geometry.Spatial.Classes.Point3D? point3D);point3D Point3D
The Point3D instance to add.
System.Boolean
A System.Boolean value indicating whether the point was successfully added; returns false if the provided Point3D is null.
Creates a copy of the current BoundingBox3D instance.
public override DiGi.Core.Interfaces.ISerializableObject Clone();Implements Clone()
DiGi.Core.Interfaces.ISerializableObject
An DiGi.Core.Interfaces.ISerializableObject that is a clone of the current instance.
Calculates the centroid of the object.
public DiGi.Geometry.Spatial.Classes.Point3D? GetCentroid();Point3D
A Point3D representing the centroid, or null if it cannot be calculated.
Retrieves a list of Point3D objects representing the corners of the volume.
public System.Collections.Generic.List<DiGi.Geometry.Spatial.Classes.Point3D>? GetPoints();System.Collections.Generic.List<Point3D>
A System.Collections.Generic.List<> containing the calculated points, or null if the minimum or maximum bounds are not defined.
Calculates the volume based on the width, height, and depth properties.
public double GetVolume();System.Double
The calculated volume as a System.Double, or System.Double.NaN if any of the dimensions are System.Double.NaN.
Determines whether the specified BoundingBox3D is within range, considering a given tolerance.
public bool InRange(DiGi.Geometry.Spatial.Classes.BoundingBox3D? boundingBox3D, double tolerance=1E-06);boundingBox3D BoundingBox3D
The BoundingBox3D to check.
tolerance System.Double
A System.Double value representing the distance tolerance for the range check.
System.Boolean
A System.Boolean value indicating true if the bounding box is within range; otherwise, false.
Determines whether the object is within a specified tolerance of the given Line3D.
public bool InRange(DiGi.Geometry.Spatial.Classes.Line3D? line3D, double tolerance=1E-06);line3D Line3D
The Line3D to check against.
tolerance System.Double
The System.Double value representing the distance tolerance.
System.Boolean
A System.Boolean value indicating whether the object is within range of the line.
Determines whether the specified Mesh3D is within range of this bounding box, considering a given tolerance.
A cheap bounding-box overlap of the mesh against this box rejects fully disjoint meshes before any per-triangle work; the remaining triangles are tested individually with an exact triangle-versus-box overlap test. No containment logic is applied, so a box floating inside a hollow mesh without touching any triangle is not reported as in range.
public bool InRange(DiGi.Geometry.Spatial.Classes.Mesh3D? mesh3D, double tolerance=1E-06);mesh3D Mesh3D
The Mesh3D to evaluate.
tolerance System.Double
The System.Double distance tolerance by which the box is expanded on each axis before the overlap test.
System.Boolean
A System.Boolean value indicating true if any triangle of the mesh is within range of the box; otherwise, false.
Determines whether the object is within a specified tolerance of the given plane.
public bool InRange(DiGi.Geometry.Spatial.Classes.Plane? plane, double tolerance=1E-06);plane Plane
The Plane to check against. If null, the method returns false.
tolerance System.Double
The System.Double distance tolerance used to determine if the object is in range.
System.Boolean
A System.Boolean value indicating whether the object is within the specified tolerance of the plane.
Determines whether the range defined by two points intersects any of the associated planes within a specified tolerance.
public bool InRange(DiGi.Geometry.Spatial.Classes.Point3D? point3D_1, DiGi.Geometry.Spatial.Classes.Point3D? point3D_2, bool bounded_1, bool bounded_2, double tolerance=1E-06);point3D_1 Point3D
The first Point3D point defining the range.
point3D_2 Point3D
The second Point3D? point defining the range.
bounded_1 System.Boolean
A System.Boolean value indicating whether the first point is bounded.
bounded_2 System.Boolean
A System.Boolean value indicating whether the second point is bounded.
tolerance System.Double
The System.Double tolerance used for distance calculations.
System.Boolean
A System.Boolean value indicating whether the range is within the specified criteria.
Determines whether the specified Point3D is within the defined range, considering a given tolerance.
public bool InRange(DiGi.Geometry.Spatial.Classes.Point3D? point3D, double tolerance=1E-06);point3D Point3D
The Point3D to evaluate.
tolerance System.Double
The System.Double value representing the allowed distance tolerance.
System.Boolean
A System.Boolean value indicating whether the point is within the range.
Determines whether the specified Ray3D is within the range, considering a given tolerance.
public bool InRange(DiGi.Geometry.Spatial.Classes.Ray3D? ray3D, double tolerance=1E-06);ray3D Ray3D
The Ray3D to check for being in range.
tolerance System.Double
The System.Double value representing the distance tolerance.
System.Boolean
A System.Boolean value indicating whether the Ray3D is within the range.
Determines whether the specified Segment3D is within the range.
public bool InRange(DiGi.Geometry.Spatial.Classes.Segment3D? segment3D, double tolerance=1E-06);segment3D Segment3D
The Segment3D to evaluate.
tolerance System.Double
The System.Double tolerance value used for the distance calculation.
System.Boolean
A System.Boolean value indicating whether the Segment3D is within the range.
Determines whether the specified Triangle3D overlaps this bounding box, considering a given tolerance.
Uses an exact triangle-versus-axis-aligned-box separating-axis test, so a triangle whose face passes through the box while all three of its vertices lie outside is still reported as in range.
public bool InRange(DiGi.Geometry.Spatial.Classes.Triangle3D? triangle3D, double tolerance=1E-06);triangle3D Triangle3D
The Triangle3D to evaluate.
tolerance System.Double
The System.Double distance tolerance by which the box is expanded on each axis before the overlap test.
System.Boolean
A System.Boolean value indicating true if the triangle is within range of the box; otherwise, false.
Determines whether the specified DiGi.Geometry.Spatial.Interfaces.ISegmentable3D object is within the defined range, considering a distance tolerance.
public bool InRange(DiGi.Geometry.Spatial.Interfaces.ISegmentable3D? segmentable3D, double tolerance=1E-06);segmentable3D DiGi.Geometry.Spatial.Interfaces.ISegmentable3D
The DiGi.Geometry.Spatial.Interfaces.ISegmentable3D object to evaluate.
tolerance System.Double
A System.Double value representing the distance tolerance used for the range check.
System.Boolean
A System.Boolean value indicating true if the DiGi.Geometry.Spatial.Interfaces.ISegmentable3D object is within range; otherwise, false.
Determines whether a specified Point3D is inside the bounding volume, accounting for a given tolerance.
public bool Inside(DiGi.Geometry.Spatial.Classes.Point3D? point3D, double tolerance=1E-06);point3D Point3D
The Point3D to check.
tolerance System.Double
The System.Double value representing the distance tolerance used to shrink the boundary.
System.Boolean
A System.Boolean indicating whether the Point3D is inside the volume; returns false if the point or bounding limits are null.
Moves the object by the specified Vector3D vector.
public override bool Move(DiGi.Geometry.Spatial.Classes.Vector3D? vector3D);vector3D Vector3D
The Vector3D? vector to use for the movement.
Implements Move(Vector3D)
System.Boolean
A bool indicating whether the move operation was successful.
Offsets the minimum and maximum points of the bounding box by the specified double value.
public void Offset(double value);value System.Double
The double value to offset the boundaries by.
Determines whether the specified Point3D is located on the entity within the given tolerance.
public bool On(DiGi.Geometry.Spatial.Classes.Point3D? point3D, double tolerance=1E-06);point3D Point3D
The Point3D to evaluate.
tolerance System.Double
The System.Double distance tolerance used for the calculation.
System.Boolean
A System.Boolean value indicating whether the point is on the entity.
Represents a concrete, non-generic split-axis Bounding Volume Hierarchy (BVH) node that stores DiGi.Geometry.Spatial.Interfaces.IPolygonalFace3D elements.
public class BVHNode : DiGi.Geometry.Spatial.Classes.BVHNode<DiGi.Geometry.Spatial.Interfaces.IPolygonalFace3D>Inheritance System.Object → DiGi.Core.Classes.Object → DiGi.Core.Classes.SerializableObject → DiGi.Geometry.Spatial.Classes.BVHNode<DiGi.Geometry.Spatial.Interfaces.IPolygonalFace3D> → BVHNode
Initializes a new instance of the BVHNode class by copying from another node.
public BVHNode(DiGi.Geometry.Spatial.Classes.BVHNode? other);other BVHNode
The source node to copy from.
Initializes a new instance of the BVHNode class by partitioning the input list of faces.
public BVHNode(System.Collections.Generic.List<DiGi.Geometry.Spatial.Interfaces.IPolygonalFace3D>? polygonalFace3Ds);polygonalFace3Ds System.Collections.Generic.List<DiGi.Geometry.Spatial.Interfaces.IPolygonalFace3D>
The list of polygonal faces to partition.
Initializes a new instance of the BVHNode class using the specified System.Text.Json.Nodes.JsonObject.
public BVHNode(System.Text.Json.Nodes.JsonObject? jsonObject);jsonObject System.Text.Json.Nodes.JsonObject
The JSON object containing the data to deserialize.
Deep copies the current BVH tree.
public override DiGi.Core.Interfaces.ISerializableObject? Clone();Implements Clone()
DiGi.Core.Interfaces.ISerializableObject
A new DiGi.Core.Interfaces.ISerializableObject that is a cloned copy of the current node.
Creates a concrete child node of type BVHNode.
protected override DiGi.Geometry.Spatial.Classes.BVHNode<DiGi.Geometry.Spatial.Interfaces.IPolygonalFace3D>? CreateNode(System.Collections.Generic.List<DiGi.Geometry.Spatial.Interfaces.IPolygonalFace3D> polygonalFace3Ds);polygonalFace3Ds System.Collections.Generic.List<DiGi.Geometry.Spatial.Interfaces.IPolygonalFace3D>
The list of polygonal faces to assign to the child node.
DiGi.Geometry.Spatial.Classes.BVHNode<DiGi.Geometry.Spatial.Interfaces.IPolygonalFace3D>
A concrete child instance of BVHNode.
Represents an abstract, generic split-axis Bounding Volume Hierarchy (BVH) node designed to accelerate constructive solid geometry (CSG) queries on 3D polyhedra. This structure partitions 3D polygonal faces hierarchically for fast spatial overlap culling during boolean operations such as Intersection, Union, and Difference.
public abstract class BVHNode<TPolygonalFace3D> : DiGi.Core.Classes.SerializableObject
where TPolygonalFace3D : DiGi.Geometry.Spatial.Interfaces.IPolygonalFace3DTPolygonalFace3D
The type of 3D polygonal face, implementing DiGi.Geometry.Spatial.Interfaces.IPolygonalFace3D.
Inheritance System.Object → DiGi.Core.Classes.Object → DiGi.Core.Classes.SerializableObject → BVHNode<TPolygonalFace3D>
Derived
↳ BVHNode
Initializes a new instance of the BVHNode<TPolygonalFace3D> class by copying the properties from an existing node.
protected BVHNode(DiGi.Geometry.Spatial.Classes.BVHNode<TPolygonalFace3D>? other);other DiGi.Geometry.Spatial.Classes.BVHNode<TPolygonalFace3D>
The source node to copy values from.
Initializes a new instance of the BVHNode<TPolygonalFace3D> class by partitioning the input list of faces hierarchically.
protected BVHNode(System.Collections.Generic.List<TPolygonalFace3D>? polygonalFace3Ds);polygonalFace3Ds System.Collections.Generic.List<TPolygonalFace3D>
The list of polygonal faces to organize inside the spatial hierarchy.
Initializes a new instance of the BVHNode<TPolygonalFace3D> class using the specified System.Text.Json.Nodes.JsonObject.
protected BVHNode(System.Text.Json.Nodes.JsonObject? jsonObject);jsonObject System.Text.Json.Nodes.JsonObject
The JSON object containing the data to initialize the node.
Gets the bounding box that encompasses all geometry in this node and its children.
public DiGi.Geometry.Spatial.Classes.BoundingBox3D? Box { get; }Gets the list of polygonal faces stored directly in this leaf node (null or empty if this is an internal node).
public System.Collections.Generic.List<TPolygonalFace3D>? Faces { get; }System.Collections.Generic.List<TPolygonalFace3D>
Gets the left child node in the spatial hierarchy.
public DiGi.Geometry.Spatial.Classes.BVHNode<TPolygonalFace3D>? Left { get; }DiGi.Geometry.Spatial.Classes.BVHNode<TPolygonalFace3D>
Gets the right child node in the spatial hierarchy.
public DiGi.Geometry.Spatial.Classes.BVHNode<TPolygonalFace3D>? Right { get; }DiGi.Geometry.Spatial.Classes.BVHNode<TPolygonalFace3D>
Creates a child node of the concrete hierarchy type.
protected abstract DiGi.Geometry.Spatial.Classes.BVHNode<TPolygonalFace3D>? CreateNode(System.Collections.Generic.List<TPolygonalFace3D> polygonalFace3Ds);polygonalFace3Ds System.Collections.Generic.List<TPolygonalFace3D>
The list of polygonal faces to assign to the child node.
DiGi.Geometry.Spatial.Classes.BVHNode<TPolygonalFace3D>
A concrete child instance of BVHNode<TPolygonalFace3D>.
Classifies points against a closed polyhedron boundary as Inside, On or Outside using a prebuilt Bounding Volume Hierarchy (BVH) for accelerated parity ray-casting queries.
The solver is built once per polyhedron and reused for many point queries during constructive solid geometry (CSG) boolean operations: set Input to the query point, call Solve(), then read Output. This avoids the repeated face extraction, face cloning and bounding box recomputation that the general purpose Inside(Point3D, double) and On(Point3D, double) methods incur on every call.
Not thread-safe: instances keep an internal scratch buffer and are intended for single-threaded use within one boolean operation.
internal class BVHNodePointRelationSolver : DiGi.Core.Interfaces.IOneToOneSolver<DiGi.Geometry.Spatial.Classes.Point3D, DiGi.Geometry.Core.Enums.PointRelation>, DiGi.Core.Interfaces.ISolver, DiGi.Core.Interfaces.IEvaluatorInheritance System.Object → BVHNodePointRelationSolver
Implements DiGi.Core.Interfaces.IOneToOneSolver<Point3D,PointRelation>, DiGi.Core.Interfaces.ISolver, DiGi.Core.Interfaces.IEvaluator
Initializes a new instance of the BVHNodePointRelationSolver class.
internal BVHNodePointRelationSolver(DiGi.Geometry.Spatial.Classes.BVHNode<DiGi.Geometry.Spatial.Interfaces.IPolygonalFace3D> bVHNode, double tolerance);bVHNode DiGi.Geometry.Spatial.Classes.BVHNode<DiGi.Geometry.Spatial.Interfaces.IPolygonalFace3D>
The prebuilt Bounding Volume Hierarchy (BVH) of the polyhedron faces. Its root box defines the query bounds.
tolerance System.Double
The distance tolerance used for On-boundary classification and crossing tests.
Sets the query point to classify against the polyhedron boundary on the next Solve() call.
public DiGi.Geometry.Spatial.Classes.Point3D? Input { set; }Implements Input
Gets the spatial relation of the last solved point to the polyhedron boundary.
public DiGi.Geometry.Core.Enums.PointRelation Output { get; }Implements Output
Classifies Input against the polyhedron boundary and stores the result in Output.
public bool Solve();Implements Solve()
System.Boolean
True if the point was classified; false if Input is null or the solver has no bounding box.
Represents a three-dimensional coordinate in space.
public abstract class Coordinate3D : DiGi.Geometry.Core.Classes.Coordinate, DiGi.Geometry.Spatial.Interfaces.IGeometry3D, DiGi.Geometry.Core.Interfaces.IGeometry, DiGi.Core.Interfaces.ISerializableObject, DiGi.Core.Interfaces.ICloneableObject<DiGi.Core.Interfaces.ISerializableObject>, DiGi.Core.Interfaces.ICloneableObject, DiGi.Core.Interfaces.IObject, DiGi.Geometry.Spatial.Interfaces.IMovable3D, DiGi.Geometry.Spatial.Interfaces.ITransformable3D, DiGi.Geometry.Core.Interfaces.ITransformable<DiGi.Geometry.Spatial.Interfaces.ITransform3D>, DiGi.Geometry.Core.Interfaces.ITransformableInheritance System.Object → DiGi.Core.Classes.Object → DiGi.Core.Classes.SerializableObject → Coordinate → Coordinate3D
Implements DiGi.Geometry.Spatial.Interfaces.IGeometry3D, DiGi.Geometry.Core.Interfaces.IGeometry, DiGi.Core.Interfaces.ISerializableObject, DiGi.Core.Interfaces.ICloneableObject<DiGi.Core.Interfaces.ISerializableObject>, DiGi.Core.Interfaces.ICloneableObject, DiGi.Core.Interfaces.IObject, DiGi.Geometry.Spatial.Interfaces.IMovable3D, DiGi.Geometry.Spatial.Interfaces.ITransformable3D, DiGi.Geometry.Core.Interfaces.ITransformable<DiGi.Geometry.Spatial.Interfaces.ITransform3D>, DiGi.Geometry.Core.Interfaces.ITransformable
Initializes a new instance of the Coordinate3D class.
public Coordinate3D();Initializes a new instance of the Coordinate3D class using an existing Coordinate3D object.
public Coordinate3D(DiGi.Geometry.Spatial.Classes.Coordinate3D? coordinate3D);coordinate3D Coordinate3D
The Coordinate3D instance to copy values from.
Initializes a new instance of the Coordinate3D class with specified X, Y, and Z coordinates.
public Coordinate3D(double x, double y, double z);The X coordinate as a double value.
The Y coordinate as a double value.
The Z coordinate as a double value.
Initializes a new instance of the Coordinate3D class using an array of System.Double values.
public Coordinate3D(double[]? values);values System.Double[]
An optional array of double values. If the array is null or contains fewer than three elements, all coordinates are initialized to System.Double.NaN.
Initializes a new instance of the Coordinate3D class with the specified internal values array length.
protected Coordinate3D(int length);length System.Int32
The length of the values array.
Initializes a new instance of the Coordinate3D class using the specified System.Text.Json.Nodes.JsonObject.
public Coordinate3D(System.Text.Json.Nodes.JsonObject? jsonObject);jsonObject System.Text.Json.Nodes.JsonObject
The System.Text.Json.Nodes.JsonObject used to initialize the coordinate. This value can be null.
Gets or sets the X-coordinate value as a double.
public double X { get; set; }Gets or sets the Y-coordinate value as a double.
public double Y { get; set; }Gets or sets the Z-coordinate value as a double.
public double Z { get; set; }Moves the object by adding the specified Vector3D offset to its current values.
public bool Move(DiGi.Geometry.Spatial.Classes.Vector3D? vector3D);vector3D Vector3D
The Vector3D? vector used for translation.
Implements Move(Vector3D)
System.Boolean
A bool value indicating whether the movement was successfully applied.
Transforms the current values using the specified 3D transformation.
public virtual bool Transform(DiGi.Geometry.Spatial.Interfaces.ITransform3D? transform);transform DiGi.Geometry.Spatial.Interfaces.ITransform3D
The DiGi.Geometry.Spatial.Interfaces.ITransform3D object used to perform the transformation.
System.Boolean
A System.Boolean value indicating whether the transformation was successfully applied; otherwise, false.
Represents a three-dimensional coordinate system defined by an origin and axes.
public class CoordinateSystem3D : DiGi.Geometry.Spatial.Classes.Geometry3D, DiGi.Geometry.Spatial.Interfaces.ICoordinateSystem3D, DiGi.Geometry.Core.Interfaces.ICoordinateSystem<DiGi.Geometry.Spatial.Classes.Point3D>, DiGi.Geometry.Core.Interfaces.ICoordinateSystem, DiGi.Geometry.Core.Interfaces.IGeometry, DiGi.Core.Interfaces.ISerializableObject, DiGi.Core.Interfaces.ICloneableObject<DiGi.Core.Interfaces.ISerializableObject>, DiGi.Core.Interfaces.ICloneableObject, DiGi.Core.Interfaces.IObject, DiGi.Geometry.Spatial.Interfaces.IGeometry3D, DiGi.Geometry.Spatial.Interfaces.IMovable3DInheritance System.Object → DiGi.Core.Classes.Object → DiGi.Core.Classes.SerializableObject → Geometry3D → CoordinateSystem3D
Implements DiGi.Geometry.Spatial.Interfaces.ICoordinateSystem3D, DiGi.Geometry.Core.Interfaces.ICoordinateSystem<Point3D>, DiGi.Geometry.Core.Interfaces.ICoordinateSystem, DiGi.Geometry.Core.Interfaces.IGeometry, DiGi.Core.Interfaces.ISerializableObject, DiGi.Core.Interfaces.ICloneableObject<DiGi.Core.Interfaces.ISerializableObject>, DiGi.Core.Interfaces.ICloneableObject, DiGi.Core.Interfaces.IObject, DiGi.Geometry.Spatial.Interfaces.IGeometry3D, DiGi.Geometry.Spatial.Interfaces.IMovable3D
Initializes a new instance of the CoordinateSystem3D class by copying the properties from an existing CoordinateSystem3D object.
public CoordinateSystem3D(DiGi.Geometry.Spatial.Classes.CoordinateSystem3D? coordinateSystem3D);coordinateSystem3D CoordinateSystem3D
The source CoordinateSystem3D object to copy data from.
Initializes a new instance of the CoordinateSystem3D class using the axes from an existing CoordinateSystem3D and a specified Point3D as the origin.
public CoordinateSystem3D(DiGi.Geometry.Spatial.Classes.CoordinateSystem3D? coordinateSystem3D, DiGi.Geometry.Spatial.Classes.Point3D? origin);coordinateSystem3D CoordinateSystem3D
The CoordinateSystem3D from which to copy the axis vectors.
origin Point3D
The Point3D that defines the origin of the coordinate system.
Initializes a new instance of the CoordinateSystem3D class with the specified origin and Z-axis.
public CoordinateSystem3D(DiGi.Geometry.Spatial.Classes.Point3D? origin, DiGi.Geometry.Spatial.Classes.Vector3D? axisZ);origin Point3D
The optional Point3D that defines the origin of the coordinate system.
axisZ Vector3D
The optional Vector3D that defines the direction of the Z-axis.
Initializes a new instance of the CoordinateSystem3D class using the specified origin, X-axis, and Y-axis.
public CoordinateSystem3D(DiGi.Geometry.Spatial.Classes.Point3D? origin, DiGi.Geometry.Spatial.Classes.Vector3D? axisX, DiGi.Geometry.Spatial.Classes.Vector3D? axisY);origin Point3D
The Point3D representing the origin of the coordinate system.
axisX Vector3D
The Vector3D representing the direction of the X-axis.
axisY Vector3D
The Vector3D representing the direction of the Y-axis.
Initializes a new instance of the CoordinateSystem3D class using the provided System.Text.Json.Nodes.JsonObject.
public CoordinateSystem3D(System.Text.Json.Nodes.JsonObject? jsonObject);jsonObject System.Text.Json.Nodes.JsonObject
The System.Text.Json.Nodes.JsonObject containing the data used to initialize this instance.
Gets the X-axis vector.
public DiGi.Geometry.Spatial.Classes.Vector3D? AxisX { get; }Vector3D
A Vector3D representing the X-axis, or null if it is not defined.
Gets the Y-axis vector.
public DiGi.Geometry.Spatial.Classes.Vector3D? AxisY { get; }Vector3D
A Vector3D representing the Y-axis, or null if it is not defined.
Gets the Z-axis vector.
public DiGi.Geometry.Spatial.Classes.Vector3D? AxisZ { get; }Vector3D
A Vector3D representing the Z-axis, or null if it is not defined.
Gets or sets the origin Point3D.
public DiGi.Geometry.Spatial.Classes.Point3D? Origin { get; set; }Implements Origin
Calculates the closest point on the line to the specified Point3D.
public DiGi.Geometry.Spatial.Classes.Point3D? ClosestPoint(DiGi.Geometry.Spatial.Classes.Point3D? point3D);point3D Point3D
The Point3D for which the closest point is calculated.
Point3D
The closest Point3D on the line, or null if the provided Point3D, origin, or axis Z is null.
Calculates the distance between the specified Point3D and the closest point on this object.
public double Distance(DiGi.Geometry.Spatial.Classes.Point3D? point3D);point3D Point3D
The Point3D to calculate the distance from.
System.Double
The distance as a System.Double, or System.Double.NaN if no closest point is found.
Retrieves the Vector3D associated with the specified SpatialAxis.
public DiGi.Geometry.Spatial.Classes.Vector3D? GetAxis(DiGi.Geometry.Spatial.Enums.SpatialAxis axis);axis SpatialAxis
The SpatialAxis to retrieve.
Vector3D
A Vector3D representing the axis, or null if the axis is undefined or invalid.
Inverts the direction of the Z and Y axes.
public void Inverse();Moves the object using the specified Vector3D? vector.
public override bool Move(DiGi.Geometry.Spatial.Classes.Vector3D? vector3D);vector3D Vector3D
The Vector3D? value representing the displacement.
Implements Move(Vector3D)
System.Boolean
A bool indicating whether the move operation was successful.
Represents the result of a 3D difference operation.
public class DifferenceResult3D : DiGi.Geometry.Spatial.Classes.BooleanOperationResult3D, DiGi.Geometry.Spatial.Interfaces.IDifferenceResult3D, DiGi.Geometry.Spatial.Interfaces.IBooleanOperationResult3D, DiGi.Core.Interfaces.ISerializableResult, DiGi.Core.Interfaces.IResult, DiGi.Core.Interfaces.IObject, DiGi.Core.Interfaces.ISerializableObject, DiGi.Core.Interfaces.ICloneableObject<DiGi.Core.Interfaces.ISerializableObject>, DiGi.Core.Interfaces.ICloneableObjectInheritance System.Object → DiGi.Core.Classes.Object → DiGi.Core.Classes.SerializableObject → BooleanOperationResult3D → DifferenceResult3D
Implements IDifferenceResult3D, IBooleanOperationResult3D, DiGi.Core.Interfaces.ISerializableResult, DiGi.Core.Interfaces.IResult, DiGi.Core.Interfaces.IObject, DiGi.Core.Interfaces.ISerializableObject, DiGi.Core.Interfaces.ICloneableObject<DiGi.Core.Interfaces.ISerializableObject>, DiGi.Core.Interfaces.ICloneableObject
Initializes a new instance of the DifferenceResult3D class.
public DifferenceResult3D();Initializes a new instance of the DifferenceResult3D class using another DifferenceResult3D instance.
public DifferenceResult3D(DiGi.Geometry.Spatial.Classes.DifferenceResult3D? differenceResult3D);differenceResult3D DifferenceResult3D
The DifferenceResult3D instance to copy from.
Initializes a new instance of the DifferenceResult3D class with the specified DiGi.Geometry.Spatial.Interfaces.IGeometry3D.
public DifferenceResult3D(DiGi.Geometry.Spatial.Interfaces.IGeometry3D? geometry3D);geometry3D DiGi.Geometry.Spatial.Interfaces.IGeometry3D
The DiGi.Geometry.Spatial.Interfaces.IGeometry3D to initialize the result with. This value can be null.
Initializes a new instance of the DifferenceResult3D class.
public DifferenceResult3D(System.Collections.Generic.IEnumerable<DiGi.Geometry.Spatial.Interfaces.IGeometry3D>? geometry3Ds);geometry3Ds System.Collections.Generic.IEnumerable<DiGi.Geometry.Spatial.Interfaces.IGeometry3D>
An optional collection of DiGi.Geometry.Spatial.Interfaces.IGeometry3D objects to be cloned and stored in the result.
Initializes a new instance of the DifferenceResult3D class using the specified System.Text.Json.Nodes.JsonObject.
public DifferenceResult3D(System.Text.Json.Nodes.JsonObject? jsonObject);jsonObject System.Text.Json.Nodes.JsonObject
The System.Text.Json.Nodes.JsonObject used to initialize the instance.
Gets the type of the boolean operation, which is Difference.
public override DiGi.Geometry.Core.Enums.BooleanOpertaionType BooleanOpertaionType { get; }Implements BooleanOpertaionType
Creates a copy of the current DifferenceResult3D instance.
public override DiGi.Core.Interfaces.ISerializableObject? Clone();Implements Clone()
DiGi.Core.Interfaces.ISerializableObject
A new DiGi.Core.Interfaces.ISerializableObject instance that is a clone of the current object.
Represents a three-dimensional ellipse defined on a plane.
public class Ellipse3D : DiGi.Geometry.Spatial.Classes.Planar<DiGi.Geometry.Planar.Classes.Ellipse2D>, DiGi.Geometry.Spatial.Interfaces.IEllipse3D, DiGi.Geometry.Spatial.Interfaces.IGeometry3D, DiGi.Geometry.Core.Interfaces.IGeometry, DiGi.Core.Interfaces.ISerializableObject, DiGi.Core.Interfaces.ICloneableObject<DiGi.Core.Interfaces.ISerializableObject>, DiGi.Core.Interfaces.ICloneableObject, DiGi.Core.Interfaces.IObject, DiGi.Geometry.Spatial.Interfaces.IMovable3D, DiGi.Geometry.Spatial.Interfaces.IBoundable3D, DiGi.Geometry.Core.Interfaces.IBoundable, DiGi.Geometry.Spatial.Interfaces.IClosedPlanarCurve3D, DiGi.Geometry.Spatial.Interfaces.IClosedCurve3D, DiGi.Geometry.Core.Interfaces.IClosedCurve, DiGi.Geometry.Core.Interfaces.ICurve, DiGi.Geometry.Spatial.Interfaces.ICurve3D, DiGi.Geometry.Spatial.Interfaces.IPlanarInheritance System.Object → DiGi.Core.Classes.Object → DiGi.Core.Classes.SerializableObject → Geometry3D → DiGi.Geometry.Spatial.Classes.Planar<Ellipse2D> → Ellipse3D
Implements DiGi.Geometry.Spatial.Interfaces.IEllipse3D, DiGi.Geometry.Spatial.Interfaces.IGeometry3D, DiGi.Geometry.Core.Interfaces.IGeometry, DiGi.Core.Interfaces.ISerializableObject, DiGi.Core.Interfaces.ICloneableObject<DiGi.Core.Interfaces.ISerializableObject>, DiGi.Core.Interfaces.ICloneableObject, DiGi.Core.Interfaces.IObject, DiGi.Geometry.Spatial.Interfaces.IMovable3D, DiGi.Geometry.Spatial.Interfaces.IBoundable3D, DiGi.Geometry.Core.Interfaces.IBoundable, DiGi.Geometry.Spatial.Interfaces.IClosedPlanarCurve3D, DiGi.Geometry.Spatial.Interfaces.IClosedCurve3D, DiGi.Geometry.Core.Interfaces.IClosedCurve, DiGi.Geometry.Core.Interfaces.ICurve, DiGi.Geometry.Spatial.Interfaces.ICurve3D, DiGi.Geometry.Spatial.Interfaces.IPlanar
Initializes a new instance of the Ellipse3D class using an existing Ellipse3D instance.
public Ellipse3D(DiGi.Geometry.Spatial.Classes.Ellipse3D? ellipse3D);ellipse3D Ellipse3D
The Ellipse3D instance to copy from.
Initializes a new instance of the Ellipse3D class using the specified Plane and Ellipse2D.
public Ellipse3D(DiGi.Geometry.Spatial.Classes.Plane? plane, DiGi.Geometry.Planar.Classes.Ellipse2D? ellipse2D);plane Plane
The Plane on which the ellipse is located.
ellipse2D Ellipse2D
The Ellipse2D that defines the geometry of the ellipse.
Initializes a new instance of the Ellipse3D class using the specified System.Text.Json.Nodes.JsonObject.
public Ellipse3D(System.Text.Json.Nodes.JsonObject? jsonObject);jsonObject System.Text.Json.Nodes.JsonObject
The System.Text.Json.Nodes.JsonObject used to initialize the instance.
Gets or sets the A value of the 2D geometry. Returns System.Double.NaN if the underlying geometry is null.
public double A { get; set; }System.Double
A System.Double representing the A component.
Gets or sets the double value for B from the associated 2D geometry. Returns double.NaN if the underlying geometry is null.
public double B { get; set; }Gets the center point of the geometry converted to a Point3D.
public DiGi.Geometry.Spatial.Classes.Point3D? Center { get; }Implements Center
Point3D
A Point3D representing the center, or null if the conversion cannot be performed.
Gets the direction of the ellipse as a Vector3D.
public DiGi.Geometry.Spatial.Classes.Vector3D? Direction { get; }Vector3D
The Vector3D representing the direction, or null if it cannot be determined.
Creates a copy of the current object.
public override DiGi.Core.Interfaces.ISerializableObject? Clone();Implements Clone()
DiGi.Core.Interfaces.ISerializableObject
An DiGi.Core.Interfaces.ISerializableObject that is a clone of the current instance.
Calculates the area of the 2D geometry.
public double GetArea();Implements GetArea()
System.Double
A System.Double representing the area, or System.Double.NaN if the 2D geometry is null.
Calculates the 3D bounding box of the geometry based on the associated plane.
public DiGi.Geometry.Spatial.Classes.BoundingBox3D? GetBoundingBox();Implements GetBoundingBox()
BoundingBox3D
A BoundingBox3D representing the bounding box, or null if the geometry is empty or the plane is not defined.
Retrieves the focal points of the geometry converted to 3D space.
public DiGi.Geometry.Spatial.Classes.Point3D[]? GetFocalPoints();Point3D[]
An array of Point3D objects representing the focal points, or null if the plane or geometry is not defined or no focal points exist.
Gets an internal point of the geometry converted to 3D space.
public DiGi.Geometry.Spatial.Classes.Point3D? GetInternalPoint(double tolerance=1E-06);tolerance System.Double
The System.Double tolerance value used for the calculation.
Implements GetInternalPoint(double)
Point3D
A Point3D representing the internal point if the plane and geometry are available; otherwise, null.
Calculates and returns the perimeter of the 2D geometry.
public double GetPerimeter();Implements GetPerimeter()
System.Double
A System.Double representing the perimeter, or System.Double.NaN if the underlying geometry is null.
Determines whether the specified Point3D is within range of the geometry, given a specific tolerance.
public bool InRange(DiGi.Geometry.Spatial.Classes.Point3D? point3D, double tolerance=1E-06);point3D Point3D
The nullable Point3D to evaluate.
tolerance System.Double
The System.Double distance tolerance used for the calculation.
Implements InRange(Point3D, double)
System.Boolean
A System.Boolean value indicating whether the point is within range.
Determines whether the specified Point3D is inside the geometry within a given tolerance.
public bool Inside(DiGi.Geometry.Spatial.Classes.Point3D? point3D, double tolerance=1E-06);point3D Point3D
The Point3D object to check.
tolerance System.Double
The double value representing the distance tolerance for the operation.
Implements Inside(Point3D, double)
System.Boolean
A bool indicating whether the point is inside the geometry.
Inverts the underlying 2D geometry if it is not null.
public void Inverse();Represents an ellipsoid geometry in 3D space.
public class Ellipsoid : DiGi.Geometry.Spatial.Classes.Geometry3D, DiGi.Geometry.Spatial.Interfaces.IEllipsoid, DiGi.Geometry.Spatial.Interfaces.IGeometry3D, DiGi.Geometry.Core.Interfaces.IGeometry, DiGi.Core.Interfaces.ISerializableObject, DiGi.Core.Interfaces.ICloneableObject<DiGi.Core.Interfaces.ISerializableObject>, DiGi.Core.Interfaces.ICloneableObject, DiGi.Core.Interfaces.IObject, DiGi.Geometry.Spatial.Interfaces.IMovable3D, DiGi.Geometry.Spatial.Interfaces.IBoundable3D, DiGi.Geometry.Core.Interfaces.IBoundableInheritance System.Object → DiGi.Core.Classes.Object → DiGi.Core.Classes.SerializableObject → Geometry3D → Ellipsoid
Implements DiGi.Geometry.Spatial.Interfaces.IEllipsoid, DiGi.Geometry.Spatial.Interfaces.IGeometry3D, DiGi.Geometry.Core.Interfaces.IGeometry, DiGi.Core.Interfaces.ISerializableObject, DiGi.Core.Interfaces.ICloneableObject<DiGi.Core.Interfaces.ISerializableObject>, DiGi.Core.Interfaces.ICloneableObject, DiGi.Core.Interfaces.IObject, DiGi.Geometry.Spatial.Interfaces.IMovable3D, DiGi.Geometry.Spatial.Interfaces.IBoundable3D, DiGi.Geometry.Core.Interfaces.IBoundable
Initializes a new instance of the Ellipsoid class by copying the properties from an existing Ellipsoid object.
public Ellipsoid(DiGi.Geometry.Spatial.Classes.Ellipsoid? ellipsoid);ellipsoid Ellipsoid
The Ellipsoid object to copy data from, or null to initialize a default instance.
Initializes a new instance of the Ellipsoid class with the specified plane and semi-axis lengths.
public Ellipsoid(DiGi.Geometry.Spatial.Classes.Plane? plane, double a, double b, double c);plane Plane
The Plane that defines the ellipsoid's orientation, or null.
The length of the first semi-axis as a System.Double.
The length of the second semi-axis as a System.Double.
The length of the third semi-axis as a System.Double.
Initializes a new instance of the Ellipsoid class with the specified center and semi-axes lengths.
public Ellipsoid(DiGi.Geometry.Spatial.Classes.Point3D? center, double a, double b, double c);center Point3D
The Point3D? coordinates of the center point.
The System.Double length of the first semi-axis.
The System.Double length of the second semi-axis.
The System.Double length of the third semi-axis.
Initializes a new instance of the Ellipsoid class using the provided System.Text.Json.Nodes.JsonObject.
public Ellipsoid(System.Text.Json.Nodes.JsonObject? jsonObject);jsonObject System.Text.Json.Nodes.JsonObject
The System.Text.Json.Nodes.JsonObject containing the data used to initialize this instance.
Gets the double value of A.
public double A { get; }Gets the double value of B.
public double B { get; }Gets the C constant of the plane equation as a System.Double.
public double C { get; }Gets the center point of the plane as a Point3D.
public DiGi.Geometry.Spatial.Classes.Point3D? Center { get; }Implements Center
Gets the X-axis direction vector of the plane.
public DiGi.Geometry.Spatial.Classes.Vector3D? DirectionA { get; }Vector3D
A Vector3D representing the first direction axis, or null if the plane is not defined.
Gets the direction vector B, which represents the Y-axis of the associated plane.
public DiGi.Geometry.Spatial.Classes.Vector3D? DirectionB { get; }Vector3D
A Vector3D representing the Y-axis of the plane, or null if no plane is defined.
Gets the direction vector for axis C, typically corresponding to the Z-axis of the associated plane.
public DiGi.Geometry.Spatial.Classes.Vector3D? DirectionC { get; }Vector3D
A Vector3D? representing the direction of axis C, or null if no plane is defined.
Gets the extent of the ellipsoid as a Vector3D.
public DiGi.Geometry.Spatial.Classes.Vector3D? Extent { get; }Implements Extent
Vector3D
A Vector3D representing the spatial extent, or null if not defined.
Calculates the bounding box of the object based on its center and extent.
public DiGi.Geometry.Spatial.Classes.BoundingBox3D? GetBoundingBox();Implements GetBoundingBox()
BoundingBox3D
A BoundingBox3D representing the bounding box, or null if the center or extent is not defined.
Calculates the focal points of the object.
public DiGi.Geometry.Spatial.Classes.Point3D[]? GetFocalPoints(double tolerance=1E-06);tolerance System.Double
The System.Double tolerance value used for calculations.
Point3D[]
An array of Point3D objects representing the focal points, or null if the center or directions are not defined.
Calculates a point in 3D space based on the specified theta and phi angles.
public DiGi.Geometry.Spatial.Classes.Point3D? GetPoint(double theta, double phi);theta System.Double
The theta angle as a System.Double.
phi System.Double
The phi angle as a System.Double.
Point3D
A Point3D if the plane axes are defined; otherwise, null.
Calculates the volume of the ellipsoid.
public double GetVolume();System.Double
A System.Double representing the calculated volume.
Determines whether the specified Point3D is inside the boundary within a given tolerance.
public bool Inside(DiGi.Geometry.Spatial.Classes.Point3D? point3D, double tolerance=1E-06);point3D Point3D
The Point3D to evaluate.
tolerance System.Double
A System.Double value representing the distance tolerance for the check.
System.Boolean
A System.Boolean indicating whether the point is inside the boundary.
Moves the object using the specified Vector3D? vector.
public override bool Move(DiGi.Geometry.Spatial.Classes.Vector3D? vector3D);vector3D Vector3D
The Vector3D? instance representing the movement vector.
Implements Move(Vector3D)
System.Boolean
A boolean value indicating whether the move operation was successful.
Implicitly converts a Sphere to an Ellipsoid.
public static DiGi.Geometry.Spatial.Classes.Ellipsoid? implicit operator DiGi.Geometry.Spatial.Classes.Ellipsoid?(DiGi.Geometry.Spatial.Classes.Sphere? sphere);sphere Sphere
The Sphere instance to convert.
Ellipsoid
An Ellipsoid created from the provided sphere, or null if the sphere is null.
Implicitly converts a Spheroid to an Ellipsoid.
public static DiGi.Geometry.Spatial.Classes.Ellipsoid? implicit operator DiGi.Geometry.Spatial.Classes.Ellipsoid?(DiGi.Geometry.Spatial.Classes.Spheroid? spheroid);spheroid Spheroid
The Spheroid instance to convert.
Ellipsoid
An Ellipsoid created from the provided spheroid, or null if the spheroid is null.
Represents an abstract base class for a 3D geometry created by extruding a surface along a specific vector.
public abstract class Extrusion<TSurface3D> : DiGi.Geometry.Spatial.Classes.Geometry3D, DiGi.Geometry.Spatial.Interfaces.IBoundable3D, DiGi.Geometry.Spatial.Interfaces.IGeometry3D, DiGi.Geometry.Core.Interfaces.IGeometry, DiGi.Core.Interfaces.ISerializableObject, DiGi.Core.Interfaces.ICloneableObject<DiGi.Core.Interfaces.ISerializableObject>, DiGi.Core.Interfaces.ICloneableObject, DiGi.Core.Interfaces.IObject, DiGi.Geometry.Spatial.Interfaces.IMovable3D, DiGi.Geometry.Core.Interfaces.IBoundable
where TSurface3D : DiGi.Geometry.Spatial.Interfaces.ISurface3DTSurface3D
The type of the surface being extruded, which must implement DiGi.Geometry.Spatial.Interfaces.ISurface3D.
Inheritance System.Object → DiGi.Core.Classes.Object → DiGi.Core.Classes.SerializableObject → Geometry3D → Extrusion<TSurface3D>
Derived
↳ PolygonalFaceExtrusion
Implements DiGi.Geometry.Spatial.Interfaces.IBoundable3D, DiGi.Geometry.Spatial.Interfaces.IGeometry3D, DiGi.Geometry.Core.Interfaces.IGeometry, DiGi.Core.Interfaces.ISerializableObject, DiGi.Core.Interfaces.ICloneableObject<DiGi.Core.Interfaces.ISerializableObject>, DiGi.Core.Interfaces.ICloneableObject, DiGi.Core.Interfaces.IObject, DiGi.Geometry.Spatial.Interfaces.IMovable3D, DiGi.Geometry.Core.Interfaces.IBoundable
Initializes a new instance of the Extrusion<TSurface3D> class by cloning an existing Extrusion<TSurface3D> object.
public Extrusion(DiGi.Geometry.Spatial.Classes.Extrusion<TSurface3D>? extrusion);extrusion DiGi.Geometry.Spatial.Classes.Extrusion<TSurface3D>
The Extrusion<TSurface3D> object to clone from.
Initializes a new instance of the Extrusion<TSurface3D> class using the specified System.Text.Json.Nodes.JsonObject.
public Extrusion(System.Text.Json.Nodes.JsonObject? jsonObject);jsonObject System.Text.Json.Nodes.JsonObject
The System.Text.Json.Nodes.JsonObject used to initialize the extrusion.
Initializes a new instance of the Extrusion<TSurface3D> class with the specified TSurface3D surface and Vector3D vector.
public Extrusion(TSurface3D? surface, DiGi.Geometry.Spatial.Classes.Vector3D? vector);surface TSurface3D
The TSurface3D surface to extrude.
vector Vector3D
The Vector3D vector defining the extrusion direction and distance.
Gets the 3D surface.
public TSurface3D? Surface { get; }TSurface3D
The TSurface3D instance representing the surface, or null if it is not defined.
Gets the associated Vector3D.
public DiGi.Geometry.Spatial.Classes.Vector3D? Vector { get; }Vector3D
A Vector3D object, or null if no vector is defined.
Calculates the bounding box of the object, incorporating the surface and any associated vector points.
public DiGi.Geometry.Spatial.Classes.BoundingBox3D? GetBoundingBox();Implements GetBoundingBox()
BoundingBox3D
A BoundingBox3D representing the calculated bounding box, or null if no bounding box is available.
Moves the object by the specified Vector3D? vector.
public override bool Move(DiGi.Geometry.Spatial.Classes.Vector3D? vector3D);vector3D Vector3D
The Vector3D? value representing the displacement.
Implements Move(Vector3D)
System.Boolean
A bool indicating whether the move operation was successful.
Represents an abstract base class for 3D geometry objects.
public abstract class Geometry3D : DiGi.Core.Classes.SerializableObject, DiGi.Geometry.Spatial.Interfaces.IGeometry3D, DiGi.Geometry.Core.Interfaces.IGeometry, DiGi.Core.Interfaces.ISerializableObject, DiGi.Core.Interfaces.ICloneableObject<DiGi.Core.Interfaces.ISerializableObject>, DiGi.Core.Interfaces.ICloneableObject, DiGi.Core.Interfaces.IObject, DiGi.Geometry.Spatial.Interfaces.IMovable3DInheritance System.Object → DiGi.Core.Classes.Object → DiGi.Core.Classes.SerializableObject → Geometry3D
Derived
↳ BoundingBox3D
↳ CoordinateSystem3D
↳ Ellipsoid
↳ Extrusion<TSurface3D>
↳ Line3D
↳ Planar<T>
↳ Plane
↳ Polyhedron<TPolygonalFace3D>
↳ Polyline3D
↳ Ray3D
↳ Segment3D
↳ Segmentable3D
↳ Sphere
↳ Spheroid
↳ Triangle3D
Implements DiGi.Geometry.Spatial.Interfaces.IGeometry3D, DiGi.Geometry.Core.Interfaces.IGeometry, DiGi.Core.Interfaces.ISerializableObject, DiGi.Core.Interfaces.ICloneableObject<DiGi.Core.Interfaces.ISerializableObject>, DiGi.Core.Interfaces.ICloneableObject, DiGi.Core.Interfaces.IObject, DiGi.Geometry.Spatial.Interfaces.IMovable3D
Initializes a new instance of the Geometry3D class.
public Geometry3D();Initializes a new instance of the Geometry3D class using the specified Geometry3D instance.
public Geometry3D(DiGi.Geometry.Spatial.Classes.Geometry3D? geometry3D);geometry3D Geometry3D
The Geometry3D instance to copy from.
Initializes a new instance of the Geometry3D class using the specified System.Text.Json.Nodes.JsonObject.
public Geometry3D(System.Text.Json.Nodes.JsonObject? jsonObject);jsonObject System.Text.Json.Nodes.JsonObject
The System.Text.Json.Nodes.JsonObject used to initialize the instance.
Moves the object by the specified Vector3D.
public abstract bool Move(DiGi.Geometry.Spatial.Classes.Vector3D? vector3D);vector3D Vector3D
The optional Vector3D representing the displacement vector.
Implements Move(Vector3D)
System.Boolean
A System.Boolean value indicating whether the move operation was successful.
Represents the result of a 3D intersection operation.
public class IntersectionResult3D : DiGi.Geometry.Spatial.Classes.BooleanOperationResult3D, DiGi.Geometry.Spatial.Interfaces.IIntersectionResult3D, DiGi.Geometry.Core.Interfaces.IIntersectionResult, DiGi.Geometry.Core.Interfaces.IBooleanOperationResult, DiGi.Core.Interfaces.ISerializableResult, DiGi.Core.Interfaces.IResult, DiGi.Core.Interfaces.IObject, DiGi.Core.Interfaces.ISerializableObject, DiGi.Core.Interfaces.ICloneableObject<DiGi.Core.Interfaces.ISerializableObject>, DiGi.Core.Interfaces.ICloneableObjectInheritance System.Object → DiGi.Core.Classes.Object → DiGi.Core.Classes.SerializableObject → BooleanOperationResult3D → IntersectionResult3D
Implements DiGi.Geometry.Spatial.Interfaces.IIntersectionResult3D, DiGi.Geometry.Core.Interfaces.IIntersectionResult, IBooleanOperationResult, DiGi.Core.Interfaces.ISerializableResult, DiGi.Core.Interfaces.IResult, DiGi.Core.Interfaces.IObject, DiGi.Core.Interfaces.ISerializableObject, DiGi.Core.Interfaces.ICloneableObject<DiGi.Core.Interfaces.ISerializableObject>, DiGi.Core.Interfaces.ICloneableObject
Initializes a new instance of the IntersectionResult3D class.
public IntersectionResult3D();Initializes a new instance of the IntersectionResult3D class using another IntersectionResult3D instance.
public IntersectionResult3D(DiGi.Geometry.Spatial.Classes.IntersectionResult3D? intersectionResult3D);intersectionResult3D IntersectionResult3D
The IntersectionResult3D instance to copy from.
Initializes a new instance of the IntersectionResult3D class with the specified DiGi.Geometry.Spatial.Interfaces.IGeometry3D.
public IntersectionResult3D(DiGi.Geometry.Spatial.Interfaces.IGeometry3D? geometry3D);geometry3D DiGi.Geometry.Spatial.Interfaces.IGeometry3D
The DiGi.Geometry.Spatial.Interfaces.IGeometry3D to initialize the result with. This value can be null.
Initializes a new instance of the IntersectionResult3D class.
public IntersectionResult3D(System.Collections.Generic.IEnumerable<DiGi.Geometry.Spatial.Interfaces.IGeometry3D>? geometry3Ds);geometry3Ds System.Collections.Generic.IEnumerable<DiGi.Geometry.Spatial.Interfaces.IGeometry3D>
An optional collection of DiGi.Geometry.Spatial.Interfaces.IGeometry3D objects to be cloned and stored in the result.
Initializes a new instance of the IntersectionResult3D class using the specified System.Text.Json.Nodes.JsonObject.
public IntersectionResult3D(System.Text.Json.Nodes.JsonObject? jsonObject);jsonObject System.Text.Json.Nodes.JsonObject
The System.Text.Json.Nodes.JsonObject used to initialize the instance.
Gets the type of the boolean operation, which is Intersection.
public override DiGi.Geometry.Core.Enums.BooleanOpertaionType BooleanOpertaionType { get; }Implements BooleanOpertaionType
Creates a copy of the current IntersectionResult3D instance.
public override DiGi.Core.Interfaces.ISerializableObject? Clone();Implements Clone()
DiGi.Core.Interfaces.ISerializableObject
A new DiGi.Core.Interfaces.ISerializableObject instance that is a clone of the current object.
Represents a line in 3D space defined by an origin point and a direction vector.
public class Line3D : DiGi.Geometry.Spatial.Classes.Geometry3D, DiGi.Geometry.Spatial.Interfaces.ILinear3D, DiGi.Geometry.Spatial.Interfaces.IMovable3D, DiGi.Geometry.Core.Interfaces.ICurve, DiGi.Geometry.Core.Interfaces.IGeometry, DiGi.Core.Interfaces.ISerializableObject, DiGi.Core.Interfaces.ICloneableObject<DiGi.Core.Interfaces.ISerializableObject>, DiGi.Core.Interfaces.ICloneableObject, DiGi.Core.Interfaces.IObject, DiGi.Geometry.Spatial.Interfaces.ITransformable3D, DiGi.Geometry.Core.Interfaces.ITransformable<DiGi.Geometry.Spatial.Interfaces.ITransform3D>, DiGi.Geometry.Core.Interfaces.ITransformableInheritance System.Object → DiGi.Core.Classes.Object → DiGi.Core.Classes.SerializableObject → Geometry3D → Line3D
Implements DiGi.Geometry.Spatial.Interfaces.ILinear3D, DiGi.Geometry.Spatial.Interfaces.IMovable3D, DiGi.Geometry.Core.Interfaces.ICurve, DiGi.Geometry.Core.Interfaces.IGeometry, DiGi.Core.Interfaces.ISerializableObject, DiGi.Core.Interfaces.ICloneableObject<DiGi.Core.Interfaces.ISerializableObject>, DiGi.Core.Interfaces.ICloneableObject, DiGi.Core.Interfaces.IObject, DiGi.Geometry.Spatial.Interfaces.ITransformable3D, DiGi.Geometry.Core.Interfaces.ITransformable<DiGi.Geometry.Spatial.Interfaces.ITransform3D>, DiGi.Geometry.Core.Interfaces.ITransformable
Initializes a new instance of the Line3D class by cloning an existing Line3D object.
public Line3D(DiGi.Geometry.Spatial.Classes.Line3D? line3D);line3D Line3D
The source Line3D object to clone.
Initializes a new instance of the Line3D class using two Point3D points to define the origin and direction.
public Line3D(DiGi.Geometry.Spatial.Classes.Point3D? point3D_1, DiGi.Geometry.Spatial.Classes.Point3D? point3D_2);point3D_1 Point3D
The Point3D that defines the origin of the line.
point3D_2 Point3D
The Point3D used to determine the unit direction vector from the origin.
Initializes a new instance of the Line3D class with the specified origin point and direction vector.
public Line3D(DiGi.Geometry.Spatial.Classes.Point3D? origin, DiGi.Geometry.Spatial.Classes.Vector3D? direction);origin Point3D
The Point3D that defines the origin of the line.
direction Vector3D
The Vector3D that defines the direction of the line.
Initializes a new instance of the Line3D class.
public Line3D(System.Text.Json.Nodes.JsonObject? jsonObject);jsonObject System.Text.Json.Nodes.JsonObject
The System.Text.Json.Nodes.JsonObject used to initialize the instance.
Gets or sets the Vector3D representing the direction.
public DiGi.Geometry.Spatial.Classes.Vector3D? Direction { get; set; }Implements Direction
Vector3D
A nullable Vector3D that defines the direction.
Gets or sets the origin point of the 3D line.
public DiGi.Geometry.Spatial.Classes.Point3D? Origin { get; set; }Point3D
A Point3D representing the origin, or null if not specified.
Creates a copy of the current object.
public override DiGi.Core.Interfaces.ISerializableObject? Clone();Implements Clone()
DiGi.Core.Interfaces.ISerializableObject
A new DiGi.Core.Interfaces.ISerializableObject instance that is a clone of the current object, or null.
Calculates the closest point on the geometry to the specified Point3D.
public DiGi.Geometry.Spatial.Classes.Point3D? ClosestPoint(DiGi.Geometry.Spatial.Classes.Point3D? point3D);point3D Point3D
The Point3D for which the closest point is calculated.
Implements ClosestPoint(Point3D)
Point3D
The closest Point3D on the geometry, or null if it cannot be determined.
Determines whether this linear object is collinear with the specified DiGi.Geometry.Spatial.Interfaces.ILinear3D object within a given tolerance.
public bool Collinear(DiGi.Geometry.Spatial.Interfaces.ILinear3D? linear3D, double tolerance=1E-06);linear3D DiGi.Geometry.Spatial.Interfaces.ILinear3D
The DiGi.Geometry.Spatial.Interfaces.ILinear3D object to check for collinearity.
tolerance System.Double
A System.Double value representing the tolerance used for the comparison.
Implements Collinear(ILinear3D, double)
System.Boolean
A System.Boolean value indicating whether the objects are collinear; returns false if either linear object is null.
Calculates the distance between a specified Point3D and this object.
public double Distance(DiGi.Geometry.Spatial.Classes.Point3D? point3D);point3D Point3D
The Point3D instance to calculate the distance from.
Implements Distance(Point3D)
System.Double
A System.Double representing the distance, or System.Double.NaN if the provided Point3D is null or cannot be projected.
Determines whether the specified System.Object is equal to the current Line3D.
public override bool Equals(object obj);obj System.Object
The System.Object to compare with the current Line3D.
System.Boolean
true if the specified System.Object is a Line3D and has the same origin and direction as the current instance; otherwise, false.
Returns a hash code for the current object based on its origin and direction.
public override int GetHashCode();System.Int32
An System.Int32 representing the hash code of the instance.
Calculates the intersection point between this object and the specified Line3D.
public DiGi.Geometry.Spatial.Classes.Point3D? IntersectionPoint(DiGi.Geometry.Spatial.Classes.Line3D? line3D, double tolerance=1E-06);line3D Line3D
The Line3D to intersect with.
tolerance System.Double
A System.Double value representing the distance tolerance for the intersection calculation.
Point3D
A Point3D representing the intersection point if one exists; otherwise, null.
Calculates the intersection point between this object and a specified Segment3D.
public DiGi.Geometry.Spatial.Classes.Point3D? IntersectionPoint(DiGi.Geometry.Spatial.Classes.Segment3D? segment3D, double tolerance=1E-06);segment3D Segment3D
The Segment3D to intersect with.
tolerance System.Double
The System.Double tolerance used for the intersection calculation.
Point3D
A Point3D representing the intersection point if it exists and lies on the segment; otherwise, null.
Moves the object by the specified Vector3D.
public override bool Move(DiGi.Geometry.Spatial.Classes.Vector3D? vector3D);vector3D Vector3D
The Vector3D that defines the translation.
Implements Move(Vector3D)
System.Boolean
A System.Boolean value indicating whether the move operation was successful.
Determines whether the specified Point3D is located on the object within a given tolerance.
public bool On(DiGi.Geometry.Spatial.Classes.Point3D? point3D, double tolerance=1E-06);point3D Point3D
The Point3D to evaluate.
tolerance System.Double
The System.Double value representing the maximum allowable distance for the point to be considered on the object.
Implements On(Point3D, double)
System.Boolean
A System.Boolean value indicating whether the Point3D is within the specified tolerance of the object.
Projects a given Point3D onto the line defined by the origin and direction.
public DiGi.Geometry.Spatial.Classes.Point3D? Project(DiGi.Geometry.Spatial.Classes.Point3D? point3D);point3D Point3D
The Point3D to project.
Implements Project(Point3D)
Point3D
The projected Point3D, or null if the projection cannot be determined.
Transforms the origin and direction of the object using the specified DiGi.Geometry.Spatial.Interfaces.ITransform3D transformation.
public bool Transform(DiGi.Geometry.Spatial.Interfaces.ITransform3D? transform);transform DiGi.Geometry.Spatial.Interfaces.ITransform3D
The DiGi.Geometry.Spatial.Interfaces.ITransform3D instance to apply for the transformation.
System.Boolean
A System.Boolean value indicating whether the transformation was successfully applied; returns false if the DiGi.Geometry.Spatial.Interfaces.ITransform3D transform, origin, or direction is null.
Indicates whether the two specified Line3D objects are equal.
public static bool operator ==(DiGi.Geometry.Spatial.Classes.Line3D? line3D_1, DiGi.Geometry.Spatial.Classes.Line3D? line3D_2);line3D_1 Line3D
The first Line3D object to compare.
line3D_2 Line3D
The second Line3D object to compare.
System.Boolean
true if the objects are equal; otherwise, false.
Indicates whether the two specified Line3D objects are not equal.
public static bool operator !=(DiGi.Geometry.Spatial.Classes.Line3D? line3D_1, DiGi.Geometry.Spatial.Classes.Line3D? line3D_2);line3D_1 Line3D
The first Line3D object to compare.
line3D_2 Line3D
The second Line3D object to compare.
System.Boolean
true if the objects are not equal; otherwise, false.
Represents a three-dimensional mesh composed of Point3D vertices.
public class Mesh3D : DiGi.Geometry.Core.Classes.Mesh<DiGi.Geometry.Spatial.Classes.Point3D>, DiGi.Geometry.Spatial.Interfaces.IGeometry3D, DiGi.Geometry.Core.Interfaces.IGeometry, DiGi.Core.Interfaces.ISerializableObject, DiGi.Core.Interfaces.ICloneableObject<DiGi.Core.Interfaces.ISerializableObject>, DiGi.Core.Interfaces.ICloneableObject, DiGi.Core.Interfaces.IObject, DiGi.Geometry.Spatial.Interfaces.IMovable3D, DiGi.Geometry.Spatial.Interfaces.IBoundable3D, DiGi.Geometry.Core.Interfaces.IBoundable, DiGi.Geometry.Spatial.Interfaces.ICollectable3D, DiGi.Geometry.Core.Interfaces.ICollectableInheritance System.Object → DiGi.Core.Classes.Object → DiGi.Core.Classes.SerializableObject → DiGi.Geometry.Core.Classes.Mesh<Point3D> → Mesh3D
Implements DiGi.Geometry.Spatial.Interfaces.IGeometry3D, DiGi.Geometry.Core.Interfaces.IGeometry, DiGi.Core.Interfaces.ISerializableObject, DiGi.Core.Interfaces.ICloneableObject<DiGi.Core.Interfaces.ISerializableObject>, DiGi.Core.Interfaces.ICloneableObject, DiGi.Core.Interfaces.IObject, DiGi.Geometry.Spatial.Interfaces.IMovable3D, DiGi.Geometry.Spatial.Interfaces.IBoundable3D, DiGi.Geometry.Core.Interfaces.IBoundable, DiGi.Geometry.Spatial.Interfaces.ICollectable3D, DiGi.Geometry.Core.Interfaces.ICollectable
Initializes a new instance of the Mesh3D class by copying an existing Mesh3D instance.
public Mesh3D(DiGi.Geometry.Spatial.Classes.Mesh3D? mesh3D);mesh3D Mesh3D
The Mesh3D instance to copy from.
Initializes a new instance of the Mesh3D class using the specified collection of Point3D points and integer array indexes.
public Mesh3D(System.Collections.Generic.IEnumerable<DiGi.Geometry.Spatial.Classes.Point3D>? points, System.Collections.Generic.IEnumerable<int[]>? indexes);points System.Collections.Generic.IEnumerable<Point3D>
An System.Collections.Generic.IEnumerable<> of Point3D objects representing the vertices of the mesh.
indexes System.Collections.Generic.IEnumerable<System.Int32[]>
An System.Collections.Generic.IEnumerable<> of System.Int32 arrays representing the vertex indices for each face of the mesh.
Initializes a new instance of the Mesh3D class from prebuilt lists.
internal Mesh3D(System.Collections.Generic.List<DiGi.Geometry.Spatial.Classes.Point3D>? point3Ds, System.Collections.Generic.List<int[]>? indexes, bool clone);point3Ds System.Collections.Generic.List<Point3D>
The System.Collections.Generic.List<> containing the vertices of the mesh.
indexes System.Collections.Generic.List<System.Int32[]>
The System.Collections.Generic.List<> of int[] defining the triangle indices of the mesh.
clone System.Boolean
When true, the inputs are defensively copied and validated; when false, the supplied lists are adopted directly without cloning. Use false only when the caller owns freshly created, valid data that is not shared.
Initializes a new instance of the Mesh3D class using the provided System.Text.Json.Nodes.JsonObject.
public Mesh3D(System.Text.Json.Nodes.JsonObject? jsonObject);jsonObject System.Text.Json.Nodes.JsonObject
The System.Text.Json.Nodes.JsonObject containing the data used to initialize the mesh.
Creates a copy of the current object.
public override DiGi.Core.Interfaces.ISerializableObject? Clone();Implements Clone()
DiGi.Core.Interfaces.ISerializableObject
A new DiGi.Core.Interfaces.ISerializableObject instance that is a clone of the current object, or null.
Calculates the total surface area of the mesh as the sum of the areas of its triangles.
Uses scalar coordinate arithmetic only, without allocating intermediate vector objects.
public double GetArea();System.Double
A System.Double representing the total surface area, or System.Double.NaN if the points or indexes are unavailable.
Retrieves a list of auxiliary segments based on the available points and indexes.
public System.Collections.Generic.List<DiGi.Geometry.Spatial.Classes.Segment3D>? GetAuxiliarySegments();System.Collections.Generic.List<Segment3D>
A System.Collections.Generic.List<> containing the auxiliary segments, or null if the points, indexes, or auxiliary index data are unavailable.
Retrieves the boundary edges of the geometry as a list of polyloops.
public System.Collections.Generic.List<DiGi.Geometry.Spatial.Classes.Polyloop>? GetBoundaryEdges();System.Collections.Generic.List<Polyloop>
A System.Collections.Generic.List<> containing the boundary edges if they are successfully calculated; otherwise, null.
Retrieves the boundary edges as a list of Polyloop.
public System.Collections.Generic.List<DiGi.Geometry.Spatial.Classes.Polyloop>? GetBoundaryEdges(out System.Collections.Generic.List<DiGi.Geometry.Spatial.Classes.Segment3D>? auxiliarySegments);auxiliarySegments System.Collections.Generic.List<Segment3D>
When called, contains a System.Collections.Generic.List<> of auxiliary segments, or null if none are found.
System.Collections.Generic.List<Polyloop>
A System.Collections.Generic.List<> containing the boundary edges, or null if the points or indexes are not available.
Calculates and returns the bounding box for the set of points.
public DiGi.Geometry.Spatial.Classes.BoundingBox3D? GetBoundingBox();Implements GetBoundingBox()
BoundingBox3D
A BoundingBox3D representing the bounding box, or null if the points are not available.
Retrieves the Triangle3D at the specified index.
public DiGi.Geometry.Spatial.Classes.Triangle3D? GetTriangle(int index);index System.Int32
The zero-based index of the triangle to retrieve as an System.Int32.
Triangle3D
A Triangle3D object if the index is valid and data exists; otherwise, null.
Retrieves a list of Triangle3D objects based on the available points and indexes.
public System.Collections.Generic.List<DiGi.Geometry.Spatial.Classes.Triangle3D>? GetTriangles();System.Collections.Generic.List<Triangle3D>
A System.Collections.Generic.List<> containing the triangles if the data is valid; otherwise, null.
Calculates the enclosed volume of the mesh using the divergence theorem (sum of signed tetrahedron volumes relative to the origin).
The result is only meaningful for a closed mesh with consistently oriented triangles; use IsClosed() to verify closedness first.
public double GetVolume();System.Double
A System.Double representing the absolute enclosed volume, or System.Double.NaN if the points or indexes are unavailable.
Moves all points by the specified Vector3D offset.
public bool Move(DiGi.Geometry.Spatial.Classes.Vector3D? vector2D);vector2D Vector3D
The Vector3D? translation vector used to move the points.
Implements Move(Vector3D)
System.Boolean
True if the operation was successful; otherwise, false.
Transforms the points using the specified 3D transformation.
public bool Transform(DiGi.Geometry.Spatial.Interfaces.ITransform3D? transform);transform DiGi.Geometry.Spatial.Interfaces.ITransform3D
The DiGi.Geometry.Spatial.Interfaces.ITransform3D object used to perform the transformation.
System.Boolean
A System.Boolean value indicating whether the transformation was successfully applied; returns false if the DiGi.Geometry.Spatial.Interfaces.ITransform3D transform or the points collection is null.
Represents an abstract 3D geometry that exists on a plane and is associated with a corresponding 2D geometry of type T.
public abstract class Planar<T> : DiGi.Geometry.Spatial.Classes.Geometry3D, DiGi.Geometry.Spatial.Interfaces.IPlanar<T>, DiGi.Geometry.Spatial.Interfaces.IPlanar, DiGi.Geometry.Spatial.Interfaces.IGeometry3D, DiGi.Geometry.Core.Interfaces.IGeometry, DiGi.Core.Interfaces.ISerializableObject, DiGi.Core.Interfaces.ICloneableObject<DiGi.Core.Interfaces.ISerializableObject>, DiGi.Core.Interfaces.ICloneableObject, DiGi.Core.Interfaces.IObject, DiGi.Geometry.Spatial.Interfaces.IMovable3D, DiGi.Geometry.Spatial.Interfaces.IFlippable
where T : DiGi.Geometry.Planar.Interfaces.IGeometry2DT
The type of the 2D geometry, which must implement the DiGi.Geometry.Planar.Interfaces.IGeometry2D interface.
Inheritance System.Object → DiGi.Core.Classes.Object → DiGi.Core.Classes.SerializableObject → Geometry3D → Planar<T>
Derived
↳ Ellipse3D
↳ Polygon3D
↳ PolygonalFace3D
↳ Rectangle3D
Implements DiGi.Geometry.Spatial.Interfaces.IPlanar<T>, DiGi.Geometry.Spatial.Interfaces.IPlanar, DiGi.Geometry.Spatial.Interfaces.IGeometry3D, DiGi.Geometry.Core.Interfaces.IGeometry, DiGi.Core.Interfaces.ISerializableObject, DiGi.Core.Interfaces.ICloneableObject<DiGi.Core.Interfaces.ISerializableObject>, DiGi.Core.Interfaces.ICloneableObject, DiGi.Core.Interfaces.IObject, DiGi.Geometry.Spatial.Interfaces.IMovable3D, DiGi.Geometry.Spatial.Interfaces.IFlippable
Initializes a new instance of the Planar<T> class by cloning an existing Planar<T> instance.
public Planar(DiGi.Geometry.Spatial.Classes.Planar<T>? planar);planar DiGi.Geometry.Spatial.Classes.Planar<T>
The source Planar<T> instance to copy from.
Initializes a new instance of the Planar<T> class using the specified Plane.
public Planar(DiGi.Geometry.Spatial.Classes.Plane? plane);plane Plane
The Plane used to initialize the planar object.
Initializes a new instance of the Planar<T> class.
public Planar(DiGi.Geometry.Spatial.Classes.Plane? plane, T? geometry2D);plane Plane
The Plane that defines the planar surface.
geometry2D T
The 2D geometry of type <typeparam ref="T" /> to be associated with this instance.
Initializes a new instance of the Planar<T> class from a prebuilt plane and 2D geometry.
internal Planar(DiGi.Geometry.Spatial.Classes.Plane? plane, T? geometry2D, bool clone);plane Plane
The Plane that defines the planar surface.
geometry2D T
The 2D geometry of type T to be associated with this instance.
clone System.Boolean
When true, the inputs are defensively cloned; when false, the supplied instances are adopted directly without cloning. Use false only when the caller owns freshly created instances that are not shared.
Initializes a new instance of the Planar<T> class using the specified System.Text.Json.Nodes.JsonObject.
public Planar(System.Text.Json.Nodes.JsonObject? jsonObject);jsonObject System.Text.Json.Nodes.JsonObject
The System.Text.Json.Nodes.JsonObject used to initialize the instance.
Gets the 2D geometry representation.
public T? Geometry2D { get; }Implements Geometry2D
Gets the Plane associated with this object.
public DiGi.Geometry.Spatial.Classes.Plane? Plane { get; }Implements Plane
Plane
A Plane instance if one exists; otherwise, null.
Flips the orientation of the plane based on the specified primary and secondary axes.
public bool Flip(DiGi.Geometry.Spatial.Enums.SpatialAxis prmiaryAxis=DiGi.Geometry.Spatial.Enums.SpatialAxis.Z, DiGi.Geometry.Spatial.Enums.SpatialAxis secondaryAxis=DiGi.Geometry.Spatial.Enums.SpatialAxis.X);prmiaryAxis SpatialAxis
The SpatialAxis representing the primary axis for the flip operation.
secondaryAxis SpatialAxis
The SpatialAxis representing the secondary axis for the flip operation.
Implements Flip(SpatialAxis, SpatialAxis)
System.Boolean
A System.Boolean value indicating whether the flip operation was successful.
Moves the object based on the provided Vector3D vector.
public override bool Move(DiGi.Geometry.Spatial.Classes.Vector3D? vector3D);vector3D Vector3D
The optional Vector3D value specifying the direction and distance to move.
Implements Move(Vector3D)
System.Boolean
A boolean value indicating whether the movement was successful.
Represents the result of a planar intersection operation in 3D space.
public class PlanarIntersectionResult : DiGi.Geometry.Spatial.Classes.PlanarResult, DiGi.Geometry.Spatial.Interfaces.IIntersectionResult3D, DiGi.Geometry.Core.Interfaces.IIntersectionResult, DiGi.Geometry.Core.Interfaces.IBooleanOperationResult, DiGi.Core.Interfaces.ISerializableResult, DiGi.Core.Interfaces.IResult, DiGi.Core.Interfaces.IObject, DiGi.Core.Interfaces.ISerializableObject, DiGi.Core.Interfaces.ICloneableObject<DiGi.Core.Interfaces.ISerializableObject>, DiGi.Core.Interfaces.ICloneableObjectInheritance System.Object → DiGi.Core.Classes.Object → DiGi.Core.Classes.SerializableObject → PlanarResult → PlanarIntersectionResult
Implements DiGi.Geometry.Spatial.Interfaces.IIntersectionResult3D, DiGi.Geometry.Core.Interfaces.IIntersectionResult, IBooleanOperationResult, DiGi.Core.Interfaces.ISerializableResult, DiGi.Core.Interfaces.IResult, DiGi.Core.Interfaces.IObject, DiGi.Core.Interfaces.ISerializableObject, DiGi.Core.Interfaces.ICloneableObject<DiGi.Core.Interfaces.ISerializableObject>, DiGi.Core.Interfaces.ICloneableObject
Initializes a new instance of the PlanarIntersectionResult class.
public PlanarIntersectionResult();Initializes a new instance of the PlanarIntersectionResult class using another PlanarIntersectionResult instance.
public PlanarIntersectionResult(DiGi.Geometry.Spatial.Classes.PlanarIntersectionResult? planarIntersectionResult);planarIntersectionResult PlanarIntersectionResult
The PlanarIntersectionResult instance to copy from.
Initializes a new instance of the PlanarIntersectionResult class using the specified Plane.
public PlanarIntersectionResult(DiGi.Geometry.Spatial.Classes.Plane? plane);plane Plane
The Plane used to initialize the result.
Initializes a new instance of the PlanarIntersectionResult class.
public PlanarIntersectionResult(DiGi.Geometry.Spatial.Classes.Plane? plane, DiGi.Geometry.Planar.Interfaces.IGeometry2D? geometry2D);plane Plane
The Plane used for the intersection.
geometry2D DiGi.Geometry.Planar.Interfaces.IGeometry2D
The DiGi.Geometry.Planar.Interfaces.IGeometry2D resulting from the intersection.
Initializes a new instance of the PlanarIntersectionResult class with the specified plane and a collection of 2D geometries.
public PlanarIntersectionResult(DiGi.Geometry.Spatial.Classes.Plane? plane, System.Collections.Generic.IEnumerable<DiGi.Geometry.Planar.Interfaces.IGeometry2D>? geometry2Ds);plane Plane
The Plane that defines the planar intersection, or null if not applicable.
geometry2Ds System.Collections.Generic.IEnumerable<DiGi.Geometry.Planar.Interfaces.IGeometry2D>
An System.Collections.Generic.IEnumerable<> containing the 2D geometries resulting from the intersection, or null if no geometries were found.
Initializes a new instance of the PlanarIntersectionResult class using the specified System.Text.Json.Nodes.JsonObject.
public PlanarIntersectionResult(System.Text.Json.Nodes.JsonObject? jsonObject);jsonObject System.Text.Json.Nodes.JsonObject
The System.Text.Json.Nodes.JsonObject used to initialize the current instance.
Determines whether an intersection exists.
public bool Any();Implements Any()
System.Boolean
A System.Boolean value that is true if the count of intersecting elements is greater than zero; otherwise, false.
Creates a copy of the current PlanarIntersectionResult instance.
public override DiGi.Core.Interfaces.ISerializableObject? Clone();Implements Clone()
DiGi.Core.Interfaces.ISerializableObject
An DiGi.Core.Interfaces.ISerializableObject that is a clone of the current instance.
Represents an abstract base class for results that are defined on a 2D plane.
public abstract class PlanarResult : DiGi.Core.Classes.SerializableObject, DiGi.Core.Interfaces.ISerializableResult, DiGi.Core.Interfaces.IResult, DiGi.Core.Interfaces.IObject, DiGi.Core.Interfaces.ISerializableObject, DiGi.Core.Interfaces.ICloneableObject<DiGi.Core.Interfaces.ISerializableObject>, DiGi.Core.Interfaces.ICloneableObjectInheritance System.Object → DiGi.Core.Classes.Object → DiGi.Core.Classes.SerializableObject → PlanarResult
Derived
↳ PlanarIntersectionResult
↳ ProjectionResult
Implements DiGi.Core.Interfaces.ISerializableResult, DiGi.Core.Interfaces.IResult, DiGi.Core.Interfaces.IObject, DiGi.Core.Interfaces.ISerializableObject, DiGi.Core.Interfaces.ICloneableObject<DiGi.Core.Interfaces.ISerializableObject>, DiGi.Core.Interfaces.ICloneableObject
Initializes a new instance of the PlanarResult class.
public PlanarResult();Initializes a new instance of the PlanarResult class by copying the data from an existing PlanarResult instance.
public PlanarResult(DiGi.Geometry.Spatial.Classes.PlanarResult? planarResult);planarResult PlanarResult
The source PlanarResult instance to copy.
Initializes a new instance of the PlanarResult class using the specified Plane.
public PlanarResult(DiGi.Geometry.Spatial.Classes.Plane? plane);plane Plane
The Plane to initialize the result with, or null.
Initializes a new instance of the PlanarResult class.
public PlanarResult(DiGi.Geometry.Spatial.Classes.Plane? plane, DiGi.Geometry.Planar.Interfaces.IGeometry2D? geometry2D);plane Plane
The Plane to associate with this result, or null.
geometry2D DiGi.Geometry.Planar.Interfaces.IGeometry2D
The DiGi.Geometry.Planar.Interfaces.IGeometry2D geometry to include in the result, or null.
Initializes a new instance of the PlanarResult class.
public PlanarResult(DiGi.Geometry.Spatial.Classes.Plane? plane, System.Collections.Generic.IEnumerable<DiGi.Geometry.Planar.Interfaces.IGeometry2D>? geometry2Ds);plane Plane
The Plane to associate with this result, or null.
geometry2Ds System.Collections.Generic.IEnumerable<DiGi.Geometry.Planar.Interfaces.IGeometry2D>
A collection of DiGi.Geometry.Planar.Interfaces.IGeometry2D objects to associate with this result, or null.
Initializes a new instance of the PlanarResult class using the specified System.Text.Json.Nodes.JsonObject.
public PlanarResult(System.Text.Json.Nodes.JsonObject? jsonObject);jsonObject System.Text.Json.Nodes.JsonObject
The System.Text.Json.Nodes.JsonObject used to initialize the instance. This value can be null.
Gets the number of geometry elements contained in this object.
public int Count { get; }Gets the associated Plane instance.
public DiGi.Geometry.Spatial.Classes.Plane? Plane { get; }Plane
The Plane object, or null if no plane is defined.
Determines whether the collection contains any geometry objects of the specified type T.
public bool Contains<T>()
where T : DiGi.Geometry.Planar.Interfaces.IGeometry2D;T
The type of geometry to search for, which must implement the DiGi.Geometry.Planar.Interfaces.IGeometry2D interface.
System.Boolean
A System.Boolean value indicating whether an object of type T is present in the collection.
Retrieves a list of cloned 2D geometry objects of the specified type T.
public System.Collections.Generic.List<T>? GetGeometry2Ds<T>()
where T : DiGi.Geometry.Planar.Interfaces.IGeometry2D;T
The type of geometry to retrieve, which must implement IGeometry2D.
System.Collections.Generic.List<T>
A List<T> containing clones of the 2D geometry objects if the collection is not null; otherwise, null.
Retrieves a list of 3D geometry objects of the specified type T.
public System.Collections.Generic.List<T>? GetGeometry3Ds<T>()
where T : DiGi.Geometry.Spatial.Interfaces.IGeometry3D;T
The type of 3D geometry to retrieve, which must implement the DiGi.Geometry.Spatial.Interfaces.IGeometry3D interface.
System.Collections.Generic.List<T>
A System.Collections.Generic.List<> containing the converted 3D geometries, or null if no source 2D geometries are available.
Represents a plane in 3D space, inheriting from Geometry3D and implementing DiGi.Geometry.Spatial.Interfaces.IFlippable.
public class Plane : DiGi.Geometry.Spatial.Classes.Geometry3D, DiGi.Geometry.Spatial.Interfaces.IFlippable, DiGi.Geometry.Spatial.Interfaces.IGeometry3D, DiGi.Geometry.Core.Interfaces.IGeometry, DiGi.Core.Interfaces.ISerializableObject, DiGi.Core.Interfaces.ICloneableObject<DiGi.Core.Interfaces.ISerializableObject>, DiGi.Core.Interfaces.ICloneableObject, DiGi.Core.Interfaces.IObject, DiGi.Geometry.Spatial.Interfaces.IMovable3DInheritance System.Object → DiGi.Core.Classes.Object → DiGi.Core.Classes.SerializableObject → Geometry3D → Plane
Implements DiGi.Geometry.Spatial.Interfaces.IFlippable, DiGi.Geometry.Spatial.Interfaces.IGeometry3D, DiGi.Geometry.Core.Interfaces.IGeometry, DiGi.Core.Interfaces.ISerializableObject, DiGi.Core.Interfaces.ICloneableObject<DiGi.Core.Interfaces.ISerializableObject>, DiGi.Core.Interfaces.ICloneableObject, DiGi.Core.Interfaces.IObject, DiGi.Geometry.Spatial.Interfaces.IMovable3D
Initializes a new instance of the Plane class by copying the values from an existing Plane object.
public Plane(DiGi.Geometry.Spatial.Classes.Plane? plane);plane Plane
The source Plane object to copy data from. If null, the current instance remains uninitialized.
Initializes a new instance of the Plane class using an existing Plane for orientation and an optional Point3D for the origin.
public Plane(DiGi.Geometry.Spatial.Classes.Plane? plane, DiGi.Geometry.Spatial.Classes.Point3D? origin);plane Plane
The Plane object to copy the normal and axisY vectors from. Can be null.
origin Point3D
The Point3D object to set as the origin of the plane. Can be null.
Initializes a new instance of the Plane class using three points to define the plane's origin and orientation.
public Plane(DiGi.Geometry.Spatial.Classes.Point3D? point3D_1, DiGi.Geometry.Spatial.Classes.Point3D? point3D_2, DiGi.Geometry.Spatial.Classes.Point3D? point3D_3);point3D_1 Point3D
The first Point3D?, which is used as the origin of the plane.
point3D_2 Point3D
The second Point3D? used to determine the normal vector of the plane.
point3D_3 Point3D
The third Point3D? used to determine the normal vector of the plane.
Initializes a new instance of the Plane class using the specified origin point and normal vector.
public Plane(DiGi.Geometry.Spatial.Classes.Point3D? origin, DiGi.Geometry.Spatial.Classes.Vector3D? normal);origin Point3D
The optional Point3D that defines the origin of the plane.
normal Vector3D
The optional Vector3D that defines the normal vector of the plane.
Initializes a new instance of the Plane class using an origin point and two basis vectors.
public Plane(DiGi.Geometry.Spatial.Classes.Point3D? origin, DiGi.Geometry.Spatial.Classes.Vector3D? axisX, DiGi.Geometry.Spatial.Classes.Vector3D? axisY);origin Point3D
The Point3D? representing the origin point of the plane.
axisX Vector3D
The Vector3D? representing the X-axis vector of the plane.
axisY Vector3D
The Vector3D representing the Y-axis vector of the plane.
Initializes a new instance of the Plane class using the provided System.Text.Json.Nodes.JsonObject.
public Plane(System.Text.Json.Nodes.JsonObject? jsonObject);jsonObject System.Text.Json.Nodes.JsonObject
The System.Text.Json.Nodes.JsonObject containing the data used to initialize the plane.
A factor for point-normal equation A(x−a)+B(y−b)+C(z−c) = 0 where origin(a,b,c), normal(A,B,C)
public double A { get; }System.Double
A value for point-normal equation
Gets the X-axis vector of the coordinate system.
public DiGi.Geometry.Spatial.Classes.Vector3D? AxisX { get; }Vector3D
A Vector3D representing the X-axis, or null if it cannot be determined.
Gets the Y-axis as a Vector3D.
public DiGi.Geometry.Spatial.Classes.Vector3D? AxisY { get; }Vector3D
A Vector3D representing the Y-axis, or null if it is not defined.
Gets the Z-axis vector derived from the normal.
public DiGi.Geometry.Spatial.Classes.Vector3D? AxisZ { get; }Vector3D
A Vector3D representing the Z-axis if the normal is defined; otherwise, null.
B factor for point-normal equation A(x−a)+B(y−b)+C(z−c) = 0 where origin(a,b,c), normal(A,B,C)
public double B { get; }System.Double
B value for point-normal equation
C factor for point-normal equation A(x−a)+B(y−b)+C(z−c) = 0 where origin(a,b,c), normal(A,B,C)
public double C { get; }System.Double
C value for point-normal equation
D factor for point-normal equation Ax+By+Cz = D where origin(a,b,c), normal(A,B,C)
public double D { get; }System.Double
D value for point-normal equation
Gets the normal vector of the object.
public DiGi.Geometry.Spatial.Classes.Vector3D? Normal { get; }Vector3D
A Vector3D representing the normal vector, or null if it is not defined.
Gets or sets the origin point in 3D space.
public DiGi.Geometry.Spatial.Classes.Point3D? Origin { get; set; }Point3D
A Point3D? representing the origin coordinates.
Calculates the closest point on the plane to the specified Point3D.
public DiGi.Geometry.Spatial.Classes.Point3D? ClosestPoint(DiGi.Geometry.Spatial.Classes.Point3D? point3D);point3D Point3D
The Point3D for which the closest point is calculated.
Point3D
The closest Point3D on the plane, or null if the provided Point3D or the plane normal is null.
Determines whether this plane is coplanar with the specified Plane.
public bool Coplanar(DiGi.Geometry.Spatial.Classes.Plane? plane, double tolerance=1E-06);plane Plane
The Plane to compare against.
tolerance System.Double
The System.Double tolerance used for the comparison.
System.Boolean
A System.Boolean value indicating whether the planes are coplanar.
Calculates the distance between the current object and the specified Point3D.
public double Distance(DiGi.Geometry.Spatial.Classes.Point3D? point3D);point3D Point3D
The Point3D to calculate the distance to. This value can be null.
System.Double
A System.Double representing the distance, or System.Double.NaN if the provided point is null or a closest point cannot be determined.
Flips the orientation based on the specified primary and secondary spatial axes.
public bool Flip(DiGi.Geometry.Spatial.Enums.SpatialAxis prmiaryAxis=DiGi.Geometry.Spatial.Enums.SpatialAxis.Z, DiGi.Geometry.Spatial.Enums.SpatialAxis secondaryAxis=DiGi.Geometry.Spatial.Enums.SpatialAxis.X);prmiaryAxis SpatialAxis
The SpatialAxis representing the primary axis.
secondaryAxis SpatialAxis
The SpatialAxis representing the secondary axis.
Implements Flip(SpatialAxis, SpatialAxis)
System.Boolean
A System.Boolean value indicating whether the flip operation was successfully performed.
Retrieves the Vector3D associated with the specified SpatialAxis.
public DiGi.Geometry.Spatial.Classes.Vector3D? GetAxis(DiGi.Geometry.Spatial.Enums.SpatialAxis axis);axis SpatialAxis
The SpatialAxis to retrieve.
Vector3D
A Vector3D representing the axis, or null if the SpatialAxis is undefined.
Moves the object by the specified Vector3D? vector.
public override bool Move(DiGi.Geometry.Spatial.Classes.Vector3D? vector3D);vector3D Vector3D
The Vector3D? value representing the displacement.
Implements Move(Vector3D)
System.Boolean
A bool indicating whether the move operation was successful.
Represents a point in three-dimensional space.
public class Point3D : DiGi.Geometry.Spatial.Classes.Coordinate3D, DiGi.Geometry.Spatial.Interfaces.IMovable3D, DiGi.Geometry.Core.Interfaces.IPoint<DiGi.Geometry.Spatial.Classes.Point3D>, DiGi.Geometry.Core.Interfaces.IPoint, DiGi.Geometry.Core.Interfaces.IGeometry, DiGi.Core.Interfaces.ISerializableObject, DiGi.Core.Interfaces.ICloneableObject<DiGi.Core.Interfaces.ISerializableObject>, DiGi.Core.Interfaces.ICloneableObject, DiGi.Core.Interfaces.IObject, DiGi.Geometry.Spatial.Interfaces.ITransformable3D, DiGi.Geometry.Core.Interfaces.ITransformable<DiGi.Geometry.Spatial.Interfaces.ITransform3D>, DiGi.Geometry.Core.Interfaces.ITransformableInheritance System.Object → DiGi.Core.Classes.Object → DiGi.Core.Classes.SerializableObject → Coordinate → Coordinate3D → Point3D
Implements DiGi.Geometry.Spatial.Interfaces.IMovable3D, DiGi.Geometry.Core.Interfaces.IPoint<Point3D>, DiGi.Geometry.Core.Interfaces.IPoint, DiGi.Geometry.Core.Interfaces.IGeometry, DiGi.Core.Interfaces.ISerializableObject, DiGi.Core.Interfaces.ICloneableObject<DiGi.Core.Interfaces.ISerializableObject>, DiGi.Core.Interfaces.ICloneableObject, DiGi.Core.Interfaces.IObject, DiGi.Geometry.Spatial.Interfaces.ITransformable3D, DiGi.Geometry.Core.Interfaces.ITransformable<DiGi.Geometry.Spatial.Interfaces.ITransform3D>, DiGi.Geometry.Core.Interfaces.ITransformable
Initializes a new instance of the Point3D class using the values from an existing Point3D instance.
public Point3D(DiGi.Geometry.Spatial.Classes.Point3D? point3D);point3D Point3D
The Point3D instance to copy values from.
Initializes a new instance of the Point3D class with the specified double x, double y, and double z coordinates.
public Point3D(double x, double y, double z);The double value for the X coordinate.
The double value for the Y coordinate.
The double value for the Z coordinate.
Initializes a new instance of the Point3D class using an array of System.Double.
public Point3D(double[]? values);values System.Double[]
An array of System.Double containing the coordinate values.
Initializes a new instance of the Point3D class using the specified System.Text.Json.Nodes.JsonObject.
public Point3D(System.Text.Json.Nodes.JsonObject? jsonObject);jsonObject System.Text.Json.Nodes.JsonObject
The System.Text.Json.Nodes.JsonObject used to initialize the point.
Creates a copy of the current instance.
public override DiGi.Core.Interfaces.ISerializableObject? Clone();Implements Clone()
DiGi.Core.Interfaces.ISerializableObject
A new DiGi.Core.Interfaces.ISerializableObject that is a clone of the current instance, or null.
Calculates the distance between this point and a specified Point3D.
public double Distance(DiGi.Geometry.Spatial.Classes.Point3D? point3D);point3D Point3D
The Point3D to calculate the distance to.
System.Double
The distance as a System.Double, or System.Double.NaN if the provided Point3D is null.
Determines whether the specified System.Object is equal to the current Point3D.
public override bool Equals(object? obj);obj System.Object
The System.Object to compare with the current instance.
System.Boolean
true if the specified System.Object is a Point3D with equal component values; otherwise, false.
Returns a new Point3D instance containing the absolute values of the current point's coordinates.
public DiGi.Geometry.Spatial.Classes.Point3D GetAbs();Point3D
A new Point3D object with absolute coordinate values.
Returns a hash code for the current Point3D.
public override int GetHashCode();System.Int32
An System.Int32 hash code.
Returns a new Point3D that is the result of moving this point by the specified Vector3D.
public DiGi.Geometry.Spatial.Classes.Point3D? GetMoved(DiGi.Geometry.Spatial.Classes.Vector3D? vector3D);vector3D Vector3D
The Vector3D to move the point by.
Point3D
A new Point3D representing the moved position, or null if the provided Vector3D is null.
Determines whether the specified Point3D is within a given distance, accounting for an optional tolerance.
public bool InDistance(DiGi.Geometry.Spatial.Classes.Point3D? point3D, double distance, double tolerance=1E-06);point3D Point3D
The Point3D to evaluate.
distance System.Double
The maximum allowed distance as a System.Double.
tolerance System.Double
The tolerance value as a System.Double to be added to the distance threshold.
System.Boolean
A System.Boolean indicating whether the point is within the specified distance and tolerance; returns false if point3D is null.
Calculates the midpoint between this point and another Point3D.
public DiGi.Geometry.Spatial.Classes.Point3D? Mid(DiGi.Geometry.Spatial.Classes.Point3D? point3D);point3D Point3D
The other Point3D to calculate the midpoint with.
Point3D
A Point3D representing the midpoint, or null if the provided Point3D is null.
Adds a Vector3D to a Point3D to produce a new point.
public static DiGi.Geometry.Spatial.Classes.Point3D? operator +(DiGi.Geometry.Spatial.Classes.Point3D? point3D, DiGi.Geometry.Spatial.Classes.Vector3D? vector3D);point3D Point3D
The starting Point3D.
vector3D Vector3D
The Vector3D to add to the point.
Point3D
A new Point3D resulting from the addition, or null if either input is null.
Indicates whether two Point3D instances are equal.
public static bool operator ==(DiGi.Geometry.Spatial.Classes.Point3D? point3D_1, DiGi.Geometry.Spatial.Classes.Point3D? point3D_2);point3D_1 Point3D
The first Point3D to compare.
point3D_2 Point3D
The second Point3D to compare.
System.Boolean
true if the points are equal; otherwise, false.
Indicates whether two Point3D instances are not equal.
public static bool operator !=(DiGi.Geometry.Spatial.Classes.Point3D? point3D_1, DiGi.Geometry.Spatial.Classes.Point3D? point3D_2);point3D_1 Point3D
The first Point3D to compare.
point3D_2 Point3D
The second Point3D to compare.
System.Boolean
true if the points are not equal; otherwise, false.
Subtracts one Point3D from another to produce a Vector3D.
public static DiGi.Geometry.Spatial.Classes.Vector3D? operator -(DiGi.Geometry.Spatial.Classes.Point3D? point3D_1, DiGi.Geometry.Spatial.Classes.Point3D? point3D_2);point3D_1 Point3D
The first Point3D.
point3D_2 Point3D
The second Point3D.
Vector3D
A new Vector3D resulting from the subtraction, or null if either input is null.
Subtracts a Vector3D from a Point3D to produce a new point.
public static DiGi.Geometry.Spatial.Classes.Point3D? operator -(DiGi.Geometry.Spatial.Classes.Point3D? point3D, DiGi.Geometry.Spatial.Classes.Vector3D? vector3D);point3D Point3D
The starting Point3D.
vector3D Vector3D
The Vector3D to subtract from the point.
Point3D
A new Point3D resulting from the subtraction, or null if either input is null.
Represents a three-dimensional polygon defined on a specific plane.
public class Polygon3D : DiGi.Geometry.Spatial.Classes.Planar<DiGi.Geometry.Planar.Classes.Polygon2D>, DiGi.Geometry.Spatial.Interfaces.IPolygonal3D<DiGi.Geometry.Planar.Classes.Polygon2D>, DiGi.Geometry.Spatial.Interfaces.IPolygonal3D, DiGi.Geometry.Spatial.Interfaces.IClosedPlanarCurve3D, DiGi.Geometry.Spatial.Interfaces.IClosedCurve3D, DiGi.Geometry.Core.Interfaces.IClosedCurve, DiGi.Geometry.Core.Interfaces.ICurve, DiGi.Geometry.Core.Interfaces.IGeometry, DiGi.Core.Interfaces.ISerializableObject, DiGi.Core.Interfaces.ICloneableObject<DiGi.Core.Interfaces.ISerializableObject>, DiGi.Core.Interfaces.ICloneableObject, DiGi.Core.Interfaces.IObject, DiGi.Geometry.Spatial.Interfaces.IGeometry3D, DiGi.Geometry.Spatial.Interfaces.IMovable3D, DiGi.Geometry.Spatial.Interfaces.ICurve3D, DiGi.Geometry.Spatial.Interfaces.ISegmentable3D, DiGi.Geometry.Core.Interfaces.ISegmentable<DiGi.Geometry.Spatial.Classes.Point3D>, DiGi.Geometry.Core.Interfaces.ISegmentable, DiGi.Geometry.Core.Interfaces.IInvertible, DiGi.Geometry.Core.Interfaces.IMovable, DiGi.Geometry.Spatial.Interfaces.IBoundable3D, DiGi.Geometry.Core.Interfaces.IBoundable, DiGi.Geometry.Spatial.Interfaces.IInvertible3D, DiGi.Geometry.Spatial.Interfaces.IPlanar, DiGi.Geometry.Spatial.Interfaces.IPlanar<DiGi.Geometry.Planar.Classes.Polygon2D>Inheritance System.Object → DiGi.Core.Classes.Object → DiGi.Core.Classes.SerializableObject → Geometry3D → DiGi.Geometry.Spatial.Classes.Planar<Polygon2D> → Polygon3D
Implements DiGi.Geometry.Spatial.Interfaces.IPolygonal3D<Polygon2D>, DiGi.Geometry.Spatial.Interfaces.IPolygonal3D, DiGi.Geometry.Spatial.Interfaces.IClosedPlanarCurve3D, DiGi.Geometry.Spatial.Interfaces.IClosedCurve3D, DiGi.Geometry.Core.Interfaces.IClosedCurve, DiGi.Geometry.Core.Interfaces.ICurve, DiGi.Geometry.Core.Interfaces.IGeometry, DiGi.Core.Interfaces.ISerializableObject, DiGi.Core.Interfaces.ICloneableObject<DiGi.Core.Interfaces.ISerializableObject>, DiGi.Core.Interfaces.ICloneableObject, DiGi.Core.Interfaces.IObject, DiGi.Geometry.Spatial.Interfaces.IGeometry3D, DiGi.Geometry.Spatial.Interfaces.IMovable3D, DiGi.Geometry.Spatial.Interfaces.ICurve3D, DiGi.Geometry.Spatial.Interfaces.ISegmentable3D, DiGi.Geometry.Core.Interfaces.ISegmentable<Point3D>, DiGi.Geometry.Core.Interfaces.ISegmentable, DiGi.Geometry.Core.Interfaces.IInvertible, DiGi.Geometry.Core.Interfaces.IMovable, DiGi.Geometry.Spatial.Interfaces.IBoundable3D, DiGi.Geometry.Core.Interfaces.IBoundable, DiGi.Geometry.Spatial.Interfaces.IInvertible3D, DiGi.Geometry.Spatial.Interfaces.IPlanar, DiGi.Geometry.Spatial.Interfaces.IPlanar<Polygon2D>
Initializes a new instance of the Polygon3D class using the specified Plane and Polygon2D.
public Polygon3D(DiGi.Geometry.Spatial.Classes.Plane? plane, DiGi.Geometry.Planar.Classes.Polygon2D? polygon2D);plane Plane
The Plane on which the polygon is defined.
polygon2D Polygon2D
The Polygon2D that defines the 2D shape of the polygon.
Initializes a new instance of the Polygon3D class using the specified Plane and a collection of Point2D points.
public Polygon3D(DiGi.Geometry.Spatial.Classes.Plane? plane, System.Collections.Generic.IEnumerable<DiGi.Geometry.Planar.Classes.Point2D>? point2Ds);plane Plane
The Plane on which the polygon is defined. This value can be null.
point2Ds System.Collections.Generic.IEnumerable<Point2D>
An System.Collections.Generic.IEnumerable<> containing the 2D points that define the vertices of the polygon. This value can be null.
Initializes a new instance of the Polygon3D class by copying an existing Polygon3D object.
public Polygon3D(DiGi.Geometry.Spatial.Classes.Polygon3D? polygon3D);polygon3D Polygon3D
The Polygon3D object to copy from.
Initializes a new instance of the Polygon3D class using the specified System.Text.Json.Nodes.JsonObject.
public Polygon3D(System.Text.Json.Nodes.JsonObject? jsonObject);jsonObject System.Text.Json.Nodes.JsonObject
The System.Text.Json.Nodes.JsonObject used to initialize the polygon.
Gets the length of the geometry.
public double Length { get; }Implements Length
System.Double
A System.Double representing the length, or System.Double.NaN if the underlying geometry is null.
Creates a copy of the current instance.
public override DiGi.Core.Interfaces.ISerializableObject? Clone();Implements Clone()
DiGi.Core.Interfaces.ISerializableObject
A new DiGi.Core.Interfaces.ISerializableObject that is a clone of the current instance, or null.
Calculates the closest point on the geometry to the specified Point3D.
public DiGi.Geometry.Spatial.Classes.Point3D? ClosestPoint(DiGi.Geometry.Spatial.Classes.Point3D? point3D);point3D Point3D
The Point3D for which the closest point is sought.
Point3D
The closest Point3D found, or null if the input Point3D is null or the geometry is not available.
Calculates the area of the 2D geometry.
public double GetArea();Implements GetArea()
System.Double
A System.Double representing the area, or System.Double.NaN if the 2D geometry is null.
Calculates the 3D bounding box for the current geometry based on its points.
public DiGi.Geometry.Spatial.Classes.BoundingBox3D? GetBoundingBox();Implements GetBoundingBox()
BoundingBox3D
A BoundingBox3D containing all points, or null if no points are available.
Calculates the centroid of the geometry and converts it to a 3D point.
public DiGi.Geometry.Spatial.Classes.Point3D? GetCentroid();Implements GetCentroid()
Point3D
A Point3D representing the centroid, or null if the plane or geometry is not available.
Gets an internal point of the geometry converted to 3D space.
public DiGi.Geometry.Spatial.Classes.Point3D? GetInternalPoint(double tolerance=1E-06);tolerance System.Double
The System.Double tolerance used for the calculation.
Implements GetInternalPoint(double)
Point3D
A Point3D representing the internal point, or null if the plane or geometry is not available.
Gets the perimeter of the geometry.
public double GetPerimeter();Implements GetPerimeter()
System.Double
A System.Double value representing the total length of the perimeter.
Retrieves a list of Point3D objects by converting the 2D points from the geometry using the associated plane.
public System.Collections.Generic.List<DiGi.Geometry.Spatial.Classes.Point3D>? GetPoints();Implements GetPoints()
System.Collections.Generic.List<Point3D>
A System.Collections.Generic.List<> containing the converted points, or null if the plane, geometry, or source points are unavailable.
Retrieves a list of Segment3D segments.
public System.Collections.Generic.List<DiGi.Geometry.Spatial.Classes.Segment3D>? GetSegments();Implements GetSegments()
System.Collections.Generic.List<Segment3D>
A System.Collections.Generic.List<> of Segment3D objects if points are available; otherwise, null.
Determines whether the specified Point3D is within range based on the provided tolerance.
public bool InRange(DiGi.Geometry.Spatial.Classes.Point3D? point3D, double tolerance=1E-06);point3D Point3D
The Point3D to evaluate.
tolerance System.Double
The System.Double distance tolerance used for the range check.
Implements InRange(Point3D, double)
System.Boolean
A System.Boolean value indicating whether the point is within range; otherwise, false if the point or required internal geometry is null.
Determines whether the specified DiGi.Geometry.Spatial.Interfaces.ISegmentable3D object is within a given distance tolerance.
public bool InRange(DiGi.Geometry.Spatial.Interfaces.ISegmentable3D? segmentable3D, double tolerance=1E-06);segmentable3D DiGi.Geometry.Spatial.Interfaces.ISegmentable3D
The DiGi.Geometry.Spatial.Interfaces.ISegmentable3D object to check.
tolerance System.Double
The System.Double value representing the distance tolerance.
Implements InRange(ISegmentable3D, double)
System.Boolean
A System.Boolean value indicating whether the object is within range; otherwise, false if any required components are null.
Determines whether the specified Point3D is inside the geometry within the given tolerance.
public bool Inside(DiGi.Geometry.Spatial.Classes.Point3D? point3D, double tolerance=1E-06);point3D Point3D
The Point3D to evaluate.
tolerance System.Double
The System.Double distance tolerance used for the check.
Implements Inside(Point3D, double)
System.Boolean
A System.Boolean value indicating whether the point is inside; returns false if the Point3D, geometry, or plane is null.
Determines whether the specified DiGi.Geometry.Spatial.Interfaces.ISegmentable3D object is inside the geometry.
public bool Inside(DiGi.Geometry.Spatial.Interfaces.ISegmentable3D? segmentable3D, double tolerance=1E-06);segmentable3D DiGi.Geometry.Spatial.Interfaces.ISegmentable3D
The DiGi.Geometry.Spatial.Interfaces.ISegmentable3D object to check.
tolerance System.Double
The System.Double tolerance value used for the distance calculation.
Implements Inside(ISegmentable3D, double)
System.Boolean
A System.Boolean value indicating whether the DiGi.Geometry.Spatial.Interfaces.ISegmentable3D object is inside the geometry.
Inverts the geometry.
public bool Inverse();Implements Inverse()
System.Boolean
A System.Boolean value indicating whether the inversion was successful.
Determines whether the specified Point3D is on the geometry within the given tolerance.
public bool On(DiGi.Geometry.Spatial.Classes.Point3D? point3D, double tolerance=1E-06);point3D Point3D
The Point3D to check.
tolerance System.Double
The System.Double tolerance value used for the distance calculation.
System.Boolean
A System.Boolean value indicating whether the point is on the geometry.
Triangulates the geometry into a list of Triangle3D objects.
public System.Collections.Generic.List<DiGi.Geometry.Spatial.Classes.Triangle3D>? Triangulate(double tolerance=1E-09);tolerance System.Double
The System.Double tolerance value used for the triangulation process.
Implements Triangulate(double)
System.Collections.Generic.List<Triangle3D>
A System.Collections.Generic.List<> containing the resulting 3D triangles, or null if the plane is null or the 2D triangulation fails.
Updates the normalization of a 3D polygonal geometry to ensure it matches a specified orientation.
public class Polygonal3DNormalizationUpdater : DiGi.Geometry.Core.Classes.GeometryUpdater<DiGi.Geometry.Spatial.Interfaces.IPolygonal3D>, DiGi.Geometry.Core.Interfaces.INormalizationUpdater<DiGi.Geometry.Spatial.Interfaces.IPolygonal3D>, DiGi.Geometry.Core.Interfaces.IGeometryUpdater<DiGi.Geometry.Spatial.Interfaces.IPolygonal3D>, DiGi.Geometry.Core.Interfaces.IGeometryUpdater, DiGi.Core.Interfaces.IUpdater, DiGi.Core.Interfaces.IEvaluator, DiGi.Core.Interfaces.IUpdater<DiGi.Geometry.Spatial.Interfaces.IPolygonal3D>Inheritance System.Object → DiGi.Geometry.Core.Classes.GeometryUpdater<DiGi.Geometry.Spatial.Interfaces.IPolygonal3D> → Polygonal3DNormalizationUpdater
Implements DiGi.Geometry.Core.Interfaces.INormalizationUpdater<DiGi.Geometry.Spatial.Interfaces.IPolygonal3D>, DiGi.Geometry.Core.Interfaces.IGeometryUpdater<DiGi.Geometry.Spatial.Interfaces.IPolygonal3D>, DiGi.Geometry.Core.Interfaces.IGeometryUpdater, DiGi.Core.Interfaces.IUpdater, DiGi.Core.Interfaces.IEvaluator, DiGi.Core.Interfaces.IUpdater<DiGi.Geometry.Spatial.Interfaces.IPolygonal3D>
Initializes a new instance of the Polygonal3DNormalizationUpdater class.
public Polygonal3DNormalizationUpdater(DiGi.Geometry.Core.Enums.Orientation orientation);orientation Orientation
The Orientation to which the polygonal 3D object should be normalized.
Determines whether the current value is normalized based on the specified orientation.
public bool Normalized();Implements Normalized()
System.Boolean
A System.Boolean value indicating true if the value is normalized; otherwise, false.
Updates the orientation of the current value.
public override bool Update();Implements Update()
System.Boolean
A System.Boolean indicating whether the update operation was successful.
Represents a polygonal face in 3D space that is planar.
public class PolygonalFace3D : DiGi.Geometry.Spatial.Classes.Planar<DiGi.Geometry.Planar.Interfaces.IPolygonalFace2D>, DiGi.Geometry.Spatial.Interfaces.IPolygonalFace3D, DiGi.Geometry.Spatial.Interfaces.IFace3D<DiGi.Geometry.Spatial.Interfaces.IPolygonal3D>, DiGi.Geometry.Spatial.Interfaces.IFace3D, DiGi.Geometry.Core.Interfaces.IFace, DiGi.Geometry.Core.Interfaces.ISurface, DiGi.Geometry.Core.Interfaces.IGeometry, DiGi.Core.Interfaces.ISerializableObject, DiGi.Core.Interfaces.ICloneableObject<DiGi.Core.Interfaces.ISerializableObject>, DiGi.Core.Interfaces.ICloneableObject, DiGi.Core.Interfaces.IObject, DiGi.Geometry.Spatial.Interfaces.ISurface3D, DiGi.Geometry.Spatial.Interfaces.IBoundable3D, DiGi.Geometry.Spatial.Interfaces.IGeometry3D, DiGi.Geometry.Spatial.Interfaces.IMovable3D, DiGi.Geometry.Core.Interfaces.IBoundable, DiGi.Geometry.Spatial.Interfaces.IPlanar, DiGi.Geometry.Core.Interfaces.IFace<DiGi.Geometry.Spatial.Interfaces.IPolygonal3D>, DiGi.Geometry.Spatial.Interfaces.IPlanar<DiGi.Geometry.Planar.Interfaces.IPolygonalFace2D>, DiGi.Geometry.Spatial.Interfaces.IInvertible3D, DiGi.Geometry.Core.Interfaces.IInvertible, DiGi.Geometry.Spatial.Interfaces.IFlippableInheritance System.Object → DiGi.Core.Classes.Object → DiGi.Core.Classes.SerializableObject → Geometry3D → DiGi.Geometry.Spatial.Classes.Planar<IPolygonalFace2D> → PolygonalFace3D
Implements DiGi.Geometry.Spatial.Interfaces.IPolygonalFace3D, DiGi.Geometry.Spatial.Interfaces.IFace3D<DiGi.Geometry.Spatial.Interfaces.IPolygonal3D>, DiGi.Geometry.Spatial.Interfaces.IFace3D, DiGi.Geometry.Core.Interfaces.IFace, DiGi.Geometry.Core.Interfaces.ISurface, DiGi.Geometry.Core.Interfaces.IGeometry, DiGi.Core.Interfaces.ISerializableObject, DiGi.Core.Interfaces.ICloneableObject<DiGi.Core.Interfaces.ISerializableObject>, DiGi.Core.Interfaces.ICloneableObject, DiGi.Core.Interfaces.IObject, DiGi.Geometry.Spatial.Interfaces.ISurface3D, DiGi.Geometry.Spatial.Interfaces.IBoundable3D, DiGi.Geometry.Spatial.Interfaces.IGeometry3D, DiGi.Geometry.Spatial.Interfaces.IMovable3D, DiGi.Geometry.Core.Interfaces.IBoundable, DiGi.Geometry.Spatial.Interfaces.IPlanar, DiGi.Geometry.Core.Interfaces.IFace<DiGi.Geometry.Spatial.Interfaces.IPolygonal3D>, DiGi.Geometry.Spatial.Interfaces.IPlanar<IPolygonalFace2D>, DiGi.Geometry.Spatial.Interfaces.IInvertible3D, DiGi.Geometry.Core.Interfaces.IInvertible, DiGi.Geometry.Spatial.Interfaces.IFlippable
Initializes a new instance of the PolygonalFace3D class.
public PolygonalFace3D(DiGi.Geometry.Spatial.Classes.Plane? plane, DiGi.Geometry.Planar.Interfaces.IPolygonalFace2D? polygonalFace2D);plane Plane
The Plane that defines the surface of the polygonal face.
polygonalFace2D IPolygonalFace2D
The IPolygonalFace2D representation of the polygonal face in 2D space.
Initializes a new instance of the PolygonalFace3D class from a prebuilt plane and 2D face.
internal PolygonalFace3D(DiGi.Geometry.Spatial.Classes.Plane? plane, DiGi.Geometry.Planar.Interfaces.IPolygonalFace2D? polygonalFace2D, bool clone);plane Plane
The Plane that defines the surface of the polygonal face.
polygonalFace2D IPolygonalFace2D
The IPolygonalFace2D representation of the polygonal face in 2D space.
clone System.Boolean
When true, the inputs are defensively cloned; when false, the supplied instances are adopted directly without cloning. Use false only when the caller owns freshly created instances that are not shared.
Initializes a new instance of the PolygonalFace3D class using the values from another PolygonalFace3D instance.
public PolygonalFace3D(DiGi.Geometry.Spatial.Classes.PolygonalFace3D? polygonalFace3D);polygonalFace3D PolygonalFace3D
The PolygonalFace3D instance to copy from.
Initializes a new instance of the PolygonalFace3D class using the specified external edge.
public PolygonalFace3D(DiGi.Geometry.Spatial.Interfaces.IPolygonal3D? externalEdge);externalEdge DiGi.Geometry.Spatial.Interfaces.IPolygonal3D
The DiGi.Geometry.Spatial.Interfaces.IPolygonal3D object representing the external edge used to initialize the face. This value can be null.
Initializes a new instance of the PolygonalFace3D class using the specified System.Text.Json.Nodes.JsonObject.
public PolygonalFace3D(System.Text.Json.Nodes.JsonObject? jsonObject);jsonObject System.Text.Json.Nodes.JsonObject
The System.Text.Json.Nodes.JsonObject containing the data to initialize the PolygonalFace3D instance.
Gets a list of all polygonal 3D edges, combining the external edge and any internal edges.
public System.Collections.Generic.List<DiGi.Geometry.Spatial.Interfaces.IPolygonal3D>? Edges { get; }Implements Edges
System.Collections.Generic.List<DiGi.Geometry.Spatial.Interfaces.IPolygonal3D>
A System.Collections.Generic.List<> containing both the external and internal edges, or null if no external edge exists.
Gets the external edge of the geometry as an IPolygonal3D object.
public DiGi.Geometry.Spatial.Interfaces.IPolygonal3D? ExternalEdge { get; }Implements ExternalEdge
DiGi.Geometry.Spatial.Interfaces.IPolygonal3D
The IPolygonal3D representation of the external edge, or null if the plane or underlying 2D geometry is not available.
Gets the list of internal edges as DiGi.Geometry.Spatial.Interfaces.IPolygonal3D. Returns null if the plane, geometry 2D, or the source internal edges are not available.
public System.Collections.Generic.List<DiGi.Geometry.Spatial.Interfaces.IPolygonal3D>? InternalEdges { get; }Implements InternalEdges
System.Collections.Generic.List<DiGi.Geometry.Spatial.Interfaces.IPolygonal3D>
A System.Collections.Generic.List<> containing the converted internal edges, or null.
Creates a copy of the current object.
public override DiGi.Core.Interfaces.ISerializableObject? Clone();Implements Clone()
DiGi.Core.Interfaces.ISerializableObject
A new DiGi.Core.Interfaces.ISerializableObject that is a clone of the current instance, or null.
Calculates the closest point on the geometry to the specified Point3D.
public DiGi.Geometry.Spatial.Classes.Point3D? ClosestPoint(DiGi.Geometry.Spatial.Classes.Point3D? point3D);point3D Point3D
The Point3D for which the closest point is calculated.
Implements ClosestPoint(Point3D)
Point3D
The closest Point3D on the geometry, or null if the input point, plane, or geometry is null.
Calculates the area of the 2D geometry.
public double GetArea();Implements GetArea()
System.Double
A System.Double representing the area, or System.Double.NaN if the underlying 2D geometry is null.
Gets the bounding box of the object.
public DiGi.Geometry.Spatial.Classes.BoundingBox3D? GetBoundingBox();Implements GetBoundingBox()
BoundingBox3D
A BoundingBox3D representing the bounding box, or null if it cannot be determined.
Gets an internal point of the geometry within the specified tolerance.
public DiGi.Geometry.Spatial.Classes.Point3D? GetInternalPoint(double tolerance=1E-06);tolerance System.Double
The double value representing the distance tolerance used for calculations.
Implements GetInternalPoint(double)
Point3D
A Point3D object if an internal point is found; otherwise, null.
Determines whether the specified Point3D? is within the range of the geometry based on the provided System.Double tolerance.
public bool InRange(DiGi.Geometry.Spatial.Classes.Point3D? point3D, double tolerance=1E-06);point3D Point3D
The Point3D? to evaluate.
tolerance System.Double
The System.Double distance tolerance used for the range check.
Implements InRange(Point3D, double)
System.Boolean
A System.Boolean value indicating whether the point is within range; returns false if the point, plane, or geometry is null.
Determines whether the specified Point3D is located inside the geometry on the plane within a given tolerance.
public bool Inside(DiGi.Geometry.Spatial.Classes.Point3D? point3D, double tolerance=1E-06);point3D Point3D
The nullable Point3D to evaluate.
tolerance System.Double
The System.Double distance tolerance used for the proximity check.
Implements Inside(Point3D, double)
System.Boolean
A System.Boolean value indicating true if the point is within the geometry; otherwise, false.
Inverts the underlying 2D geometry.
public bool Inverse();Implements Inverse()
System.Boolean
A System.Boolean value indicating whether the inversion was successful.
Determines whether the specified 3D point lies on the edge of the geometry within a given tolerance.
public bool OnEdge(DiGi.Geometry.Spatial.Classes.Point3D? point3D, double tolerance=1E-06);point3D Point3D
The nullable Point3D to evaluate.
tolerance System.Double
The System.Double distance tolerance used for the calculation.
Implements OnEdge(Point3D, double)
System.Boolean
A System.Boolean value indicating true if the point is on the edge; otherwise, false.
Orients the external and internal edges of the geometry based on the specified orientations.
public bool Orient(System.Nullable<DiGi.Geometry.Core.Enums.Orientation> externalEdgeOrientation, System.Nullable<DiGi.Geometry.Core.Enums.Orientation> internalEdgeOrientation);externalEdgeOrientation System.Nullable<Orientation>
The optional Orientation to apply to the external edge.
internalEdgeOrientation System.Nullable<Orientation>
The optional Orientation to apply to the internal edge.
Implements Orient(Nullable<Orientation>, Nullable<Orientation>)
System.Boolean
A System.Boolean value indicating whether the orientation process was successful.
Triangulates the geometry into a list of Triangle3D objects based on the specified tolerance.
public System.Collections.Generic.List<DiGi.Geometry.Spatial.Classes.Triangle3D>? Triangulate(double tolerance=1E-09);tolerance System.Double
The System.Double tolerance value used during the triangulation process.
Implements Triangulate(double)
System.Collections.Generic.List<Triangle3D>
A List<Triangle3D> containing the resulting 3D triangles, or null if the plane or underlying 2D geometry is not available.
Provides a solver to find an internal point within a 3D polygonal face by utilizing a 2D planar projection.
public class PolygonalFace3DInternalPointSolver : DiGi.Geometry.Core.Interfaces.IInternalPointSolver<DiGi.Geometry.Spatial.Interfaces.IPolygonalFace3D, DiGi.Geometry.Spatial.Classes.Point3D>, DiGi.Geometry.Core.Interfaces.IGeometrySolver, DiGi.Core.Interfaces.ISolver, DiGi.Core.Interfaces.IEvaluator, DiGi.Geometry.Core.Interfaces.IOneToManyGeometrySolver<DiGi.Geometry.Spatial.Interfaces.IPolygonalFace3D, DiGi.Geometry.Spatial.Classes.Point3D>, DiGi.Core.Interfaces.IOneToManySolver<DiGi.Geometry.Spatial.Interfaces.IPolygonalFace3D, DiGi.Geometry.Spatial.Classes.Point3D>Inheritance System.Object → PolygonalFace3DInternalPointSolver
Implements DiGi.Geometry.Core.Interfaces.IInternalPointSolver<DiGi.Geometry.Spatial.Interfaces.IPolygonalFace3D,Point3D>, DiGi.Geometry.Core.Interfaces.IGeometrySolver, DiGi.Core.Interfaces.ISolver, DiGi.Core.Interfaces.IEvaluator, DiGi.Geometry.Core.Interfaces.IOneToManyGeometrySolver<DiGi.Geometry.Spatial.Interfaces.IPolygonalFace3D,Point3D>, DiGi.Core.Interfaces.IOneToManySolver<DiGi.Geometry.Spatial.Interfaces.IPolygonalFace3D,Point3D>
Initializes a new instance of the PolygonalFace3DInternalPointSolver class.
public PolygonalFace3DInternalPointSolver(double tolerance=1E-06);tolerance System.Double
The System.Double tolerance value used for internal point calculations.
Initializes a new instance of the PolygonalFace3DInternalPointSolver class.
public PolygonalFace3DInternalPointSolver(int maxCount, double tolerance=1E-06);maxCount System.Int32
The maximum number of internal points to be calculated as an System.Int32.
tolerance System.Double
The distance tolerance used for calculations as a System.Double.
Gets or sets the DiGi.Geometry.Spatial.Interfaces.IPolygonalFace3D input for the polygonal face internal point solver.
public DiGi.Geometry.Spatial.Interfaces.IPolygonalFace3D? Input { set; }Implements Input
DiGi.Geometry.Spatial.Interfaces.IPolygonalFace3D
Gets or sets the maximum count for the polygonal face 2D internal point solver.
public int MaxCount { get; set; }Implements MaxCount
System.Int32
An System.Int32 representing the maximum count.
Gets the calculated internal point as a Point3D.
public DiGi.Geometry.Spatial.Classes.Point3D? Ouput { get; }Point3D
The converted Point3D result from the internal point solver, or null if no output is available.
Gets the list of Point3D outputs generated by the internal point solver, converted to the plane coordinates and filtered for null values.
public System.Collections.Generic.List<DiGi.Geometry.Spatial.Classes.Point3D>? Outputs { get; }Implements Outputs
System.Collections.Generic.List<Point3D>
Solves for the internal point of the polygonal face 2D.
public bool Solve();Implements Solve()
System.Boolean
A System.Boolean value indicating whether the operation was successful.
Provides functionality to update and normalize the orientation of a 3D polygonal face.
public class PolygonalFace3DNormalizationUpdater : DiGi.Geometry.Core.Classes.GeometryUpdater<DiGi.Geometry.Spatial.Interfaces.IPolygonalFace3D>, DiGi.Geometry.Core.Interfaces.INormalizationUpdater<DiGi.Geometry.Spatial.Interfaces.IPolygonalFace3D>, DiGi.Geometry.Core.Interfaces.IGeometryUpdater<DiGi.Geometry.Spatial.Interfaces.IPolygonalFace3D>, DiGi.Geometry.Core.Interfaces.IGeometryUpdater, DiGi.Core.Interfaces.IUpdater, DiGi.Core.Interfaces.IEvaluator, DiGi.Core.Interfaces.IUpdater<DiGi.Geometry.Spatial.Interfaces.IPolygonalFace3D>Inheritance System.Object → DiGi.Geometry.Core.Classes.GeometryUpdater<DiGi.Geometry.Spatial.Interfaces.IPolygonalFace3D> → PolygonalFace3DNormalizationUpdater
Implements DiGi.Geometry.Core.Interfaces.INormalizationUpdater<DiGi.Geometry.Spatial.Interfaces.IPolygonalFace3D>, DiGi.Geometry.Core.Interfaces.IGeometryUpdater<DiGi.Geometry.Spatial.Interfaces.IPolygonalFace3D>, DiGi.Geometry.Core.Interfaces.IGeometryUpdater, DiGi.Core.Interfaces.IUpdater, DiGi.Core.Interfaces.IEvaluator, DiGi.Core.Interfaces.IUpdater<DiGi.Geometry.Spatial.Interfaces.IPolygonalFace3D>
Initializes a new instance of the PolygonalFace3DNormalizationUpdater class using the specified Orientation for both internal and external edges.
public PolygonalFace3DNormalizationUpdater(DiGi.Geometry.Core.Enums.Orientation orientation);orientation Orientation
The Orientation to be applied to both internal and external edge orientations.
Initializes a new instance of the PolygonalFace3DNormalizationUpdater class with the specified orientation requirements for external and internal edges.
public PolygonalFace3DNormalizationUpdater(System.Nullable<DiGi.Geometry.Core.Enums.Orientation> externalEdgeOrientation, System.Nullable<DiGi.Geometry.Core.Enums.Orientation> internalEdgeOrientation);externalEdgeOrientation System.Nullable<Orientation>
The required Orientation for external edges, or null if no specific orientation is required.
internalEdgeOrientation System.Nullable<Orientation>
The required Orientation for internal edges, or null if no specific orientation is required.
Determines whether the value is normalized based on the external and internal edge orientations.
public bool Normalized();Implements Normalized()
System.Boolean
A System.Boolean value indicating whether the value is normalized.
Updates the orientation of the value using the external and internal edge orientations.
public override bool Update();Implements Update()
System.Boolean
A System.Boolean indicating whether the update was successfully performed.
Represents the extrusion of a polygonal face in three-dimensional space.
public class PolygonalFaceExtrusion : DiGi.Geometry.Spatial.Classes.Extrusion<DiGi.Geometry.Spatial.Interfaces.IPolygonalFace3D>Inheritance System.Object → DiGi.Core.Classes.Object → DiGi.Core.Classes.SerializableObject → Geometry3D → DiGi.Geometry.Spatial.Classes.Extrusion<DiGi.Geometry.Spatial.Interfaces.IPolygonalFace3D> → PolygonalFaceExtrusion
Initializes a new instance of the PolygonalFaceExtrusion class using an existing PolygonalFaceExtrusion object.
public PolygonalFaceExtrusion(DiGi.Geometry.Spatial.Classes.PolygonalFaceExtrusion? polygonalFaceExtrusion);polygonalFaceExtrusion PolygonalFaceExtrusion
The PolygonalFaceExtrusion object to copy from.
Initializes a new instance of the PolygonalFaceExtrusion class.
public PolygonalFaceExtrusion(DiGi.Geometry.Spatial.Interfaces.IPolygonalFace3D? surface, DiGi.Geometry.Spatial.Classes.Vector3D? vector);surface DiGi.Geometry.Spatial.Interfaces.IPolygonalFace3D
The DiGi.Geometry.Spatial.Interfaces.IPolygonalFace3D surface to be extruded.
vector Vector3D
The Vector3D vector defining the extrusion direction and distance.
Initializes a new instance of the PolygonalFaceExtrusion class using the specified System.Text.Json.Nodes.JsonObject.
public PolygonalFaceExtrusion(System.Text.Json.Nodes.JsonObject? jsonObject);jsonObject System.Text.Json.Nodes.JsonObject
The System.Text.Json.Nodes.JsonObject used to initialize the extrusion.
Represents a polyhedron composed of polygonal faces.
public class Polyhedron : DiGi.Geometry.Spatial.Classes.Polyhedron<DiGi.Geometry.Spatial.Interfaces.IPolygonalFace3D>Inheritance System.Object → DiGi.Core.Classes.Object → DiGi.Core.Classes.SerializableObject → Geometry3D → DiGi.Geometry.Spatial.Classes.Polyhedron<DiGi.Geometry.Spatial.Interfaces.IPolygonalFace3D> → Polyhedron
Initializes a new instance of the Polyhedron class by copying an existing Polyhedron object.
public Polyhedron(DiGi.Geometry.Spatial.Classes.Polyhedron? polyhedron);polyhedron Polyhedron
The Polyhedron object to copy from.
Initializes a new instance of the Polyhedron class from a prebuilt list of polygonal faces.
internal Polyhedron(System.Collections.Generic.List<DiGi.Geometry.Spatial.Interfaces.IPolygonalFace3D>? polygonalFaces, bool clone);polygonalFaces System.Collections.Generic.List<DiGi.Geometry.Spatial.Interfaces.IPolygonalFace3D>
The System.Collections.Generic.List<> containing the polygonal faces of the polyhedron.
clone System.Boolean
When true, the faces are defensively cloned; when false, the supplied list is adopted directly without cloning. Use false only when the caller owns freshly created faces that are not shared.
Initializes a new instance of the Polyhedron class using the provided System.Text.Json.Nodes.JsonObject.
public Polyhedron(System.Text.Json.Nodes.JsonObject? jsonObject);jsonObject System.Text.Json.Nodes.JsonObject
The System.Text.Json.Nodes.JsonObject used to initialize the polyhedron.
Creates a clone of the current instance.
public override DiGi.Core.Interfaces.ISerializableObject? Clone();Implements Clone()
DiGi.Core.Interfaces.ISerializableObject
A new DiGi.Core.Interfaces.ISerializableObject that is a copy of the current instance, or null.
Represents an abstract base class for a 3D polyhedron consisting of polygonal faces.
public abstract class Polyhedron<TPolygonalFace3D> : DiGi.Geometry.Spatial.Classes.Geometry3D, DiGi.Geometry.Spatial.Interfaces.IPolyhedron, DiGi.Geometry.Spatial.Interfaces.IGeometry3D, DiGi.Geometry.Core.Interfaces.IGeometry, DiGi.Core.Interfaces.ISerializableObject, DiGi.Core.Interfaces.ICloneableObject<DiGi.Core.Interfaces.ISerializableObject>, DiGi.Core.Interfaces.ICloneableObject, DiGi.Core.Interfaces.IObject, DiGi.Geometry.Spatial.Interfaces.IMovable3D, DiGi.Geometry.Spatial.Interfaces.IBoundable3D, DiGi.Geometry.Core.Interfaces.IBoundable, DiGi.Geometry.Spatial.Interfaces.IInvertible3D, DiGi.Geometry.Core.Interfaces.IInvertible
where TPolygonalFace3D : DiGi.Geometry.Spatial.Interfaces.IPolygonalFace3DTPolygonalFace3D
The type of the polygonal face, which must implement DiGi.Geometry.Spatial.Interfaces.IPolygonalFace3D.
Inheritance System.Object → DiGi.Core.Classes.Object → DiGi.Core.Classes.SerializableObject → Geometry3D → Polyhedron<TPolygonalFace3D>
Derived
↳ Polyhedron
Implements DiGi.Geometry.Spatial.Interfaces.IPolyhedron, DiGi.Geometry.Spatial.Interfaces.IGeometry3D, DiGi.Geometry.Core.Interfaces.IGeometry, DiGi.Core.Interfaces.ISerializableObject, DiGi.Core.Interfaces.ICloneableObject<DiGi.Core.Interfaces.ISerializableObject>, DiGi.Core.Interfaces.ICloneableObject, DiGi.Core.Interfaces.IObject, DiGi.Geometry.Spatial.Interfaces.IMovable3D, DiGi.Geometry.Spatial.Interfaces.IBoundable3D, DiGi.Geometry.Core.Interfaces.IBoundable, DiGi.Geometry.Spatial.Interfaces.IInvertible3D, DiGi.Geometry.Core.Interfaces.IInvertible
Initializes a new instance of the Polyhedron class using an existing Polyhedron<TPolygonalFace3D> instance.
public Polyhedron(DiGi.Geometry.Spatial.Classes.Polyhedron<TPolygonalFace3D>? polyhedron);polyhedron DiGi.Geometry.Spatial.Classes.Polyhedron<TPolygonalFace3D>
The Polyhedron<TPolygonalFace3D> instance to copy from.
Initializes a new instance of the Polyhedron<TPolygonalFace3D> class from a prebuilt list of polygonal faces.
protected Polyhedron(System.Collections.Generic.List<TPolygonalFace3D>? polygonalFaces, bool clone);polygonalFaces System.Collections.Generic.List<TPolygonalFace3D>
The System.Collections.Generic.List<> containing the polygonal faces of the polyhedron.
clone System.Boolean
When true, the faces are defensively cloned; when false, the supplied list is adopted directly without cloning. Use false only when the caller owns freshly created faces that are not shared.
Initializes a new instance of the Polyhedron class using the provided System.Text.Json.Nodes.JsonObject.
public Polyhedron(System.Text.Json.Nodes.JsonObject? jsonObject);jsonObject System.Text.Json.Nodes.JsonObject
The System.Text.Json.Nodes.JsonObject used to initialize the polyhedron. This value can be null.
Gets the total number of polygonal faces.
public int Count { get; }Implements Count
System.Int32
An System.Int32 representing the count of polygonal faces.
Gets the list of TPolygonalFace3D objects representing the polygonal faces.
public System.Collections.Generic.List<TPolygonalFace3D>? PolygonalFaces { get; }System.Collections.Generic.List<TPolygonalFace3D>
A System.Collections.Generic.List<> containing the cloned polygonal faces, or null if no faces are defined.
Gets the polygonal face at the specified index.
public TPolygonalFace3D? this[int i] { get; }The zero-based index of the polygonal face to retrieve.
Calculates the bounding box that encompasses all polygonal faces of the object.
public DiGi.Geometry.Spatial.Classes.BoundingBox3D? GetBoundingBox();Implements GetBoundingBox()
BoundingBox3D
A BoundingBox3D representing the total bounding area, or null if there are no polygonal faces.
Calculates and returns a point located inside the polyhedron.
public DiGi.Geometry.Spatial.Classes.Point3D? GetInternalPoint(double tolerance=1E-06);tolerance System.Double
The System.Double tolerance value used to determine if a point is internal.
Point3D
A Point3D representing an internal point if one is found; otherwise, null.
Gets the normal vector of a polygonal face at the specified index.
public DiGi.Geometry.Spatial.Classes.Vector3D? GetNormal(int index, out bool inversed, System.Nullable<DiGi.Geometry.Core.Enums.Side> side=null, double tolerance=1E-06);index System.Int32
The zero-based index of the polygonal face.
inversed System.Boolean
When called, contains a System.Boolean value indicating whether the resulting normal is inversed.
An optional Side specifying the side to consider for the normal calculation.
tolerance System.Double
A System.Double representing the distance tolerance used during calculations.
Implements GetNormal(int, bool, Nullable<Side>, double)
Vector3D
A Vector3D? containing the normal vector if successful; otherwise, null.
Gets the normal vector of the polygonal face at the specified index.
public DiGi.Geometry.Spatial.Classes.Vector3D? GetNormal(int index, System.Nullable<DiGi.Geometry.Core.Enums.Side> side=null, double tolerance=1E-06);index System.Int32
The zero-based index of the polygonal face.
An optional Side specifying which side of the face to use for the normal calculation.
tolerance System.Double
A System.Double value representing the distance tolerance used for calculations.
Vector3D
A Vector3D representing the normal vector if successful; otherwise, null.
Retrieves the polygonal face at the specified index, cast to the requested type.
public UPolygonalFace3D? GetPolygonalFace3D<UPolygonalFace3D>(int index)
where UPolygonalFace3D : DiGi.Geometry.Spatial.Interfaces.IPolygonalFace3D;UPolygonalFace3D
The specific type of DiGi.Geometry.Spatial.Interfaces.IPolygonalFace3D to retrieve.
index System.Int32
The zero-based integer index of the polygonal face in the collection.
Implements GetPolygonalFace3D<TPolygonalFace3D>(int)
UPolygonalFace3D
An instance of <typeparam ref="UPolygonalFace3D" /> if the element at the specified index exists and is of the requested type; otherwise, null.
Determines whether the specified Point3D is within the given tolerance range.
public bool InRange(DiGi.Geometry.Spatial.Classes.Point3D? point3D, double tolerance=1E-06);point3D Point3D
The nullable Point3D to evaluate.
tolerance System.Double
The System.Double value representing the distance tolerance.
System.Boolean
A System.Boolean value indicating true if the point is within range; otherwise, false.
Determines whether the specified Point3D is located inside the object, excluding points that are on the boundary.
public bool Inside(DiGi.Geometry.Spatial.Classes.Point3D? point3D, double tolerance=1E-06);point3D Point3D
The Point3D to check for containment.
tolerance System.Double
A System.Double value representing the distance tolerance used for the calculation.
Implements Inside(Point3D, double)
System.Boolean
A System.Boolean value indicating true if the point is inside; otherwise, false.
Inverts the orientation of all polygonal faces associated with this object.
public bool Inverse();Implements Inverse()
System.Boolean
A System.Boolean value indicating whether at least one polygonal face was successfully inversed; otherwise, false.
Moves the object by the specified Vector3D vector.
public override bool Move(DiGi.Geometry.Spatial.Classes.Vector3D? vector3D);vector3D Vector3D
The Vector3D? vector to translate the polygonal faces by.
Implements Move(Vector3D)
System.Boolean
A bool indicating whether the move operation was successful.
Polyhedron<TPolygonalFace3D>.Normalized(int, Nullable<Orientation>, Nullable<Orientation>, double) Method
Determines whether the polygonal face at the specified index is normalized based on the provided external and internal edge orientations and a distance tolerance.
public bool Normalized(int index, System.Nullable<DiGi.Geometry.Core.Enums.Orientation> externalEdgeOrientation, System.Nullable<DiGi.Geometry.Core.Enums.Orientation> internalEdgeOrientation, double tolerance=1E-06);index System.Int32
The System.Int32 index of the polygonal face to evaluate.
externalEdgeOrientation System.Nullable<Orientation>
The optional Orientation for external edges.
internalEdgeOrientation System.Nullable<Orientation>
The optional Orientation for internal edges.
tolerance System.Double
The System.Double tolerance value used to determine normalization.
Implements Normalized(int, Nullable<Orientation>, Nullable<Orientation>, double)
System.Boolean
A System.Boolean value indicating whether the face is normalized; returns false if the polygonal faces collection is null.
Determines whether the specified Point3D is located on any of the polygonal faces within a given tolerance.
public bool On(DiGi.Geometry.Spatial.Classes.Point3D? point3D, double tolerance=1E-06);point3D Point3D
The Point3D to evaluate\