-
Notifications
You must be signed in to change notification settings - Fork 0
DiGi.Geometry.Spatial
public static class ConvertInheritance System.Object → Convert
Converts a CoordinateSystem3D instance to a Plane.
public static DiGi.Geometry.Spatial.Classes.Plane? ToDiGi(this DiGi.Geometry.Spatial.Classes.CoordinateSystem3D? coordinateSystem3D);coordinateSystem3D CoordinateSystem3D
The CoordinateSystem3D instance to convert.
Plane
A Plane object if the provided CoordinateSystem3D is not null; otherwise, null.
Converts a Plane to a CoordinateSystem3D.
public static DiGi.Geometry.Spatial.Classes.CoordinateSystem3D? ToDiGi(this DiGi.Geometry.Spatial.Classes.Plane? plane);plane Plane
The Plane instance to convert.
CoordinateSystem3D
A CoordinateSystem3D representing the plane's coordinate system, or null if the provided Plane is null.
Converts a Coordinate3D instance to a nullable System.Numerics.Vector3.
public static System.Nullable<System.Numerics.Vector3> ToNumerics(this DiGi.Geometry.Spatial.Classes.Coordinate3D coordinate3D);coordinate3D Coordinate3D
The Coordinate3D instance to convert.
System.Nullable<System.Numerics.Vector3>
A System.Numerics.Vector3 containing the converted coordinates, or null if the provided Coordinate3D is null.
public static class CreateInheritance System.Object → Create
Create.AddBooleanOperationCandidates(List<BooleanOperationCandidate>, List<IPolygonalFace3D>, BVHNode, bool, double) Method
Splits every face of polygonalFace3Ds by the faces of the other polyhedron that overlap it (culled through bVHNode) and appends the resulting fragments (or the unsplit face) to booleanOperationCandidates.
private static void AddBooleanOperationCandidates(System.Collections.Generic.List<DiGi.Geometry.Spatial.Create.BooleanOperationCandidate> booleanOperationCandidates, System.Collections.Generic.List<DiGi.Geometry.Spatial.Interfaces.IPolygonalFace3D> polygonalFace3Ds, DiGi.Geometry.Spatial.Classes.BVHNode bVHNode, bool fromFirst, double tolerance);booleanOperationCandidates System.Collections.Generic.List<BooleanOperationCandidate>
polygonalFace3Ds System.Collections.Generic.List<DiGi.Geometry.Spatial.Interfaces.IPolygonalFace3D>
bVHNode BVHNode
fromFirst System.Boolean
tolerance System.Double
Assembles the final boolean operation geometry from the deduplicated boundary faces: a single solid Polyhedron when the faces form a valid closed volume, the individual faces as a fallback for non-solid remnants, or null when no geometry remains.
private static System.Collections.Generic.List<DiGi.Geometry.Spatial.Interfaces.IGeometry3D>? BooleanOperationGeometry3Ds(System.Collections.Generic.List<DiGi.Geometry.Spatial.Interfaces.IPolygonalFace3D> polygonalFace3Ds);polygonalFace3Ds System.Collections.Generic.List<DiGi.Geometry.Spatial.Interfaces.IPolygonalFace3D>
System.Collections.Generic.List<DiGi.Geometry.Spatial.Interfaces.IGeometry3D>
Create.BooleanOperationPolygonalFace3Ds<TPolygonalFace3D>(BooleanOpertaionType, Polyhedron<TPolygonalFace3D>, Polyhedron<TPolygonalFace3D>, List<IPolygonalFace3D>, List<IPolygonalFace3D>, BVHNode, double) Method
Shared core of the 3D boolean operations (Union, Intersection, Difference): splits the faces of each polyhedron by the overlapping faces of the other, classifies every resulting fragment against the other volume with a single BVH-accelerated point-relation query, and deduplicates coplanar overlapping fragments via a spatial hash.
internal static System.Collections.Generic.List<DiGi.Geometry.Spatial.Interfaces.IPolygonalFace3D> BooleanOperationPolygonalFace3Ds<TPolygonalFace3D>(DiGi.Geometry.Core.Enums.BooleanOpertaionType booleanOpertaionType, DiGi.Geometry.Spatial.Classes.Polyhedron<TPolygonalFace3D> polyhedron_1, DiGi.Geometry.Spatial.Classes.Polyhedron<TPolygonalFace3D> polyhedron_2, System.Collections.Generic.List<DiGi.Geometry.Spatial.Interfaces.IPolygonalFace3D> polygonalFace3Ds_1, System.Collections.Generic.List<DiGi.Geometry.Spatial.Interfaces.IPolygonalFace3D> polygonalFace3Ds_2, out DiGi.Geometry.Spatial.Classes.BVHNode bVHNode_2, double tolerance)
where TPolygonalFace3D : DiGi.Geometry.Spatial.Interfaces.IPolygonalFace3D;TPolygonalFace3D
The type of polygonal face, which must implement DiGi.Geometry.Spatial.Interfaces.IPolygonalFace3D.
booleanOpertaionType BooleanOpertaionType
The boolean operation deciding which fragments are kept.
polyhedron_1 DiGi.Geometry.Spatial.Classes.Polyhedron<TPolygonalFace3D>
The first polyhedron (used only for the rare exact outward-normal fallback).
polyhedron_2 DiGi.Geometry.Spatial.Classes.Polyhedron<TPolygonalFace3D>
The second polyhedron (used only for the rare exact outward-normal fallback).
polygonalFace3Ds_1 System.Collections.Generic.List<DiGi.Geometry.Spatial.Interfaces.IPolygonalFace3D>
The faces of the first polyhedron (non-empty).
polygonalFace3Ds_2 System.Collections.Generic.List<DiGi.Geometry.Spatial.Interfaces.IPolygonalFace3D>
The faces of the second polyhedron (non-empty).
bVHNode_2 BVHNode
The Bounding Volume Hierarchy (BVH) built for the second polyhedron, reusable by the caller.
tolerance System.Double
The distance tolerance for the boolean computations.
System.Collections.Generic.List<DiGi.Geometry.Spatial.Interfaces.IPolygonalFace3D>
The deduplicated boundary faces of the result volume (never null; possibly empty). Difference results have the retained second-polyhedron fragments inverted.
Create.BooleanOperationResult3D<TPolygonalFace3D>(this BooleanOpertaionType, Polyhedron<TPolygonalFace3D>, Polyhedron<TPolygonalFace3D>, double) Method
Calculates the 3D boolean operation result between two polyhedra based on the specified operation type.
public static DiGi.Geometry.Spatial.Classes.BooleanOperationResult3D? BooleanOperationResult3D<TPolygonalFace3D>(this DiGi.Geometry.Core.Enums.BooleanOpertaionType booleanOpertaionType, DiGi.Geometry.Spatial.Classes.Polyhedron<TPolygonalFace3D>? polyhedron_1, DiGi.Geometry.Spatial.Classes.Polyhedron<TPolygonalFace3D>? polyhedron_2, double tolerance=1E-06)
where TPolygonalFace3D : DiGi.Geometry.Spatial.Interfaces.IPolygonalFace3D;TPolygonalFace3D
The type of polygonal face, which must implement DiGi.Geometry.Spatial.Interfaces.IPolygonalFace3D.
booleanOpertaionType BooleanOpertaionType
The type of the boolean operation.
polyhedron_1 DiGi.Geometry.Spatial.Classes.Polyhedron<TPolygonalFace3D>
The first polyhedron.
polyhedron_2 DiGi.Geometry.Spatial.Classes.Polyhedron<TPolygonalFace3D>
The second polyhedron.
tolerance System.Double
The distance tolerance for the boolean computations.
BooleanOperationResult3D
A BooleanOperationResult3D containing the result of the operation, or null if the operation type is not supported.
Creates a BoundingBox3D based on the provided X, Y, and Z ranges.
public static DiGi.Geometry.Spatial.Classes.BoundingBox3D? BoundingBox3D(DiGi.Core.Classes.Range<double>? x, DiGi.Core.Classes.Range<double>? y, DiGi.Core.Classes.Range<double>? z);x DiGi.Core.Classes.Range<System.Double>
The Range<double> for the X axis.
y DiGi.Core.Classes.Range<System.Double>
The Range<double> for the Y axis.
z DiGi.Core.Classes.Range<System.Double>
The Range<double> for the Z axis.
BoundingBox3D
A BoundingBox3D if all provided ranges are not null; otherwise, null.
Calculates a single BoundingBox3D that encompasses all provided bounding boxes in the collection.
public static DiGi.Geometry.Spatial.Classes.BoundingBox3D? BoundingBox3D(this System.Collections.Generic.IEnumerable<DiGi.Geometry.Spatial.Classes.BoundingBox3D>? boundingBox3Ds);boundingBox3Ds System.Collections.Generic.IEnumerable<BoundingBox3D>
An System.Collections.Generic.IEnumerable<> of BoundingBox3D objects to process.
BoundingBox3D
A BoundingBox3D representing the union of all input bounding boxes, or null if the collection is null or contains no valid bounding boxes.
Calculates a BoundingBox3D that encompasses all provided polygonal faces.
public static DiGi.Geometry.Spatial.Classes.BoundingBox3D? BoundingBox3D(this System.Collections.Generic.IEnumerable<DiGi.Geometry.Spatial.Interfaces.IPolygonalFace3D>? polygonalFace3Ds);polygonalFace3Ds System.Collections.Generic.IEnumerable<DiGi.Geometry.Spatial.Interfaces.IPolygonalFace3D>
An System.Collections.Generic.IEnumerable<> of faces to process.
BoundingBox3D
A BoundingBox3D representing the bounding box, or null if the collection is null or contains no valid bounding boxes.
Create.DifferenceResult3D<TPolygonalFace3D>(this Polyhedron<TPolygonalFace3D>, Polyhedron<TPolygonalFace3D>, double) Method
Calculates the 3D boolean difference between two polyhedra defined by TPolygonalFace3D faces.
public static DiGi.Geometry.Spatial.Classes.DifferenceResult3D? DifferenceResult3D<TPolygonalFace3D>(this DiGi.Geometry.Spatial.Classes.Polyhedron<TPolygonalFace3D>? polyhedron_1, DiGi.Geometry.Spatial.Classes.Polyhedron<TPolygonalFace3D>? polyhedron_2, double tolerance=1E-06)
where TPolygonalFace3D : DiGi.Geometry.Spatial.Interfaces.IPolygonalFace3D;TPolygonalFace3D
The type of polygonal face, which must implement DiGi.Geometry.Spatial.Interfaces.IPolygonalFace3D.
polyhedron_1 DiGi.Geometry.Spatial.Classes.Polyhedron<TPolygonalFace3D>
The first polyhedron (from which to subtract).
polyhedron_2 DiGi.Geometry.Spatial.Classes.Polyhedron<TPolygonalFace3D>
The second polyhedron (to subtract).
tolerance System.Double
The distance tolerance for boolean difference computations.
DifferenceResult3D
A DifferenceResult3D containing the difference geometry (either a Polyhedron or individual face/segment elements), or null if polyhedron_1 is null.
The boundary of the difference polyhedron A \ B is composed of:
- Faces of A that lie outside the volume of B.
- Faces of B that lie inside the volume of A, with their orientations inverted (normals flipped) to face outward from the resulting solid difference volume.
If the remaining boundary pieces do not form a closed solid volume (less than 4 faces, or non-closed shell), the method falls back to returning the individual PolygonalFace3D elements representing the remaining boundary surfaces.
Creates an Ellipsoid(Point3D, Point3D, double, double, double) based on two focal points and two semi-minor axes.
public static DiGi.Geometry.Spatial.Classes.Ellipsoid? Ellipsoid(DiGi.Geometry.Spatial.Classes.Point3D? focalPoint_1, DiGi.Geometry.Spatial.Classes.Point3D? focalPoint_2, double b, double c, double tolerance=1E-06);focalPoint_1 Point3D
The first Point3D representing a focal point of the ellipsoid.
focalPoint_2 Point3D
The second Point3D representing a focal point of the ellipsoid.
A System.Double value representing one of the semi-minor axes.
A System.Double value representing another semi-minor axis.
tolerance System.Double
A System.Double value specifying the distance tolerance.
Ellipsoid
An Ellipsoid(Point3D, Point3D, double, double, double) object if the parameters are valid and a valid ellipsoid can be constructed; otherwise, null.
Create.InteriorSideInsideOther<TPolygonalFace3D>(BooleanOperationCandidate, Point3D, BVHNodePointRelationSolver, BVHNodePointRelationSolver, Polyhedron<TPolygonalFace3D>, Polyhedron<TPolygonalFace3D>, double) Method
For a candidate fragment lying on the other volume's boundary, determines whether the parent-volume interior side of the (coplanar) boundary lies inside the other volume.
The probe is evaluated on both sides of the face plane, so the sign of the face normal is irrelevant - this avoids the expensive outward-normal orientation ray cast of GetNormal(int, bool, Nullable<Side>, double) in the common case. The exact outward normal is only computed as a rare fallback (very thin parent volume or a probe near a parent edge).
private static bool InteriorSideInsideOther<TPolygonalFace3D>(DiGi.Geometry.Spatial.Create.BooleanOperationCandidate booleanOperationCandidate, DiGi.Geometry.Spatial.Classes.Point3D point3D, DiGi.Geometry.Spatial.Classes.BVHNodePointRelationSolver bVHNodePointRelationSolver_Parent, DiGi.Geometry.Spatial.Classes.BVHNodePointRelationSolver bVHNodePointRelationSolver_Other, DiGi.Geometry.Spatial.Classes.Polyhedron<TPolygonalFace3D> polyhedron_1, DiGi.Geometry.Spatial.Classes.Polyhedron<TPolygonalFace3D> polyhedron_2, double tolerance)
where TPolygonalFace3D : DiGi.Geometry.Spatial.Interfaces.IPolygonalFace3D;TPolygonalFace3D
booleanOperationCandidate BooleanOperationCandidate
point3D Point3D
bVHNodePointRelationSolver_Parent BVHNodePointRelationSolver
bVHNodePointRelationSolver_Other BVHNodePointRelationSolver
polyhedron_1 DiGi.Geometry.Spatial.Classes.Polyhedron<TPolygonalFace3D>
polyhedron_2 DiGi.Geometry.Spatial.Classes.Polyhedron<TPolygonalFace3D>
tolerance System.Double
Calculates the intersection between a 3D bounding box and a ray defined by a point and a direction.
public static DiGi.Geometry.Spatial.Classes.IntersectionResult3D? IntersectionResult3D(this DiGi.Geometry.Spatial.Classes.BoundingBox3D? boundingBox3D, DiGi.Geometry.Spatial.Classes.Point3D? point3D, DiGi.Geometry.Spatial.Classes.Vector3D? vector3D_Direction, double tolerance=1E-06);boundingBox3D BoundingBox3D
The BoundingBox3D to check for intersection.
point3D Point3D
The Point3D representing the starting point of the ray.
vector3D_Direction Vector3D
The Vector3D(Vector3D, bool) representing the direction of the ray.
tolerance System.Double
A System.Double value specifying the distance tolerance for the intersection calculation.
IntersectionResult3D
An IntersectionResult3D containing the result of the intersection, or null if any of the required parameters are null.
Calculates the intersection between a BoundingBox3D and an DiGi.Geometry.Spatial.Interfaces.ILinear3D.
public static DiGi.Geometry.Spatial.Classes.IntersectionResult3D? IntersectionResult3D(this DiGi.Geometry.Spatial.Classes.BoundingBox3D? boundingBox3D, DiGi.Geometry.Spatial.Interfaces.ILinear3D? linear3D, double tolerance=1E-06);boundingBox3D BoundingBox3D
The BoundingBox3D to intersect.
linear3D DiGi.Geometry.Spatial.Interfaces.ILinear3D
The DiGi.Geometry.Spatial.Interfaces.ILinear3D to intersect.
tolerance System.Double
The System.Double tolerance for the intersection calculation.
IntersectionResult3D
An IntersectionResult3D containing the result of the intersection, or null if either input is null or the operation fails.
Calculates the intersection between a sphere and a 3D line.
public static DiGi.Geometry.Spatial.Classes.IntersectionResult3D? IntersectionResult3D(this DiGi.Geometry.Spatial.Classes.Sphere? sphere, DiGi.Geometry.Spatial.Classes.Line3D? line3D, double tolerance=1E-06);sphere Sphere
The Sphere to intersect.
line3D Line3D
The Line3D to intersect.
tolerance System.Double
The System.Double tolerance value used for the intersection calculation.
IntersectionResult3D
An IntersectionResult3D containing the intersection details, or null if either the sphere or line is null.
Calculates the intersection between a Sphere and a Segment3D.
public static DiGi.Geometry.Spatial.Classes.IntersectionResult3D? IntersectionResult3D(this DiGi.Geometry.Spatial.Classes.Sphere? sphere, DiGi.Geometry.Spatial.Classes.Segment3D? segment3D, double tolerance=1E-06);sphere Sphere
The Sphere to intersect.
segment3D Segment3D
The Segment3D to intersect.
tolerance System.Double
A System.Double value representing the distance tolerance for the intersection calculation.
IntersectionResult3D
An IntersectionResult3D containing the result of the intersection, or null if either the sphere or segment is null.
Create.IntersectionResult3D<TPolygonalFace3D>(this Polyhedron<TPolygonalFace3D>, Polyhedron<TPolygonalFace3D>, double) Method
Calculates the 3D boolean intersection between two polyhedra defined by TPolygonalFace3D faces.
public static DiGi.Geometry.Spatial.Classes.IntersectionResult3D? IntersectionResult3D<TPolygonalFace3D>(this DiGi.Geometry.Spatial.Classes.Polyhedron<TPolygonalFace3D>? polyhedron_1, DiGi.Geometry.Spatial.Classes.Polyhedron<TPolygonalFace3D>? polyhedron_2, double tolerance=1E-06)
where TPolygonalFace3D : DiGi.Geometry.Spatial.Interfaces.IPolygonalFace3D;TPolygonalFace3D
The type of polygonal face, which must implement DiGi.Geometry.Spatial.Interfaces.IPolygonalFace3D.
polyhedron_1 DiGi.Geometry.Spatial.Classes.Polyhedron<TPolygonalFace3D>
The first polyhedron to intersect.
polyhedron_2 DiGi.Geometry.Spatial.Classes.Polyhedron<TPolygonalFace3D>
The second polyhedron to intersect.
tolerance System.Double
The distance tolerance for intersection computations.
IntersectionResult3D
An IntersectionResult3D containing the intersection geometry, or null if either input is null.
Create.IntersectionResult3D<TPolygonalFace3D>(this Polyhedron<TPolygonalFace3D>, ILinear3D, double) Method
Calculates the intersection result between a Polyhedron<TPolygonalFace3D> and an DiGi.Geometry.Spatial.Interfaces.ILinear3D.
public static DiGi.Geometry.Spatial.Classes.IntersectionResult3D? IntersectionResult3D<TPolygonalFace3D>(this DiGi.Geometry.Spatial.Classes.Polyhedron<TPolygonalFace3D>? polyhedron, DiGi.Geometry.Spatial.Interfaces.ILinear3D? linear3D, double tolerance=1E-06)
where TPolygonalFace3D : DiGi.Geometry.Spatial.Interfaces.IPolygonalFace3D;TPolygonalFace3D
The type of polygonal face, which must implement DiGi.Geometry.Spatial.Interfaces.IPolygonalFace3D.
polyhedron DiGi.Geometry.Spatial.Classes.Polyhedron<TPolygonalFace3D>
The Polyhedron<TPolygonalFace3D> to check for intersection.
linear3D DiGi.Geometry.Spatial.Interfaces.ILinear3D
The DiGi.Geometry.Spatial.Interfaces.ILinear3D object to intersect with the polyhedron. Supported implementations are Line3D, Ray3D and Segment3D.
tolerance System.Double
A System.Double value representing the distance tolerance used for calculations.
IntersectionResult3D
An IntersectionResult3D containing the intersection details, or null if either input is null, the linear type is not supported or the bounding box cannot be determined.
Creates a DiGi.Math.Classes.Matrix from the specified collection of Point3D points.
public static DiGi.Math.Classes.Matrix? Matrix(this System.Collections.Generic.IEnumerable<DiGi.Geometry.Spatial.Classes.Point3D>? point3Ds);point3Ds System.Collections.Generic.IEnumerable<Point3D>
The System.Collections.Generic.IEnumerable<> of Point3D objects to convert.
DiGi.Math.Classes.Matrix
A DiGi.Math.Classes.Matrix containing the point coordinates, or null if point3Ds is null.
Creates a DiGi.Math.Classes.Matrix from a collection of Vector3D(Vector3D, bool).
public static DiGi.Math.Classes.Matrix? Matrix(this System.Collections.Generic.IEnumerable<DiGi.Geometry.Spatial.Classes.Vector3D>? vector3Ds);vector3Ds System.Collections.Generic.IEnumerable<Vector3D>
An System.Collections.Generic.IEnumerable<> of Vector3D(Vector3D, bool) objects to be converted into a matrix.
DiGi.Math.Classes.Matrix
A DiGi.Math.Classes.Matrix containing the vectors as rows, or null if the input collection is null.
Generates a Mesh3D from the specified Ellipsoid(Point3D, Point3D, double, double, double) using an angle factor to determine the resolution of stacks and slices.
public static DiGi.Geometry.Spatial.Classes.Mesh3D? Mesh3D(this DiGi.Geometry.Spatial.Classes.Ellipsoid? ellipsoid, double angleFactor);ellipsoid Ellipsoid
The Ellipsoid(Point3D, Point3D, double, double, double) instance to be converted into a mesh.
angleFactor System.Double
A System.Double value used to calculate the number of stacks and slices for the resulting mesh.
Mesh3D
A Mesh3D object representing the ellipsoid, or null if the provided Ellipsoid(Point3D, Point3D, double, double, double) is null or the angle factor does not yield a positive angular step.
Generates a Mesh3D from the specified Ellipsoid(Point3D, Point3D, double, double, double).
public static DiGi.Geometry.Spatial.Classes.Mesh3D? Mesh3D(this DiGi.Geometry.Spatial.Classes.Ellipsoid? ellipsoid, int stacks, int slices);ellipsoid Ellipsoid
The Ellipsoid(Point3D, Point3D, double, double, double) to convert into a mesh.
stacks System.Int32
The number of stacks (latitude divisions) as an System.Int32 used to generate the mesh. Must be at least 2.
slices System.Int32
The number of slices (longitude divisions) as an System.Int32 used to generate the mesh. Must be at least 3.
Mesh3D
A Mesh3D representing the ellipsoid, or null if the provided Ellipsoid(Point3D, Point3D, double, double, double) is null, incomplete, or the resolution values are out of range.
Converts the specified Polyhedron to a Mesh3D by triangulating its polygonal faces.
public static DiGi.Geometry.Spatial.Classes.Mesh3D? Mesh3D(this DiGi.Geometry.Spatial.Classes.Polyhedron? polyhedron, double tolerance=1E-06);polyhedron Polyhedron
The Polyhedron instance to convert.
tolerance System.Double
The System.Double tolerance used during the triangulation of the polygonal faces.
Mesh3D
A Mesh3D object representing the triangulated mesh, or null if the Polyhedron is null or contains no valid faces.
Converts a polygonal face to a 3D mesh using the specified distance tolerance.
public static DiGi.Geometry.Spatial.Classes.Mesh3D? Mesh3D(this DiGi.Geometry.Spatial.Interfaces.IPolygonalFace3D? polygonalFace3D, double tolerance=1E-06);polygonalFace3D DiGi.Geometry.Spatial.Interfaces.IPolygonalFace3D
The DiGi.Geometry.Spatial.Interfaces.IPolygonalFace3D instance to convert.
tolerance System.Double
The System.Double distance tolerance used for triangulation.
Mesh3D
A Mesh3D object representing the polygonal face, or null if the input is null.
Creates a Mesh3D from a collection of Triangle3D objects.
public static DiGi.Geometry.Spatial.Classes.Mesh3D? Mesh3D(this System.Collections.Generic.IEnumerable<DiGi.Geometry.Spatial.Classes.Triangle3D>? triangle3Ds, double tolerance=1E-06);triangle3Ds System.Collections.Generic.IEnumerable<Triangle3D>
The System.Collections.Generic.IEnumerable<> containing the triangles to be converted into a mesh.
tolerance System.Double
The System.Double tolerance value used for merging coincident points.
Mesh3D
A Mesh3D object if the input collection is not null and contains valid triangles; otherwise, null.
Decomposes the specified mesh into its connected components.
public static System.Collections.Generic.List<DiGi.Geometry.Spatial.Classes.Mesh3D>? Mesh3Ds(this DiGi.Geometry.Spatial.Classes.Mesh3D? mesh3D);mesh3D Mesh3D
The Mesh3D to decompose.
System.Collections.Generic.List<Mesh3D>
A System.Collections.Generic.List<> of Mesh3D instances, each representing a connected component, or null if the input is null or empty.
Calculates the planar intersection result between a plane and a 3D bounding box.
public static DiGi.Geometry.Spatial.Classes.PlanarIntersectionResult? PlanarIntersectionResult(this DiGi.Geometry.Spatial.Classes.Plane? plane, DiGi.Geometry.Spatial.Classes.BoundingBox3D? boundingBox3D, double tolerance=1E-06);plane Plane
The Plane to intersect with the bounding box.
boundingBox3D BoundingBox3D
The BoundingBox3D to be intersected by the plane.
tolerance System.Double
A System.Double value representing the distance tolerance for the intersection calculation.
PlanarIntersectionResult
A PlanarIntersectionResult containing the result of the intersection, or null if either the plane or bounding box is null, or if a polyhedron cannot be created from the bounding box.
Calculates the intersection result between a Plane and a Line3D.
public static DiGi.Geometry.Spatial.Classes.PlanarIntersectionResult? PlanarIntersectionResult(this DiGi.Geometry.Spatial.Classes.Plane? plane, DiGi.Geometry.Spatial.Classes.Line3D? line3D, double tolerance=1E-06);plane Plane
The Plane to intersect.
line3D Line3D
The Line3D to intersect.
tolerance System.Double
The System.Double tolerance used for the intersection calculation.
PlanarIntersectionResult
A PlanarIntersectionResult containing the result of the intersection, or null if the plane or line is null.
Calculates the intersection result of two planes.
public static DiGi.Geometry.Spatial.Classes.PlanarIntersectionResult? PlanarIntersectionResult(this DiGi.Geometry.Spatial.Classes.Plane? plane_1, DiGi.Geometry.Spatial.Classes.Plane? plane_2, double tolerance=1E-06);plane_1 Plane
The first Plane to intersect.
plane_2 Plane
The second Plane to intersect.
tolerance System.Double
The System.Double tolerance used for the intersection calculation.
PlanarIntersectionResult
A PlanarIntersectionResult if an intersection is found; otherwise, null.
Calculates the intersection result between a Plane and a line segment defined by two Point3D points.
public static DiGi.Geometry.Spatial.Classes.PlanarIntersectionResult? PlanarIntersectionResult(this DiGi.Geometry.Spatial.Classes.Plane? plane, DiGi.Geometry.Spatial.Classes.Point3D? point3D_1, DiGi.Geometry.Spatial.Classes.Point3D? point3D_2, bool bounded_1=false, bool bounded_2=false, double tolerance=1E-06);plane Plane
The Plane to intersect with.
point3D_1 Point3D
The first Point3D defining the line segment.
point3D_2 Point3D
The second Point3D defining the line segment.
bounded_1 System.Boolean
A System.Boolean value indicating whether the intersection is bounded for the first point.
bounded_2 System.Boolean
A System.Boolean value indicating whether the intersection is bounded for the second point.
tolerance System.Double
The System.Double tolerance used for distance calculations.
PlanarIntersectionResult
A PlanarIntersectionResult containing the result of the intersection, or null if any input parameters are null.
Calculates the planar intersection result for a given Plane and Point3D.
public static DiGi.Geometry.Spatial.Classes.PlanarIntersectionResult? PlanarIntersectionResult(this DiGi.Geometry.Spatial.Classes.Plane? plane, DiGi.Geometry.Spatial.Classes.Point3D? point3D, double tolerance=1E-06);plane Plane
The Plane used for the intersection calculation.
point3D Point3D
The Point3D to be checked against the plane.
tolerance System.Double
A System.Double value specifying the distance tolerance for determining if the point lies on the plane.
PlanarIntersectionResult
A PlanarIntersectionResult containing the intersection details, or null if either input is null or projection fails.
Calculates the intersection result between a plane and a 3D ray.
public static DiGi.Geometry.Spatial.Classes.PlanarIntersectionResult? PlanarIntersectionResult(this DiGi.Geometry.Spatial.Classes.Plane? plane, DiGi.Geometry.Spatial.Classes.Ray3D? ray3D, double tolerance=1E-06);plane Plane
The Plane to be intersected.
ray3D Ray3D
The Ray3D used for the intersection calculation.
tolerance System.Double
A System.Double value representing the distance tolerance for the intersection.
PlanarIntersectionResult
A PlanarIntersectionResult if an intersection is found and inputs are valid; otherwise, null.
Calculates the intersection result between a plane and a 3D segment.
public static DiGi.Geometry.Spatial.Classes.PlanarIntersectionResult? PlanarIntersectionResult(this DiGi.Geometry.Spatial.Classes.Plane? plane, DiGi.Geometry.Spatial.Classes.Segment3D? segment3D, double tolerance=1E-06);plane Plane
The Plane to intersect.
segment3D Segment3D
The Segment3D to intersect.
tolerance System.Double
The System.Double tolerance used for the intersection calculation.
PlanarIntersectionResult
A PlanarIntersectionResult containing the intersection details, or null if either input is null or a result cannot be determined.
Calculates the planar intersection result between a plane and a 3D polygonal face.
public static DiGi.Geometry.Spatial.Classes.PlanarIntersectionResult? PlanarIntersectionResult(this DiGi.Geometry.Spatial.Classes.Plane? plane, DiGi.Geometry.Spatial.Interfaces.IPolygonalFace3D? polygonalFace3D, double tolerance=1E-06);plane Plane
The Plane to evaluate.
polygonalFace3D DiGi.Geometry.Spatial.Interfaces.IPolygonalFace3D
The DiGi.Geometry.Spatial.Interfaces.IPolygonalFace3D to evaluate.
tolerance System.Double
The System.Double tolerance used for coplanar and distance checks.
PlanarIntersectionResult
A PlanarIntersectionResult if the intersection is successfully calculated; otherwise, null.
Calculates the planar intersection between a plane and a polyhedron.
public static DiGi.Geometry.Spatial.Classes.PlanarIntersectionResult? PlanarIntersectionResult(this DiGi.Geometry.Spatial.Classes.Plane? plane, DiGi.Geometry.Spatial.Interfaces.IPolyhedron? polyhedron, double tolerance=1E-06);plane Plane
The Plane to intersect with the polyhedron.
polyhedron DiGi.Geometry.Spatial.Interfaces.IPolyhedron
The DiGi.Geometry.Spatial.Interfaces.IPolyhedron to be intersected by the plane.
tolerance System.Double
A System.Double value representing the distance tolerance for intersection calculations.
PlanarIntersectionResult
A PlanarIntersectionResult containing the result of the intersection, or null if either input is null or the polyhedron contains no faces.
Calculates the planar intersection result between a Plane and an DiGi.Geometry.Spatial.Interfaces.ISegmentable3D object.
public static DiGi.Geometry.Spatial.Classes.PlanarIntersectionResult? PlanarIntersectionResult(this DiGi.Geometry.Spatial.Classes.Plane? plane, DiGi.Geometry.Spatial.Interfaces.ISegmentable3D? segmentable3D, double tolerance=1E-06);plane Plane
The Plane used for the intersection calculation.
segmentable3D DiGi.Geometry.Spatial.Interfaces.ISegmentable3D
The DiGi.Geometry.Spatial.Interfaces.ISegmentable3D object to be intersected with the plane.
tolerance System.Double
The System.Double tolerance value used to determine if an intersection occurs.
PlanarIntersectionResult
A PlanarIntersectionResult containing the intersection data, or null if the Plane or DiGi.Geometry.Spatial.Interfaces.ISegmentable3D is null, or if no segments are available.
Calculates the planar intersection result between a polygonal face and a line.
public static DiGi.Geometry.Spatial.Classes.PlanarIntersectionResult? PlanarIntersectionResult(this DiGi.Geometry.Spatial.Interfaces.IPolygonalFace3D? polygonalFace3D, DiGi.Geometry.Spatial.Classes.Line3D? line3D, double tolerance=1E-06);polygonalFace3D DiGi.Geometry.Spatial.Interfaces.IPolygonalFace3D
The DiGi.Geometry.Spatial.Interfaces.IPolygonalFace3D instance to intersect.
line3D Line3D
The Line3D instance to intersect.
tolerance System.Double
A System.Double value representing the distance tolerance for the intersection calculation.
PlanarIntersectionResult
A PlanarIntersectionResult containing the result of the intersection, or null if either input is null or an intersection cannot be determined.
Calculates the planar intersection between a 3D polygonal face and a line segment defined by two points.
public static DiGi.Geometry.Spatial.Classes.PlanarIntersectionResult? PlanarIntersectionResult(this DiGi.Geometry.Spatial.Interfaces.IPolygonalFace3D? polygonalFace3D, DiGi.Geometry.Spatial.Classes.Point3D? point3D_1, DiGi.Geometry.Spatial.Classes.Point3D? point3D_2, bool bounded_1, bool bounded_2, double tolerance=1E-06);polygonalFace3D DiGi.Geometry.Spatial.Interfaces.IPolygonalFace3D
The DiGi.Geometry.Spatial.Interfaces.IPolygonalFace3D to intersect with.
point3D_1 Point3D
The first Point3D defining the line segment.
point3D_2 Point3D
The second Point3D defining the line segment.
bounded_1 System.Boolean
A System.Boolean value indicating whether the intersection is bounded by the first point.
bounded_2 System.Boolean
A System.Boolean value indicating whether the intersection is bounded by the second point.
tolerance System.Double
The System.Double tolerance used for distance calculations.
PlanarIntersectionResult
A PlanarIntersectionResult containing the result of the intersection, or null if the input parameters are null or an intersection cannot be determined.
Calculates the planar intersection result of a Point3D relative to an DiGi.Geometry.Spatial.Interfaces.IPolygonalFace3D.
public static DiGi.Geometry.Spatial.Classes.PlanarIntersectionResult? PlanarIntersectionResult(this DiGi.Geometry.Spatial.Interfaces.IPolygonalFace3D? polygonalFace3D, DiGi.Geometry.Spatial.Classes.Point3D? point3D, double tolerance=1E-06);polygonalFace3D DiGi.Geometry.Spatial.Interfaces.IPolygonalFace3D
The DiGi.Geometry.Spatial.Interfaces.IPolygonalFace3D instance to evaluate.
point3D Point3D
The Point3D instance to check for intersection.
tolerance System.Double
A System.Double value representing the distance tolerance used for range checking.
PlanarIntersectionResult
A PlanarIntersectionResult containing the plane and potentially the projected point, or null if either input is null or the face has no associated plane.
Calculates the planar intersection result between a polygonal face and a ray.
public static DiGi.Geometry.Spatial.Classes.PlanarIntersectionResult? PlanarIntersectionResult(this DiGi.Geometry.Spatial.Interfaces.IPolygonalFace3D? polygonalFace3D, DiGi.Geometry.Spatial.Classes.Ray3D? ray3D, double tolerance=1E-06);polygonalFace3D DiGi.Geometry.Spatial.Interfaces.IPolygonalFace3D
The DiGi.Geometry.Spatial.Interfaces.IPolygonalFace3D instance to intersect.
ray3D Ray3D
The Ray3D instance representing the ray.
tolerance System.Double
The System.Double tolerance value used for calculations.
PlanarIntersectionResult
A PlanarIntersectionResult containing the intersection details, or null if no intersection is found or if either input is null.
Calculates the planar intersection result between a polygonal face and a segment.
public static DiGi.Geometry.Spatial.Classes.PlanarIntersectionResult? PlanarIntersectionResult(this DiGi.Geometry.Spatial.Interfaces.IPolygonalFace3D? polygonalFace3D, DiGi.Geometry.Spatial.Classes.Segment3D? segment3D, double tolerance=1E-06);polygonalFace3D DiGi.Geometry.Spatial.Interfaces.IPolygonalFace3D
The DiGi.Geometry.Spatial.Interfaces.IPolygonalFace3D representing the polygonal face.
segment3D Segment3D
The Segment3D representing the line segment.
tolerance System.Double
A System.Double value specifying the distance tolerance for the intersection calculation.
PlanarIntersectionResult
A PlanarIntersectionResult containing the result of the intersection, or null if the DiGi.Geometry.Spatial.Interfaces.IPolygonalFace3D or Segment3D is null.
Calculates the planar intersection result between two polygonal faces.
public static DiGi.Geometry.Spatial.Classes.PlanarIntersectionResult? PlanarIntersectionResult(this DiGi.Geometry.Spatial.Interfaces.IPolygonalFace3D? polygonalFace3D_1, DiGi.Geometry.Spatial.Interfaces.IPolygonalFace3D? polygonalFace3D_2, double tolerance=1E-06);polygonalFace3D_1 DiGi.Geometry.Spatial.Interfaces.IPolygonalFace3D
The first DiGi.Geometry.Spatial.Interfaces.IPolygonalFace3D face.
polygonalFace3D_2 DiGi.Geometry.Spatial.Interfaces.IPolygonalFace3D
The second DiGi.Geometry.Spatial.Interfaces.IPolygonalFace3D face.
tolerance System.Double
The System.Double tolerance used for the intersection calculation.
PlanarIntersectionResult
A PlanarIntersectionResult containing the result of the planar intersection, or null if either face is null or their planes are not defined.
Calculates the planar intersection result between a polygonal face and all faces of a polyhedron.
public static DiGi.Geometry.Spatial.Classes.PlanarIntersectionResult? PlanarIntersectionResult(this DiGi.Geometry.Spatial.Interfaces.IPolygonalFace3D? polygonalFace3D, DiGi.Geometry.Spatial.Interfaces.IPolyhedron? polyhedron, double tolerance=1E-06);polygonalFace3D DiGi.Geometry.Spatial.Interfaces.IPolygonalFace3D
The DiGi.Geometry.Spatial.Interfaces.IPolygonalFace3D to be intersected.
polyhedron DiGi.Geometry.Spatial.Interfaces.IPolyhedron
The DiGi.Geometry.Spatial.Interfaces.IPolyhedron whose faces are used for the intersection calculation.
tolerance System.Double
A System.Double value specifying the distance tolerance.
PlanarIntersectionResult
A PlanarIntersectionResult containing the result of the intersection, or null if either the DiGi.Geometry.Spatial.Interfaces.IPolygonalFace3D or the DiGi.Geometry.Spatial.Interfaces.IPolyhedron is null.
Create.PlanarIntersectionResult(this IPolygonalFace3D, IEnumerable<IPolygonalFace3D>, double) Method
Calculates the planar intersection between a reference polygonal face and a collection of other polygonal faces.
public static DiGi.Geometry.Spatial.Classes.PlanarIntersectionResult? PlanarIntersectionResult(this DiGi.Geometry.Spatial.Interfaces.IPolygonalFace3D? polygonalFace3D, System.Collections.Generic.IEnumerable<DiGi.Geometry.Spatial.Interfaces.IPolygonalFace3D>? polygonalFace3Ds, double tolerance=1E-06);polygonalFace3D DiGi.Geometry.Spatial.Interfaces.IPolygonalFace3D
The reference DiGi.Geometry.Spatial.Interfaces.IPolygonalFace3D object.
polygonalFace3Ds System.Collections.Generic.IEnumerable<DiGi.Geometry.Spatial.Interfaces.IPolygonalFace3D>
An System.Collections.Generic.IEnumerable<> containing the polygonal faces to intersect with the reference face.
tolerance System.Double
A System.Double value specifying the distance tolerance for the intersection calculation.
PlanarIntersectionResult
A PlanarIntersectionResult object if a valid intersection is found; otherwise, null.
Creates a Plane based on the World Z axis at the specified origin point.
public static DiGi.Geometry.Spatial.Classes.Plane? Plane(DiGi.Geometry.Spatial.Classes.Point3D? origin);origin Point3D
The Point3D representing the origin of the plane. If null, the method returns null.
Plane
A Plane instance if a valid Point3D is provided; otherwise, null.
Creates a Plane defined by an origin point and two axes.
public static DiGi.Geometry.Spatial.Classes.Plane? Plane(DiGi.Geometry.Spatial.Classes.Point3D? origin, DiGi.Geometry.Spatial.Classes.Vector3D? axisX, DiGi.Geometry.Spatial.Classes.Vector3D? axisY);origin Point3D
The Point3D that defines the origin of the plane.
axisX Vector3D
The Vector3D(Vector3D, bool) that defines the X-axis of the plane.
axisY Vector3D
The Vector3D(Vector3D, bool) that defines the Y-axis of the plane.
Plane
A Plane instance if all parameters are non-null; otherwise, null.
Creates a plane at the specified elevation along the Z-axis.
public static DiGi.Geometry.Spatial.Classes.Plane? Plane(double elevation);elevation System.Double
The double value representing the elevation of the plane.
Plane
A Plane object positioned at the given elevation, or null if the provided double is NaN.
Creates a plane perpendicular to the specified axis and offsets it by the given value.
public static DiGi.Geometry.Spatial.Classes.Plane? Plane(double value, int dimensionIndex);value System.Double
The distance of type System.Double to move the plane along the axis.
dimensionIndex System.Int32
The index of type System.Int32 representing the dimension (0 for X, 1 for Y, 2 for Z).
Plane
A Plane object shifted by the value, or null if the dimensionIndex is not a valid axis index.
Creates a Plane from three specified Point3D points.
public static DiGi.Geometry.Spatial.Classes.Plane? Plane(this 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 point.
point3D_2 Point3D
The second Point3D point.
point3D_3 Point3D
The third Point3D point.
Plane
A Plane if the points are valid and not collinear; otherwise, null.
Creates a Plane from a collection of Point3D points using the specified tolerance.
public static DiGi.Geometry.Spatial.Classes.Plane? Plane(this System.Collections.Generic.IEnumerable<DiGi.Geometry.Spatial.Classes.Point3D>? point3Ds, double tolerance=1E-06);point3Ds System.Collections.Generic.IEnumerable<Point3D>
The System.Collections.Generic.IEnumerable<> of Point3D points used to define the plane.
tolerance System.Double
The System.Double tolerance value used for calculating the normal vector.
Plane
A Plane if a valid plane can be constructed from the provided points; otherwise, null.
Returns a list of Plane objects that define the boundaries of the specified BoundingBox3D.
public static System.Collections.Generic.List<DiGi.Geometry.Spatial.Classes.Plane>? Planes(this DiGi.Geometry.Spatial.Classes.BoundingBox3D? boundingBox3D);boundingBox3D BoundingBox3D
The BoundingBox3D instance from which to extract the planes.
System.Collections.Generic.List<Plane>
A List<Plane> containing the boundary planes, or null if the BoundingBox3D is null or contains invalid bounds.
Generates a list of Point3D points from the specified Segment3D based on the provided count.
public static System.Collections.Generic.List<DiGi.Geometry.Spatial.Classes.Point3D>? Point3Ds(this DiGi.Geometry.Spatial.Classes.Segment3D? segment3D, int count);segment3D Segment3D
The Segment3D instance to extract points from.
count System.Int32
The number of Point3D points to retrieve.
System.Collections.Generic.List<Point3D>
A List<Point3D> containing the requested points, or null if the Segment3D is null, the count is negative, or the points cannot be retrieved.
Creates a Polygon3D instance based on the provided Plane and a collection of Point2D points.
public static DiGi.Geometry.Spatial.Classes.Polygon3D? Polygon3D(DiGi.Geometry.Spatial.Classes.Plane? plane, params DiGi.Geometry.Planar.Classes.Point2D?[]? point2Ds);plane Plane
The Plane that defines the surface of the polygon.
A variable number of Point2D objects representing the vertices of the polygon.
Polygon3D
A new Polygon3D instance if a valid Plane is provided and there are at least three non-null Point2D points; otherwise, null.
Creates a Polygon3D from a Segment3D and a Vector3D(Vector3D, bool).
public static DiGi.Geometry.Spatial.Classes.Polygon3D? Polygon3D(this DiGi.Geometry.Spatial.Classes.Segment3D? segment3D, DiGi.Geometry.Spatial.Classes.Vector3D? vector3D, double tolerance=1E-06);segment3D Segment3D
The Segment3D to use as the base for the polygon.
vector3D Vector3D
The Vector3D(Vector3D, bool) used to define the polygon's extent or direction.
tolerance System.Double
The System.Double tolerance value used for length and similarity comparisons.
Polygon3D
A Polygon3D if a valid polygon can be created; otherwise, null.
Creates a Polygon3D from the specified Segment3D with a given height.
public static DiGi.Geometry.Spatial.Classes.Polygon3D? Polygon3D(this DiGi.Geometry.Spatial.Classes.Segment3D? segment3D, double height, double tolerance=0.0349066);segment3D Segment3D
The Segment3D to be converted into a polygon.
height System.Double
The System.Double height of the resulting polygon.
tolerance System.Double
The System.Double tolerance used to determine if the segment is parallel to the Z-axis.
Polygon3D
A Polygon3D instance, or null if the Segment3D is null, height is NaN, or the segment direction is parallel to the WorldZ axis within the specified tolerance.
Creates a Polygon3D from the specified normal vector and a collection of 3D points.
public static DiGi.Geometry.Spatial.Classes.Polygon3D? Polygon3D(this DiGi.Geometry.Spatial.Classes.Vector3D? normal, System.Collections.Generic.IEnumerable<DiGi.Geometry.Spatial.Classes.Point3D?>? point3Ds);normal Vector3D
The Vector3D(Vector3D, bool) representing the normal vector of the plane.
point3Ds System.Collections.Generic.IEnumerable<Point3D>
An System.Collections.Generic.IEnumerable<> containing the vertices to be used for the polygon.
Polygon3D
A Polygon3D if a valid polygon can be constructed; otherwise, null.
Creates a Polygon3D from a collection of Point3D objects.
public static DiGi.Geometry.Spatial.Classes.Polygon3D? Polygon3D(this System.Collections.Generic.IEnumerable<DiGi.Geometry.Spatial.Classes.Point3D?>? point3Ds, double tolerace=1E-06);point3Ds System.Collections.Generic.IEnumerable<Point3D>
The System.Collections.Generic.IEnumerable<> of Point3D objects used to define the polygon.
tolerace System.Double
The System.Double value representing the distance tolerance for plane calculation.
Polygon3D
A Polygon3D object if a valid polygon can be created; otherwise, null.
Converts a planar object to a Polygon3D.
public static DiGi.Geometry.Spatial.Classes.Polygon3D? Polygon3D<T>(this DiGi.Geometry.Spatial.Interfaces.IPlanar<T>? planar)
where T : DiGi.Geometry.Planar.Interfaces.IPolygonal2D;T
The type of the 2D polygonal geometry, which must implement IPolygonal2D.
planar DiGi.Geometry.Spatial.Interfaces.IPlanar<T>
The DiGi.Geometry.Spatial.Interfaces.IPlanar<> object to convert.
Polygon3D
A Polygon3D if the DiGi.Geometry.Spatial.Interfaces.IPlanar<> object, its geometry, and its plane are not null; otherwise, null.
Generates a list of Polygon3D objects from the specified BoundingBox3D.
public static System.Collections.Generic.List<DiGi.Geometry.Spatial.Classes.Polygon3D>? Polygon3Ds(DiGi.Geometry.Spatial.Classes.BoundingBox3D? boundingBox3D);boundingBox3D BoundingBox3D
The BoundingBox3D used to create the polygons.
System.Collections.Generic.List<Polygon3D>
A List<Polygon3D> containing the generated polygons, or null if the provided BoundingBox3D or its boundaries are null.
Creates a PolygonalFace3D based on the specified Plane and a collection of Point2D vertices.
public static DiGi.Geometry.Spatial.Classes.PolygonalFace3D? PolygonalFace3D(DiGi.Geometry.Spatial.Classes.Plane? plane, params DiGi.Geometry.Planar.Classes.Point2D[]? points);plane Plane
The Plane on which the polygonal face is located.
An array of Point2D objects defining the vertices of the polygon.
PolygonalFace3D
A PolygonalFace3D instance if the Plane and Point2D array are not null and contain at least three points; otherwise, null.
Creates a PolygonalFace3D based on an external boundary and optional internal boundaries.
public static DiGi.Geometry.Spatial.Classes.PolygonalFace3D? PolygonalFace3D(DiGi.Geometry.Spatial.Interfaces.IPolygonal3D? externalEdge, System.Collections.Generic.IEnumerable<DiGi.Geometry.Spatial.Interfaces.IPolygonal3D>? internalEdges=null, double tolerance=1E-06);externalEdge DiGi.Geometry.Spatial.Interfaces.IPolygonal3D
The DiGi.Geometry.Spatial.Interfaces.IPolygonal3D representing the external edge of the face.
internalEdges System.Collections.Generic.IEnumerable<DiGi.Geometry.Spatial.Interfaces.IPolygonal3D>
An System.Collections.Generic.IEnumerable<> containing the internal edges (holes) of the face.
tolerance System.Double
The System.Double tolerance value used for distance calculations.
PolygonalFace3D
A PolygonalFace3D object if the face could be created; otherwise, null.
Converts an DiGi.Geometry.Spatial.Interfaces.IPolygonalFace3D instance to a PolygonalFace3D instance if the underlying plane is a Plane and the geometry is an IPolygonalFace2D.
public static DiGi.Geometry.Spatial.Classes.PolygonalFace3D? PolygonalFace3D(this DiGi.Geometry.Spatial.Interfaces.IPolygonalFace3D? polygonalFace3D);polygonalFace3D DiGi.Geometry.Spatial.Interfaces.IPolygonalFace3D
The DiGi.Geometry.Spatial.Interfaces.IPolygonalFace3D instance to convert.
PolygonalFace3D
A new PolygonalFace3D instance if the conversion is successful; otherwise, null.
Converts a Planar<T> to a PolygonalFace3D.
public static DiGi.Geometry.Spatial.Classes.PolygonalFace3D? PolygonalFace3D<T>(this DiGi.Geometry.Spatial.Classes.Planar<T>? planar)
where T : DiGi.Geometry.Planar.Interfaces.IPolygonal2D;T
The type of the polygonal 2D geometry, which must implement IPolygonal2D.
planar DiGi.Geometry.Spatial.Classes.Planar<T>
The Planar<T> instance to convert.
PolygonalFace3D
A PolygonalFace3D if the conversion is successful; otherwise, null.
Extracts the faces of the given polyhedron without cloning them.
private static System.Collections.Generic.List<DiGi.Geometry.Spatial.Interfaces.IPolygonalFace3D> PolygonalFace3Ds<TPolygonalFace3D>(DiGi.Geometry.Spatial.Classes.Polyhedron<TPolygonalFace3D> polyhedron)
where TPolygonalFace3D : DiGi.Geometry.Spatial.Interfaces.IPolygonalFace3D;TPolygonalFace3D
The type of polygonal face, which must implement DiGi.Geometry.Spatial.Interfaces.IPolygonalFace3D.
polyhedron DiGi.Geometry.Spatial.Classes.Polyhedron<TPolygonalFace3D>
The source polyhedron.
System.Collections.Generic.List<DiGi.Geometry.Spatial.Interfaces.IPolygonalFace3D>
A list of the polyhedron faces (never null; possibly empty).
Converts the specified BoundingBox3D to a Polyhedron.
public static DiGi.Geometry.Spatial.Classes.Polyhedron? Polyhedron(this DiGi.Geometry.Spatial.Classes.BoundingBox3D? boundingBox3D);boundingBox3D BoundingBox3D
The BoundingBox3D instance to convert.
Polyhedron
A Polyhedron representing the bounding box, or null if the provided BoundingBox3D is null or cannot be converted into a valid polyhedron.
Generates a Polyhedron from the specified Ellipsoid(Point3D, Point3D, double, double, double) using an angle factor to determine the resolution of stacks and slices.
public static DiGi.Geometry.Spatial.Classes.Polyhedron? Polyhedron(this DiGi.Geometry.Spatial.Classes.Ellipsoid? ellipsoid, double angleFactor);ellipsoid Ellipsoid
The Ellipsoid(Point3D, Point3D, double, double, double) instance to be converted into a polyhedron.
angleFactor System.Double
A System.Double value used to calculate the number of stacks and slices for the resulting polyhedron.
Polyhedron
A Polyhedron composed of triangular faces representing the ellipsoid, or null if the provided Ellipsoid(Point3D, Point3D, double, double, double) is null or the angle factor does not yield a positive angular step.
Generates a Polyhedron from the specified Ellipsoid(Point3D, Point3D, double, double, double).
public static DiGi.Geometry.Spatial.Classes.Polyhedron? Polyhedron(this DiGi.Geometry.Spatial.Classes.Ellipsoid? ellipsoid, int stacks, int slices);ellipsoid Ellipsoid
The Ellipsoid(Point3D, Point3D, double, double, double) to convert into a polyhedron.
stacks System.Int32
The number of stacks (latitude divisions) as an System.Int32 used to generate the polyhedron. Must be at least 2.
slices System.Int32
The number of slices (longitude divisions) as an System.Int32 used to generate the polyhedron. Must be at least 3.
Polyhedron
A Polyhedron composed of triangular faces representing the ellipsoid, or null if the provided Ellipsoid(Point3D, Point3D, double, double, double) is null, incomplete, or the resolution values are out of range.
Converts the specified Mesh3D to a Polyhedron by creating a triangular polygonal face for each mesh triangle.
Faces are built with scalar plane-coordinate arithmetic and adopted directly into the polyhedron without defensive cloning, so the conversion runs without reflection-based copies.
public static DiGi.Geometry.Spatial.Classes.Polyhedron? Polyhedron(this DiGi.Geometry.Spatial.Classes.Mesh3D? mesh3D);mesh3D Mesh3D
The Mesh3D instance to convert.
Polyhedron
A Polyhedron composed of triangular faces, or null if the Mesh3D is null, invalid, or yields fewer than four valid faces.
Creates a Polyhedron from the specified PolygonalFaceExtrusion.
public static DiGi.Geometry.Spatial.Classes.Polyhedron? Polyhedron(this DiGi.Geometry.Spatial.Classes.PolygonalFaceExtrusion? polygonalFaceExtrusion, double tolerance=1E-06);polygonalFaceExtrusion PolygonalFaceExtrusion
The PolygonalFaceExtrusion to convert into a Polyhedron.
tolerance System.Double
The System.Double tolerance value used for the operation.
Polyhedron
A Polyhedron if the PolygonalFaceExtrusion is not null; otherwise, null.
Creates a Polyhedron(this IPolygonalFace3D, Vector3D, double) from the specified DiGi.Geometry.Spatial.Interfaces.IPolygonalFace3D and Vector3D(Vector3D, bool).
public static DiGi.Geometry.Spatial.Classes.Polyhedron? Polyhedron(this DiGi.Geometry.Spatial.Interfaces.IPolygonalFace3D? polygonalFace3D, DiGi.Geometry.Spatial.Classes.Vector3D? vector3D, double tolerance=1E-06);polygonalFace3D DiGi.Geometry.Spatial.Interfaces.IPolygonalFace3D
The DiGi.Geometry.Spatial.Interfaces.IPolygonalFace3D that serves as the base of the polyhedron.
vector3D Vector3D
The Vector3D(Vector3D, bool) defining the direction and magnitude for the polyhedron creation.
tolerance System.Double
A System.Double value representing the distance tolerance used for calculations.
Polyhedron
A Polyhedron if successfully created; otherwise, null.
Converts the specified DiGi.Geometry.Spatial.Interfaces.IPolyhedron to a Polyhedron.
public static DiGi.Geometry.Spatial.Classes.Polyhedron? Polyhedron(this DiGi.Geometry.Spatial.Interfaces.IPolyhedron polyhedron);polyhedron DiGi.Geometry.Spatial.Interfaces.IPolyhedron
The DiGi.Geometry.Spatial.Interfaces.IPolyhedron instance to convert.
Polyhedron
A Polyhedron instance if the conversion is successful; otherwise, null.
Creates a Polyhedron(this IPolygonalFace3D, Vector3D, double) from the specified collection of polygonal faces.
public static DiGi.Geometry.Spatial.Classes.Polyhedron? Polyhedron(this System.Collections.Generic.IEnumerable<DiGi.Geometry.Spatial.Interfaces.IPolygonalFace3D>? polygonalFace3Ds);polygonalFace3Ds System.Collections.Generic.IEnumerable<DiGi.Geometry.Spatial.Interfaces.IPolygonalFace3D>
An System.Collections.Generic.IEnumerable<> containing the polygonal faces to be used for the construction.
Polyhedron
A new Polyhedron instance if the System.Collections.Generic.IEnumerable<> is not null and contains at least four elements; otherwise, null.
Calculates the projection result of a 3D ellipse onto a plane.
public static DiGi.Geometry.Spatial.Classes.ProjectionResult? ProjectionResult(this DiGi.Geometry.Spatial.Classes.Plane? plane, DiGi.Geometry.Spatial.Classes.Ellipse3D? ellipse3D, double tolerance=1E-06);plane Plane
The Plane onto which the ellipse is projected.
ellipse3D Ellipse3D
The Ellipse3D to be projected.
tolerance System.Double
The System.Double tolerance used to determine if the plane and the ellipse's plane are parallel.
ProjectionResult
A ProjectionResult containing the projected 2D ellipse, or null if either the Plane or Ellipse3D is null.
Projects a Line3D onto a Plane.
public static DiGi.Geometry.Spatial.Classes.ProjectionResult? ProjectionResult(this DiGi.Geometry.Spatial.Classes.Plane? plane, DiGi.Geometry.Spatial.Classes.Line3D? line3D, double tolerance=1E-06);plane Plane
The Plane to project the line onto.
line3D Line3D
The Line3D to be projected.
tolerance System.Double
The System.Double tolerance used for similarity and intersection calculations.
ProjectionResult
A ProjectionResult containing the projection results, or null if either input is null or the projection cannot be determined.
Projects a Point3D onto a Plane to create a ProjectionResult.
public static DiGi.Geometry.Spatial.Classes.ProjectionResult? ProjectionResult(this DiGi.Geometry.Spatial.Classes.Plane? plane, DiGi.Geometry.Spatial.Classes.Point3D? point3D);plane Plane
The Plane used for the projection.
point3D Point3D
The Point3D to be projected onto the plane.
ProjectionResult
A ProjectionResult containing the result of the projection, or null if the Plane or Point3D is null, or if the conversion to a Point2D fails.
Projects a Polygon3D onto a Plane.
public static DiGi.Geometry.Spatial.Classes.ProjectionResult? ProjectionResult(this DiGi.Geometry.Spatial.Classes.Plane? plane, DiGi.Geometry.Spatial.Classes.Polygon3D? polygon3D, double tolerance=1E-06);plane Plane
The Plane to project onto.
polygon3D Polygon3D
The Polygon3D to be projected.
tolerance System.Double
A System.Double value representing the distance tolerance for the projection.
ProjectionResult
A ProjectionResult containing the result of the projection, or null if the input parameters are null or the resulting geometry is invalid.
Calculates the projection result of a 3D polygonal face onto a plane.
public static DiGi.Geometry.Spatial.Classes.ProjectionResult? ProjectionResult(this DiGi.Geometry.Spatial.Classes.Plane? plane, DiGi.Geometry.Spatial.Classes.PolygonalFace3D? polygonalFace3D, double tolerance=1E-06);plane Plane
The Plane to project onto.
polygonalFace3D PolygonalFace3D
The PolygonalFace3D to be projected.
tolerance System.Double
A System.Double value representing the distance tolerance for the projection.
ProjectionResult
A ProjectionResult if the projection is successful; otherwise, null.
Calculates the projection of a 3D ray onto a plane.
public static DiGi.Geometry.Spatial.Classes.ProjectionResult? ProjectionResult(this DiGi.Geometry.Spatial.Classes.Plane? plane, DiGi.Geometry.Spatial.Classes.Ray3D? ray3D, double tolerance=1E-06);plane Plane
The Plane to project the ray onto.
ray3D Ray3D
The Ray3D to be projected.
tolerance System.Double
The System.Double tolerance used for similarity and distance calculations.
ProjectionResult
A ProjectionResult containing the projection data, or null if either the Plane or Ray3D is null.
Calculates the projection result of a Segment3D onto a Plane.
public static DiGi.Geometry.Spatial.Classes.ProjectionResult? ProjectionResult(this DiGi.Geometry.Spatial.Classes.Plane? plane, DiGi.Geometry.Spatial.Classes.Segment3D? segment3D, double tolerance=1E-06);plane Plane
The Plane to project onto.
segment3D Segment3D
The Segment3D to be projected.
tolerance System.Double
A System.Double value representing the tolerance for similarity calculations.
ProjectionResult
A ProjectionResult containing the projection details, or null if either the Plane or Segment3D is null.
Calculates the projection result of a 3D triangle onto a plane.
public static DiGi.Geometry.Spatial.Classes.ProjectionResult? ProjectionResult(this DiGi.Geometry.Spatial.Classes.Plane? plane, DiGi.Geometry.Spatial.Classes.Triangle3D? triangle3D, double tolerance=1E-06);plane Plane
The Plane object to project onto.
triangle3D Triangle3D
The Triangle3D object to be projected.
tolerance System.Double
A System.Double value representing the distance tolerance for collinearity checks.
ProjectionResult
A ProjectionResult containing the projection data, or null if the input is null or the resulting points are not valid.
Calculates the projection result of a Vector3D(Vector3D, bool) onto a Plane.
public static DiGi.Geometry.Spatial.Classes.ProjectionResult? ProjectionResult(this DiGi.Geometry.Spatial.Classes.Plane? plane, DiGi.Geometry.Spatial.Classes.Vector3D? vector3D, double tolerance=1E-06);plane Plane
The Plane to project onto.
vector3D Vector3D
The Vector3D(Vector3D, bool) to be projected.
tolerance System.Double
A System.Double value representing the minimum length threshold for the projection result.
ProjectionResult
A ProjectionResult containing the projection details, or null if the input parameters are null or the resulting vector length is less than the specified System.Double tolerance.
Calculates the projection result of a specified 3D geometry onto a plane.
public static DiGi.Geometry.Spatial.Classes.ProjectionResult? ProjectionResult(this DiGi.Geometry.Spatial.Classes.Plane? plane, DiGi.Geometry.Spatial.Interfaces.IGeometry3D? geometry3D, double tolerance=1E-06);plane Plane
The Plane to project onto.
geometry3D DiGi.Geometry.Spatial.Interfaces.IGeometry3D
The DiGi.Geometry.Spatial.Interfaces.IGeometry3D object to be projected.
tolerance System.Double
The System.Double value representing the distance tolerance for the projection.
ProjectionResult
A ProjectionResult containing the result of the projection, or null if either the plane or geometry is null.
Projects a collection of Point3D points onto a Plane.
public static DiGi.Geometry.Spatial.Classes.ProjectionResult? ProjectionResult(this DiGi.Geometry.Spatial.Classes.Plane? plane, System.Collections.Generic.IEnumerable<DiGi.Geometry.Spatial.Classes.Point3D>? point3Ds);plane Plane
The Plane to which the points are projected.
point3Ds System.Collections.Generic.IEnumerable<Point3D>
An System.Collections.Generic.IEnumerable<> of Point3D objects to project.
ProjectionResult
A ProjectionResult containing the projection data, or null if either the Plane or the System.Collections.Generic.IEnumerable<> of Point3D is null.
Projects a collection of 3D geometry objects onto a plane.
public static DiGi.Geometry.Spatial.Classes.ProjectionResult? ProjectionResult<T>(this DiGi.Geometry.Spatial.Classes.Plane? plane, System.Collections.Generic.IEnumerable<T>? geometry3Ds, double tolerance=1E-06)
where T : DiGi.Geometry.Spatial.Interfaces.IGeometry3D;T
The type of 3D geometry, which must implement DiGi.Geometry.Spatial.Interfaces.IGeometry3D.
plane Plane
The Plane to project the geometries onto.
geometry3Ds System.Collections.Generic.IEnumerable<T>
An System.Collections.Generic.IEnumerable<> of 3D geometry objects to be projected.
tolerance System.Double
A System.Double value specifying the distance tolerance for the projection process.
ProjectionResult
A ProjectionResult containing the results of the projection, or null if the plane or geometry3Ds is null.
Converts a collection of Point3D objects into a list of Segment3D objects.
public static System.Collections.Generic.List<DiGi.Geometry.Spatial.Classes.Segment3D>? Segment3Ds(this System.Collections.Generic.IEnumerable<DiGi.Geometry.Spatial.Classes.Point3D>? point3Ds, bool closed=false);point3Ds System.Collections.Generic.IEnumerable<Point3D>
The System.Collections.Generic.IEnumerable<> of Point3D points to process.
closed System.Boolean
A System.Boolean value indicating whether the segment list should be closed by connecting the last point back to the first point.
System.Collections.Generic.List<Segment3D>
A System.Collections.Generic.List<> of Segment3D objects, or null if the provided System.Collections.Generic.IEnumerable<> is null.
Create.UnionResult3D<TPolygonalFace3D>(this Polyhedron<TPolygonalFace3D>, Polyhedron<TPolygonalFace3D>, double) Method
Calculates the 3D boolean union between two polyhedra defined by TPolygonalFace3D faces.
public static DiGi.Geometry.Spatial.Classes.UnionResult3D? UnionResult3D<TPolygonalFace3D>(this DiGi.Geometry.Spatial.Classes.Polyhedron<TPolygonalFace3D>? polyhedron_1, DiGi.Geometry.Spatial.Classes.Polyhedron<TPolygonalFace3D>? polyhedron_2, double tolerance=1E-06)
where TPolygonalFace3D : DiGi.Geometry.Spatial.Interfaces.IPolygonalFace3D;TPolygonalFace3D
The type of polygonal face, which must implement DiGi.Geometry.Spatial.Interfaces.IPolygonalFace3D.
polyhedron_1 DiGi.Geometry.Spatial.Classes.Polyhedron<TPolygonalFace3D>
The first polyhedron.
polyhedron_2 DiGi.Geometry.Spatial.Classes.Polyhedron<TPolygonalFace3D>
The second polyhedron.
tolerance System.Double
The distance tolerance for boolean union computations.
UnionResult3D
A UnionResult3D containing the union geometry (either a Polyhedron, multiple disjoint Polyhedrons, or individual face/segment elements), or null if both inputs are null.
The boundary of the union polyhedron A U B is composed of:
- Faces of A that lie outside the volume of B.
- Faces of B that lie outside the volume of A.
If the remaining boundary pieces do not form a closed solid volume (less than 4 faces, or non-closed shell), the method falls back to returning the individual PolygonalFace3D elements representing the remaining boundary surfaces.
Deduplicates coplanar faces with coincident centroids using a spatial hash on the centroid coordinates, replacing the quadratic all-pairs comparison with an expected linear-time pass. Centroids are computed once per face instead of once per comparison.
private static System.Collections.Generic.List<DiGi.Geometry.Spatial.Interfaces.IPolygonalFace3D> UniquePolygonalFace3Ds(System.Collections.Generic.List<DiGi.Geometry.Spatial.Interfaces.IPolygonalFace3D> polygonalFace3Ds, double tolerance);polygonalFace3Ds System.Collections.Generic.List<DiGi.Geometry.Spatial.Interfaces.IPolygonalFace3D>
tolerance System.Double
System.Collections.Generic.List<DiGi.Geometry.Spatial.Interfaces.IPolygonalFace3D>
Creates a copy of the specified Vector3D(Vector3D, bool), with an option to normalize the resulting vector.
public static DiGi.Geometry.Spatial.Classes.Vector3D? Vector3D(DiGi.Geometry.Spatial.Classes.Vector3D? vector3D, bool normalize=false);vector3D Vector3D
The source Vector3D(Vector3D, bool) instance to be copied.
normalize System.Boolean
A System.Boolean value indicating whether the returned vector should be normalized.
Vector3D
A new Vector3D(Vector3D, bool) instance if the provided Vector3D(Vector3D, bool) is not null; otherwise, returns null.
public static class Create.Transform3DInheritance System.Object → Transform3D
Create.Transform3D.CoordinateSystem3DToCoordinateSystem3D(CoordinateSystem3D, CoordinateSystem3D) Method
Calculates the transformation from one 3D coordinate system to another 3D coordinate system.
public static DiGi.Geometry.Spatial.Classes.Transform3D? CoordinateSystem3DToCoordinateSystem3D(DiGi.Geometry.Spatial.Classes.CoordinateSystem3D? coordinateSystem3D_From, DiGi.Geometry.Spatial.Classes.CoordinateSystem3D? coordinateSystem3D_To);coordinateSystem3D_From CoordinateSystem3D
The source CoordinateSystem3D coordinate system.
coordinateSystem3D_To CoordinateSystem3D
The destination CoordinateSystem3D coordinate system.
Transform3D
A Transform3D representing the transformation from the source to the destination, or null if either input is null.
Converts a CoordinateSystem3D to a Transform3D that transforms the coordinate system to the origin.
public static DiGi.Geometry.Spatial.Classes.Transform3D? CoordinateSystem3DToOrigin(DiGi.Geometry.Spatial.Classes.CoordinateSystem3D? coordinateSystem3D);coordinateSystem3D CoordinateSystem3D
The CoordinateSystem3D to convert. This value can be null.
Transform3D
A Transform3D representing the transformation to the origin, or null if the provided CoordinateSystem3D is null.
Creates a new Transform3D representing the identity transformation.
public static DiGi.Geometry.Spatial.Classes.Transform3D Identity();Transform3D
A Transform3D instance initialized with an identity matrix.
Creates a transformation matrix that mirrors coordinates across the XY plane.
public static DiGi.Geometry.Spatial.Classes.Transform3D MirrorXY();Transform3D
A Transform3D representing the mirroring transformation.
Creates a Transform3D that mirrors coordinates across the XZ plane.
public static DiGi.Geometry.Spatial.Classes.Transform3D MirrorXZ();Transform3D
A Transform3D representing the mirroring transformation.
Creates a Transform3D that mirrors coordinates across the YZ plane.
public static DiGi.Geometry.Spatial.Classes.Transform3D MirrorYZ();Transform3D
A Transform3D representing the mirroring transformation.
Creates a Transform3D that represents the transformation from the origin to the specified CoordinateSystem3D.
public static DiGi.Geometry.Spatial.Classes.Transform3D? OriginToCoordinateSystem3D(DiGi.Geometry.Spatial.Classes.CoordinateSystem3D? coordinateSystem3D);coordinateSystem3D CoordinateSystem3D
The CoordinateSystem3D to transform to.
Transform3D
A Transform3D representing the transformation from the origin to the coordinate system, or null if the provided CoordinateSystem3D is null.
Calculates the transformation from the origin to the specified Plane.
public static DiGi.Geometry.Spatial.Classes.Transform3D? OriginToPlane(DiGi.Geometry.Spatial.Classes.Plane? plane);plane Plane
The Plane to which the origin is transformed.
Transform3D
A Transform3D representing the transformation, or null if the provided Plane is null.
Creates a transformation matrix that translates the origin to the specified Point3D.
public static DiGi.Geometry.Spatial.Classes.Transform3D? OriginTranslation(DiGi.Geometry.Spatial.Classes.Point3D? point3D);point3D Point3D
The Point3D specifying the translation coordinates.
Transform3D
A Transform3D representing the translation, or null if the provided Point3D is null.
Calculates the Transform3D required to transform a specified Plane to the origin.
public static DiGi.Geometry.Spatial.Classes.Transform3D? PlaneToOrigin(DiGi.Geometry.Spatial.Classes.Plane? plane);plane Plane
The Plane to be transformed to the origin.
Transform3D
A Transform3D representing the transformation from the plane to the origin, or null if the provided Plane is null.
Creates a transformation that maps a plane defined by an origin and three axes to the coordinate system's origin.
public static DiGi.Geometry.Spatial.Classes.Transform3D? PlaneToOrigin(DiGi.Geometry.Spatial.Classes.Point3D? origin, DiGi.Geometry.Spatial.Classes.Vector3D? axisX, DiGi.Geometry.Spatial.Classes.Vector3D? axisY, DiGi.Geometry.Spatial.Classes.Vector3D? axisZ);origin Point3D
The Point3D representing the origin of the plane.
axisX Vector3D
The Vector3D(Vector3D, bool) representing the X-axis of the plane.
axisY Vector3D
The Vector3D(Vector3D, bool) representing the Y-axis of the plane.
axisZ Vector3D
The Vector3D(Vector3D, bool) representing the Z-axis of the plane.
Transform3D
A Transform3D object if all parameters are provided; otherwise, null.
Calculates a Transform3D that transforms coordinates from one Plane to another.
public static DiGi.Geometry.Spatial.Classes.Transform3D? PlaneToPlane(DiGi.Geometry.Spatial.Classes.Plane? plane_From, DiGi.Geometry.Spatial.Classes.Plane? plane_To);plane_From Plane
The source Plane.
plane_To Plane
The destination Plane.
Transform3D
A Transform3D representing the transformation from the source plane to the destination plane, or null if either input plane is null.
Creates a transformation matrix that projects coordinates onto the XY plane by setting the Z component to zero.
public static DiGi.Geometry.Spatial.Classes.Transform3D ProjectionXY();Transform3D
A Transform3D representing the projection onto the XY plane.
Creates a transformation matrix that projects coordinates onto the XZ plane.
public static DiGi.Geometry.Spatial.Classes.Transform3D ProjectionXZ();Transform3D
A Transform3D representing the projection onto the XZ plane.
Creates a transformation matrix that projects points onto the YZ plane by removing the X component.
public static DiGi.Geometry.Spatial.Classes.Transform3D ProjectionYZ();Transform3D
A Transform3D representing the projection onto the YZ plane.
Rotation Transform around given axis and origin by angle.
public static DiGi.Geometry.Spatial.Classes.Transform3D? Rotation(DiGi.Geometry.Spatial.Classes.Point3D? origin, DiGi.Geometry.Spatial.Classes.Vector3D? axis, double angle);origin Point3D
Origin Point
axis Vector3D
Axis
angle System.Double
Angle
Rotation Transform3D around the axis.
public static DiGi.Geometry.Spatial.Classes.Transform3D? Rotation(DiGi.Geometry.Spatial.Classes.Vector3D? axis, double angle);axis Vector3D
rotation axis Vector3D
angle System.Double
Angle in radians
Transform3D
Transform3D
Gets Rotation Transform3D around the x-axis
public static DiGi.Geometry.Spatial.Classes.Transform3D RotationX(double angle);angle System.Double
Angle in radians
Transform3D
Transform3D
Gets Rotation Transform3D around the y-axis
public static DiGi.Geometry.Spatial.Classes.Transform3D RotationY(double angle);angle System.Double
Angle in radians
Transform3D
Transform3D
Creates a 3D rotation transformation matrix from Euler/Tait-Bryan angles (yaw, pitch, roll) in radians.
The rotation sequence applied is Yaw (around Z), then Pitch (around Y), then Roll (around X).
public static DiGi.Geometry.Spatial.Classes.Transform3D RotationYawPitchRoll(double yaw, double pitch, double roll);yaw System.Double
The rotation angle around the Z-axis in radians.
pitch System.Double
The rotation angle around the Y-axis in radians.
roll System.Double
The rotation angle around the X-axis in radians.
Transform3D
A new Transform3D representing the combined rotation transform.
Gets Rotation Transform3D around the z-axis
public static DiGi.Geometry.Spatial.Classes.Transform3D RotationZ(double angle);angle System.Double
Angle in radians
Transform3D
Transform3D
Creates a scaling transformation relative to a specified origin point.
public static DiGi.Geometry.Spatial.Classes.Transform3D? Scale(DiGi.Geometry.Spatial.Classes.Point3D? origin, double factor);origin Point3D
The Point3D representing the center of the scale operation.
factor System.Double
The double value used as the scaling factor.
Transform3D
A Transform3D object that performs the scaling, or null if the origin is null.
Creates a uniform scaling transformation matrix using the specified scale factor.
public static DiGi.Geometry.Spatial.Classes.Transform3D Scale(double factor);factor System.Double
The double value to use as the scale factor for all axes.
Transform3D
A Classes.Transform3D object representing the uniform scaling transformation.
Creates a scaling transformation matrix with specified factors for the X, Y, and Z axes.
public static DiGi.Geometry.Spatial.Classes.Transform3D Scale(double x, double y, double z);The scale factor for the X axis as a double.
The scale factor for the Y axis as a double.
The scale factor for the Z axis as a double.
Transform3D
A Transform3D representing the scaling transformation.
Creates a 3D shearing transformation matrix in the XY plane relative to the Z-axis.
public static DiGi.Geometry.Spatial.Classes.Transform3D ShearXY(double factorX, double factorY);factorX System.Double
The shearing factor along the X-axis relative to Z.
factorY System.Double
The shearing factor along the Y-axis relative to Z.
Transform3D
A new Transform3D representing the shearing transform.
Creates a translation transformation based on the specified Vector3D(Vector3D, bool).
public static DiGi.Geometry.Spatial.Classes.Transform3D? Translation(DiGi.Geometry.Spatial.Classes.Vector3D? vector3D);vector3D Vector3D
The Vector3D(Vector3D, bool) that defines the translation offset.
Transform3D
A Transform3D representing the translation, or null if the provided Vector3D(Vector3D, bool) is null.
Creates a translation transformation matrix based on the specified coordinates.
public static DiGi.Geometry.Spatial.Classes.Transform3D Translation(double x, double y, double z);The translation distance along the X axis as a double.
The translation distance along the Y axis as a double.
The translation distance along the Z axis as a double.
Transform3D
A Classes.Transform3D representing the translation transformation.
Creates a Transform3D with an unset matrix.
public static DiGi.Geometry.Spatial.Classes.Transform3D Unset();Transform3D
A Transform3D instance.
Zero Transform3D Diagonal = (0,0,0,1)
public static DiGi.Geometry.Spatial.Classes.Transform3D Zero();Transform3D
Transform3D
public static class ModifyInheritance System.Object → Modify
Adds a new Point3D to the specified list of nullable Point3D objects using the provided coordinates.
public static void Add(this System.Collections.Generic.List<DiGi.Geometry.Spatial.Classes.Point3D?>? point3Ds, double x, double y, double z);point3Ds System.Collections.Generic.List<Point3D>
The List<Point3D?> to which the point will be added. If this list is null, no action is taken.
The double value representing the X coordinate of the point.
The double value representing the Y coordinate of the point.
The double value representing the Z coordinate of the point.
Modify.AddOverlappingFaces(this List<IPolygonalFace3D>, BVHNode<IPolygonalFace3D>, BoundingBox3D, double) Method
Recursively traverses a Bounding Volume Hierarchy (BVH) tree starting at bVHNode and adds all DiGi.Geometry.Spatial.Interfaces.IPolygonalFace3D elements that overlap with boundingBox3D (within distance tolerance) into the result list.
CSG Reusability: This method serves as the standard performance-culling query for all 3D constructive solid geometry (CSG) boolean operations (Intersection, Union, and Difference) between two polyhedra. For each face of Polyhedron A, query the BVH tree built for Polyhedron B to cull non-intersecting faces, narrowing candidates down from (O(N \cdot M)) to (O(N \log M)) before computing splits.
public static void AddOverlappingFaces(this System.Collections.Generic.List<DiGi.Geometry.Spatial.Interfaces.IPolygonalFace3D> result, DiGi.Geometry.Spatial.Classes.BVHNode<DiGi.Geometry.Spatial.Interfaces.IPolygonalFace3D>? bVHNode, DiGi.Geometry.Spatial.Classes.BoundingBox3D boundingBox3D, double tolerance=1E-06);result System.Collections.Generic.List<DiGi.Geometry.Spatial.Interfaces.IPolygonalFace3D>
The destination System.Collections.Generic.List<> where overlapping faces will be collected.
bVHNode DiGi.Geometry.Spatial.Classes.BVHNode<DiGi.Geometry.Spatial.Interfaces.IPolygonalFace3D>
The root or subtree node of the Bounding Volume Hierarchy (BVH) to traverse.
boundingBox3D BoundingBox3D
The target BoundingBox3D representing the search query bounds.
tolerance System.Double
The distance tolerance for coordinate comparison and bounding box overlap checks.
Orients the specified DiGi.Geometry.Spatial.Interfaces.IPolygonal3D to a target orientation, inverting it if necessary.
public static bool Orient(this DiGi.Geometry.Spatial.Interfaces.IPolygonal3D? polygonal3D, DiGi.Geometry.Core.Enums.Orientation orientation, bool convexHull=true);polygonal3D DiGi.Geometry.Spatial.Interfaces.IPolygonal3D
The DiGi.Geometry.Spatial.Interfaces.IPolygonal3D instance to orient.
orientation Orientation
The target Orientation to achieve.
convexHull System.Boolean
A System.Boolean value indicating whether the convex hull should be used to determine the current orientation. Defaults to true.
System.Boolean
A System.Boolean value indicating whether the orientation of the DiGi.Geometry.Spatial.Interfaces.IPolygonal3D was changed.
Removes every point which coincides with the point before it, so the geometry holds no zero length segment.
Spatial counterpart of RemoveDuplicates(this List<Point2D>, bool, double). Trimming a ring before a plane is fitted to it also matters in its own right, because the plane takes the average of the points as its origin and a repeated point pulls that origin towards the corner it repeats.
Set closed for a ring, where the last point is the predecessor of the first. That is what strips the repeated closing position a gml:LinearRing carries.
No floor is applied to how many points survive, so a ring which is nothing but repeats of one corner collapses to that single point. That is deliberate - the caller checks the count afterwards, and leaving a degenerate ring padded out to three points would let it pass a check for three corners while holding fewer.
public static bool RemoveDuplicates(this System.Collections.Generic.List<DiGi.Geometry.Spatial.Classes.Point3D>? point3Ds, bool closed, double tolerance=1E-06);point3Ds System.Collections.Generic.List<Point3D>
The System.Collections.Generic.List<> to clean up in place.
closed System.Boolean
A System.Boolean value indicating whether the points form a closed ring, in which case the last point is compared against the first.
tolerance System.Double
The System.Double distance within which two points are treated as one.
System.Boolean
A System.Boolean value indicating whether any point was removed.
public static class QueryInheritance System.Object → Query
Determines whether a specified Point3D is located above a Plane.
public static bool Above(this DiGi.Geometry.Spatial.Classes.Plane? plane, DiGi.Geometry.Spatial.Classes.Point3D? point3D, double tolerance=1E-06);plane Plane
The Plane to check against.
point3D Point3D
The Point3D to evaluate.
tolerance System.Double
A System.Double value representing the distance tolerance.
System.Boolean
A System.Boolean value indicating whether the point is above the plane beyond the specified tolerance; otherwise, false.
Determines whether the specified DiGi.Geometry.Spatial.Interfaces.IPolygonal3D is above the Plane.
public static bool Above(this DiGi.Geometry.Spatial.Classes.Plane? plane, DiGi.Geometry.Spatial.Interfaces.IPolygonal3D? polygonal3D, double tolerance=1E-06);plane Plane
The Plane to check against.
polygonal3D DiGi.Geometry.Spatial.Interfaces.IPolygonal3D
The DiGi.Geometry.Spatial.Interfaces.IPolygonal3D object to evaluate.
tolerance System.Double
A System.Double value representing the distance tolerance for the calculation.
System.Boolean
A System.Boolean value indicating whether all points of the DiGi.Geometry.Spatial.Interfaces.IPolygonal3D are above the Plane within the specified System.Double tolerance; otherwise, false.
Determines whether two Point3D? points are approximately equal based on a specified distance tolerance.
public static bool AlmostEquals(this DiGi.Geometry.Spatial.Classes.Point3D? point3D_1, DiGi.Geometry.Spatial.Classes.Point3D? point3D_2, double tolerance=1E-06);point3D_1 Point3D
The first Point3D? point to compare.
point3D_2 Point3D
The second Point3D? point to compare.
tolerance System.Double
The System.Double distance tolerance used to determine equality.
System.Boolean
A System.Boolean value indicating whether the two points are approximately equal.
Determines whether two DiGi.Geometry.Spatial.Interfaces.ISegmentable3D objects are almost equal based on a specified tolerance.
public static bool AlmostEquals(this DiGi.Geometry.Spatial.Interfaces.ISegmentable3D? segmentable3D_1, DiGi.Geometry.Spatial.Interfaces.ISegmentable3D? segmentable3D_2, double tolerance=1E-06);segmentable3D_1 DiGi.Geometry.Spatial.Interfaces.ISegmentable3D
The first DiGi.Geometry.Spatial.Interfaces.ISegmentable3D object to compare.
segmentable3D_2 DiGi.Geometry.Spatial.Interfaces.ISegmentable3D
The second DiGi.Geometry.Spatial.Interfaces.ISegmentable3D object to compare.
tolerance System.Double
A System.Double value representing the distance tolerance used for comparison.
System.Boolean
A System.Boolean value indicating whether the two objects are almost equal.
Calculates the average of a collection of Point3D objects.
public static DiGi.Geometry.Spatial.Classes.Point3D? Average(this System.Collections.Generic.IEnumerable<DiGi.Geometry.Spatial.Classes.Point3D>? point3Ds);point3Ds System.Collections.Generic.IEnumerable<Point3D>
An System.Collections.Generic.IEnumerable<> of Point3D objects to be averaged.
Point3D
A Point3D representing the average position, or null if the input collection is null or empty.
Calculates the average of a sequence of Vector3D objects.
public static DiGi.Geometry.Spatial.Classes.Vector3D? Average(this System.Collections.Generic.IEnumerable<DiGi.Geometry.Spatial.Classes.Vector3D>? vector3Ds);vector3Ds System.Collections.Generic.IEnumerable<Vector3D>
The System.Collections.Generic.IEnumerable<> of vectors to average.
Vector3D
A Vector3D representing the average value, or null if the input sequence is null or empty.
Calculates an X-axis vector perpendicular to the specified Vector3D normal.
public static DiGi.Geometry.Spatial.Classes.Vector3D? AxisX(this DiGi.Geometry.Spatial.Classes.Vector3D? normal);normal Vector3D
The Vector3D normal vector used as a reference.
Vector3D
A Vector3D representing the calculated X-axis, or null if the provided Vector3D normal is null.
Calculates the X-axis vector based on a normal vector and a Y-axis vector.
public static DiGi.Geometry.Spatial.Classes.Vector3D? AxisX(this DiGi.Geometry.Spatial.Classes.Vector3D? normal, DiGi.Geometry.Spatial.Classes.Vector3D? axisY);normal Vector3D
The Vector3D? normal vector.
axisY Vector3D
The Vector3D? Y-axis vector.
Vector3D
A Vector3D? representing the unit X-axis vector, or null if either the normal or axisY is null.
Calculates the Y-axis vector based on the provided normal vector.
public static DiGi.Geometry.Spatial.Classes.Vector3D? AxisY(this DiGi.Geometry.Spatial.Classes.Vector3D? normal);normal Vector3D
The Vector3D? normal vector used as a basis for calculating the Y-axis.
Vector3D
A Vector3D? representing the Y-axis, or null if the provided normal is null.
Calculates the Y-axis vector by computing the cross product of the normal and the X-axis, then normalizing the result.
public static DiGi.Geometry.Spatial.Classes.Vector3D? AxisY(this DiGi.Geometry.Spatial.Classes.Vector3D? normal, DiGi.Geometry.Spatial.Classes.Vector3D? axisX);normal Vector3D
The Vector3D representing the normal vector.
axisX Vector3D
The Vector3D representing the X-axis vector.
Vector3D
A Vector3D representing the normalized Y-axis if both inputs are non-null and a valid unit vector can be derived; otherwise, null.
Calculates the centroid of a collection of Point3D points.
public static DiGi.Geometry.Spatial.Classes.Point3D? Centroid(this System.Collections.Generic.IEnumerable<DiGi.Geometry.Spatial.Classes.Point3D>? point3Ds);point3Ds System.Collections.Generic.IEnumerable<Point3D>
An IEnumerable<Point3D> containing the points to process.
Point3D
A Point3D? representing the centroid, or null if the input collection is null or empty.
Calculates the closest Point3D on a line defined by two points relative to a given point.
public static DiGi.Geometry.Spatial.Classes.Point3D? ClosestPoint(this DiGi.Geometry.Spatial.Classes.Point3D? point3D, DiGi.Geometry.Spatial.Classes.Point3D? point3D_1, DiGi.Geometry.Spatial.Classes.Point3D? point3D_2, bool bounded);point3D Point3D
The target Point3D? for which the closest point is calculated.
point3D_1 Point3D
The first Point3D? defining the line.
point3D_2 Point3D
The second Point3D? defining the line.
bounded System.Boolean
A System.Boolean value indicating whether the result should be bounded to the segment between the two points.
Point3D
The closest Point3D? on the line, or null if any of the input points are null.
Calculates the closest Point3D on a line or line segment defined by two points to a given target point.
public static DiGi.Geometry.Spatial.Classes.Point3D? ClosestPoint(this DiGi.Geometry.Spatial.Classes.Point3D? point3D, DiGi.Geometry.Spatial.Classes.Point3D? point3D_1, DiGi.Geometry.Spatial.Classes.Point3D? point3D_2, bool bounded_1, bool bounded_2);point3D Point3D
The target Point3D for which the closest point is calculated.
point3D_1 Point3D
The first Point3D? defining the line or segment.
point3D_2 Point3D
The second Point3D defining the line or segment.
bounded_1 System.Boolean
A System.Boolean indicating whether the result is bounded by the first point.
bounded_2 System.Boolean
A bool indicating whether the result is bounded by the second point.
Point3D
The closest Point3D on the line or segment, or null if any of the input points are null.
Calculates the closest point on an DiGi.Geometry.Spatial.Interfaces.ISegmentable3D object to a given Point3D.
public static DiGi.Geometry.Spatial.Classes.Point3D? ClosestPoint(this DiGi.Geometry.Spatial.Classes.Point3D? point3D, DiGi.Geometry.Spatial.Interfaces.ISegmentable3D segmentable3D);point3D Point3D
The source Point3D for which the closest point is being calculated.
segmentable3D DiGi.Geometry.Spatial.Interfaces.ISegmentable3D
The DiGi.Geometry.Spatial.Interfaces.ISegmentable3D object to find the closest point on.
Point3D
The closest Point3D found on the segmentable object, or null if no such point exists.
Calculates the closest point on an DiGi.Geometry.Spatial.Interfaces.ISegmentable3D object from a given Point3D.
public static DiGi.Geometry.Spatial.Classes.Point3D? ClosestPoint(this DiGi.Geometry.Spatial.Classes.Point3D? point3D, DiGi.Geometry.Spatial.Interfaces.ISegmentable3D? segmentable3D, out double distance);point3D Point3D
The source Point3D to find the closest point from.
segmentable3D DiGi.Geometry.Spatial.Interfaces.ISegmentable3D
The DiGi.Geometry.Spatial.Interfaces.ISegmentable3D object containing segments to evaluate.
distance System.Double
When this method returns, contains the distance between the source Point3D and the closest point found; otherwise, System.Double.NaN.
Point3D
The closest Point3D on the segments of the DiGi.Geometry.Spatial.Interfaces.ISegmentable3D object, or null if no point could be determined.
Finds the closest Point3D in a collection of points to a specified source point.
public static DiGi.Geometry.Spatial.Classes.Point3D? ClosestPoint(this DiGi.Geometry.Spatial.Classes.Point3D? point3D, System.Collections.Generic.IEnumerable<DiGi.Geometry.Spatial.Classes.Point3D>? point3Ds, out double distance);point3D Point3D
The source Point3D used as the reference for distance calculations.
point3Ds System.Collections.Generic.IEnumerable<Point3D>
An System.Collections.Generic.IEnumerable<> of Point3D objects to search through.
distance System.Double
When this method returns, contains the minimum System.Double distance between the source point and the closest point found; otherwise, System.Double.NaN.
Point3D
The closest Point3D from the collection, or null if the source point is null, the collection is null, or no points are available.
Calculates the closest point among a collection of 3D segments to a given 3D point.
public static DiGi.Geometry.Spatial.Classes.Point3D? ClosestPoint(this DiGi.Geometry.Spatial.Classes.Point3D? point3D, System.Collections.Generic.IEnumerable<DiGi.Geometry.Spatial.Classes.Segment3D>? segment3Ds);point3D Point3D
The Point3D source point.
segment3Ds System.Collections.Generic.IEnumerable<Segment3D>
An System.Collections.Generic.IEnumerable<> of Segment3D objects to evaluate.
Point3D
The closest Point3D found on the segments, or null if the source point or the collection is null.
Calculates the closest point on a collection of 3D segments relative to a given 3D point.
public static DiGi.Geometry.Spatial.Classes.Point3D? ClosestPoint(this DiGi.Geometry.Spatial.Classes.Point3D? point3D, System.Collections.Generic.IEnumerable<DiGi.Geometry.Spatial.Classes.Segment3D>? segment3Ds, out double distance);point3D Point3D
The source Point3D point.
segment3Ds System.Collections.Generic.IEnumerable<Segment3D>
An System.Collections.Generic.IEnumerable<> of Segment3D segments to evaluate.
distance System.Double
When this method returns, contains the distance between the source Point3D and the closest point found; otherwise, System.Double.NaN.
Point3D
The closest Point3D found among the provided segments, or null if no point is found or input parameters are null.
Calculates the closest point on a collection of polygonal faces to a given point.
public static DiGi.Geometry.Spatial.Classes.Point3D? ClosestPoint<TPolygonalFace3D>(this DiGi.Geometry.Spatial.Classes.Point3D? point3D, System.Collections.Generic.IEnumerable<TPolygonalFace3D> polygonalFace3Ds)
where TPolygonalFace3D : DiGi.Geometry.Spatial.Interfaces.IPolygonalFace3D;TPolygonalFace3D
The type of the polygonal face, which must implement DiGi.Geometry.Spatial.Interfaces.IPolygonalFace3D.
point3D Point3D
The source Point3D? point.
polygonalFace3Ds System.Collections.Generic.IEnumerable<TPolygonalFace3D>
An System.Collections.Generic.IEnumerable<> of polygonal faces to evaluate.
Point3D
The closest Point3D? found on the provided polygonal faces, or null if the input point or collection is null.
Query.ClosestPoint<TPolygonalFace3D>(this Point3D, IEnumerable<TPolygonalFace3D>, TPolygonalFace3D, double, double) Method
Calculates the closest point to a given point from a collection of polygonal faces.
public static DiGi.Geometry.Spatial.Classes.Point3D? ClosestPoint<TPolygonalFace3D>(this DiGi.Geometry.Spatial.Classes.Point3D? point3D, System.Collections.Generic.IEnumerable<TPolygonalFace3D> polygonalFace3Ds, out TPolygonalFace3D? closestPolygonalFace3D, out double distance, double tolerance=1E-06)
where TPolygonalFace3D : DiGi.Geometry.Spatial.Interfaces.IPolygonalFace3D;TPolygonalFace3D
The type of the polygonal face, which must implement DiGi.Geometry.Spatial.Interfaces.IPolygonalFace3D.
point3D Point3D
The source Point3D? from which to find the closest point.
polygonalFace3Ds System.Collections.Generic.IEnumerable<TPolygonalFace3D>
An System.Collections.Generic.IEnumerable<> of polygonal faces to evaluate.
closestPolygonalFace3D TPolygonalFace3D
When this method returns, contains the TPolygonalFace3D? that is closest to the source point.
distance System.Double
When this method returns, contains the System.Double distance between the source point and the closest point found.
tolerance System.Double
The System.Double tolerance used for calculations.
Point3D
The closest Point3D? found among all provided polygonal faces, or null if no closest point is found or the input point or collection is null.
Determines whether three 3D points are collinear within a specified angular tolerance.
public static bool Collinear(this DiGi.Geometry.Spatial.Classes.Point3D? point3D_1, DiGi.Geometry.Spatial.Classes.Point3D? point3D_2, DiGi.Geometry.Spatial.Classes.Point3D? point3D_3, double tolerance=0.0349066);point3D_1 Point3D
The first Point3D? point.
point3D_2 Point3D
The second Point3D? point, acting as the vertex for the angle calculation.
point3D_3 Point3D
The third Point3D? point.
tolerance System.Double
A System.Double value representing the angular tolerance used to determine collinearity.
System.Boolean
A System.Boolean indicating whether the points are collinear; returns false if any of the provided points are null.
Determines whether a collection of Point3D points are collinear within a specified tolerance.
public static bool Collinear(this System.Collections.Generic.IEnumerable<DiGi.Geometry.Spatial.Classes.Point3D>? point3Ds, double tolerance=1E-06);point3Ds System.Collections.Generic.IEnumerable<Point3D>
The System.Collections.Generic.IEnumerable<> of Point3D objects to evaluate.
tolerance System.Double
The System.Double value representing the distance tolerance for collinearity.
System.Boolean
A System.Boolean value indicating whether the points are collinear. Returns true if there are fewer than three points; otherwise, returns false if the collection is null or the points are not collinear.
Converts a Plane and a BoundingBox2D into a Rectangle3D.
public static DiGi.Geometry.Spatial.Classes.Rectangle3D? Convert(DiGi.Geometry.Spatial.Classes.Plane? plane, DiGi.Geometry.Planar.Classes.BoundingBox2D? boundingBox2D);plane Plane
The Plane to use for the conversion.
boundingBox2D BoundingBox2D
The BoundingBox2D to use for the conversion.
Rectangle3D
A Rectangle3D if both parameters are valid; otherwise, null.
Converts an DiGi.Geometry.Spatial.Interfaces.IPlanar object to an DiGi.Geometry.Planar.Interfaces.IGeometry2D.
public static DiGi.Geometry.Planar.Interfaces.IGeometry2D? Convert(DiGi.Geometry.Spatial.Interfaces.IPlanar? planar);planar DiGi.Geometry.Spatial.Interfaces.IPlanar
The DiGi.Geometry.Spatial.Interfaces.IPlanar instance to convert.
DiGi.Geometry.Planar.Interfaces.IGeometry2D
An DiGi.Geometry.Planar.Interfaces.IGeometry2D representation if the conversion is successful; otherwise, null.
Converts a Ellipse2D to an Ellipse3D using the specified Plane.
public static DiGi.Geometry.Spatial.Classes.Ellipse3D? Convert(this DiGi.Geometry.Spatial.Classes.Plane? plane, DiGi.Geometry.Planar.Classes.Ellipse2D? ellipse2D);plane Plane
The Plane used for the conversion.
ellipse2D Ellipse2D
The Ellipse2D to convert.
Ellipse3D
An Ellipse3D if both the Plane and Ellipse2D are not null; otherwise, null.
Converts a Line2D to a Line3D using the specified Plane.
public static DiGi.Geometry.Spatial.Classes.Line3D? Convert(this DiGi.Geometry.Spatial.Classes.Plane? plane, DiGi.Geometry.Planar.Classes.Line2D? line2D);plane Plane
The Plane used for the conversion.
line2D Line2D
The Line2D instance to convert.
Line3D
A Line3D representing the converted line, or null if the Plane or Line2D is null, or if conversion of the origin or direction fails.
Converts a Point2D to a Point3D based on the coordinate system of the provided Plane.
public static DiGi.Geometry.Spatial.Classes.Point3D? Convert(this DiGi.Geometry.Spatial.Classes.Plane? plane, DiGi.Geometry.Planar.Classes.Point2D? point2D);plane Plane
The Plane used as the reference for the conversion.
point2D Point2D
The Point2D to convert.
Point3D
A Point3D representing the 2D point in 3D space, or null if the Plane, the Point2D, or the plane's axes are null.
Converts a Polygon2D to a Polygon3D using the specified Plane.
public static DiGi.Geometry.Spatial.Classes.Polygon3D? Convert(this DiGi.Geometry.Spatial.Classes.Plane? plane, DiGi.Geometry.Planar.Classes.Polygon2D? polygon2D);plane Plane
The Plane used for the conversion.
polygon2D Polygon2D
The Polygon2D instance to convert.
Polygon3D
A Polygon3D instance if both the Plane and Polygon2D are not null; otherwise, null.
Converts a PolygonalFace2D to a PolygonalFace3D using the specified Plane.
public static DiGi.Geometry.Spatial.Classes.PolygonalFace3D? Convert(this DiGi.Geometry.Spatial.Classes.Plane? plane, DiGi.Geometry.Planar.Classes.PolygonalFace2D? polygonalFace2D);plane Plane
The Plane used for the conversion.
polygonalFace2D PolygonalFace2D
The PolygonalFace2D instance to convert.
PolygonalFace3D
A PolygonalFace3D instance if both the Plane and PolygonalFace2D are not null; otherwise, null.
Converts a Polyline2D to a Polyline3D using the specified Plane.
public static DiGi.Geometry.Spatial.Classes.Polyline3D? Convert(this DiGi.Geometry.Spatial.Classes.Plane? plane, DiGi.Geometry.Planar.Classes.Polyline2D? polyline2D);plane Plane
The Plane used for the conversion.
polyline2D Polyline2D
The Polyline2D to convert.
Polyline3D
A Polyline3D resulting from the conversion, or null if the Plane or Polyline2D is null.
Converts a Ray2D to a Ray3D using the specified Plane.
public static DiGi.Geometry.Spatial.Classes.Ray3D? Convert(this DiGi.Geometry.Spatial.Classes.Plane? plane, DiGi.Geometry.Planar.Classes.Ray2D? ray2D);plane Plane
The Plane used for the conversion.
ray2D Ray2D
The Ray2D to convert.
Ray3D
A Ray3D if the conversion is successful; otherwise, null.
Converts a Rectangle2D to a Rectangle3D using the specified Plane.
public static DiGi.Geometry.Spatial.Classes.Rectangle3D? Convert(this DiGi.Geometry.Spatial.Classes.Plane? plane, DiGi.Geometry.Planar.Classes.Rectangle2D rectangle2D);plane Plane
The Plane used for the conversion.
rectangle2D Rectangle2D
The Rectangle2D to convert.
Rectangle3D
A Rectangle3D if both parameters are not null; otherwise, null.
Converts a Segment2D to a Segment3D using the specified Plane.
public static DiGi.Geometry.Spatial.Classes.Segment3D? Convert(this DiGi.Geometry.Spatial.Classes.Plane? plane, DiGi.Geometry.Planar.Classes.Segment2D? segment2D);plane Plane
The Plane used for conversion.
segment2D Segment2D
The Segment2D to convert.
Segment3D
A Segment3D if the conversion is successful; otherwise, null.
Converts a Triangle2D to a Triangle3D using the specified Plane.
public static DiGi.Geometry.Spatial.Classes.Triangle3D? Convert(this DiGi.Geometry.Spatial.Classes.Plane? plane, DiGi.Geometry.Planar.Classes.Triangle2D? triangle2D);plane Plane
The Plane used for the conversion.
triangle2D Triangle2D
The Triangle2D to convert.
Triangle3D
A Triangle3D if the conversion is successful; otherwise, null.
Converts a Vector2D to a Vector3D based on the coordinate system of the provided Plane.
public static DiGi.Geometry.Spatial.Classes.Vector3D? Convert(this DiGi.Geometry.Spatial.Classes.Plane? plane, DiGi.Geometry.Planar.Classes.Vector2D? vector2D);plane Plane
The Plane used as the reference for the conversion.
vector2D Vector2D
The Vector2D to convert.
Vector3D
A Vector3D representing the converted vector, or null if the Plane, the Vector2D, or any of the plane's axes are null.
Converts a 2D geometry object to a 3D geometry object based on the specified plane.
public static DiGi.Geometry.Spatial.Interfaces.IGeometry3D? Convert(this DiGi.Geometry.Spatial.Classes.Plane? plane, DiGi.Geometry.Planar.Interfaces.IGeometry2D? geometry2D);plane Plane
The Plane used as the reference for the conversion.
geometry2D DiGi.Geometry.Planar.Interfaces.IGeometry2D
The DiGi.Geometry.Planar.Interfaces.IGeometry2D instance to be converted.
DiGi.Geometry.Spatial.Interfaces.IGeometry3D
An DiGi.Geometry.Spatial.Interfaces.IGeometry3D object if the conversion is successful; otherwise, null if either the Plane or DiGi.Geometry.Planar.Interfaces.IGeometry2D is null.
Converts a 2D polygonal object to a 3D polygonal object based on the specified plane.
public static DiGi.Geometry.Spatial.Interfaces.IPolygonal3D? Convert(this DiGi.Geometry.Spatial.Classes.Plane? plane, DiGi.Geometry.Planar.Interfaces.IPolygonal2D? polygonal2D);plane Plane
The Plane used as the reference for the conversion.
polygonal2D IPolygonal2D
The IPolygonal2D object to be converted.
DiGi.Geometry.Spatial.Interfaces.IPolygonal3D
An DiGi.Geometry.Spatial.Interfaces.IPolygonal3D representation of the 2D polygonal shape, or null if the Plane or IPolygonal2D is null.
Converts a 2D polygonal face to a 3D polygonal face using the specified plane.
public static DiGi.Geometry.Spatial.Interfaces.IPolygonalFace3D? Convert(this DiGi.Geometry.Spatial.Classes.Plane? plane, DiGi.Geometry.Planar.Interfaces.IPolygonalFace2D? polygonalFace3D);plane Plane
The Plane used for the conversion.
polygonalFace3D IPolygonalFace2D
The IPolygonalFace2D to convert.
DiGi.Geometry.Spatial.Interfaces.IPolygonalFace3D
An DiGi.Geometry.Spatial.Interfaces.IPolygonalFace3D if the conversion is successful; otherwise, null.
Converts a Line3D to a Line2D relative to the specified Plane.
public static DiGi.Geometry.Planar.Classes.Line2D? Convert(this DiGi.Geometry.Spatial.Classes.Plane? plane, DiGi.Geometry.Spatial.Classes.Line3D? line3D);plane Plane
The Plane used for the conversion.
line3D Line3D
The Line3D to convert.
Line2D
A Line2D representing the converted line, or null if the plane, the line, or any of its components cannot be converted.
Converts a Point3D to a Point2D relative to the specified Plane.
public static DiGi.Geometry.Planar.Classes.Point2D? Convert(this DiGi.Geometry.Spatial.Classes.Plane? plane, DiGi.Geometry.Spatial.Classes.Point3D? point3D);plane Plane
The Plane used as the reference for conversion.
point3D Point3D
The Point3D to be converted.
Point2D
A Point2D representing the point's coordinates on the plane, or null if the Plane, the Point3D, or any required plane components are null.
Converts a Polygon3D to a Polygon2D using the specified Plane.
public static DiGi.Geometry.Planar.Classes.Polygon2D? Convert(this DiGi.Geometry.Spatial.Classes.Plane? plane, DiGi.Geometry.Spatial.Classes.Polygon3D? polygon3D);plane Plane
The Plane used to project the 3D polygon into 2D space.
polygon3D Polygon3D
The Polygon3D object to convert.
Polygon2D
A Polygon2D representing the converted polygon, or null if the plane, the 3D polygon, or its points are null.
Converts a PolygonalFace3D to a PolygonalFace2D using the specified Plane.
public static DiGi.Geometry.Planar.Classes.PolygonalFace2D? Convert(this DiGi.Geometry.Spatial.Classes.Plane? plane, DiGi.Geometry.Spatial.Classes.PolygonalFace3D? polygonalFace3D);plane Plane
The Plane used for the conversion.
polygonalFace3D PolygonalFace3D
The PolygonalFace3D to convert.
PolygonalFace2D
A PolygonalFace2D if the conversion is successful; otherwise, null.
Converts a Ray3D to a Ray2D relative to the specified Plane.
public static DiGi.Geometry.Planar.Classes.Ray2D? Convert(this DiGi.Geometry.Spatial.Classes.Plane? plane, DiGi.Geometry.Spatial.Classes.Ray3D? ray3D);plane Plane
The Plane used for the conversion.
ray3D Ray3D
The Ray3D to convert.
Ray2D
A Ray2D if the conversion is successful; otherwise, null.
Converts a Rectangle3D to an IPolygonal2D relative to the specified Plane.
public static DiGi.Geometry.Planar.Interfaces.IPolygonal2D? Convert(this DiGi.Geometry.Spatial.Classes.Plane? plane, DiGi.Geometry.Spatial.Classes.Rectangle3D? rectangle3D, double tolerance=1E-06);plane Plane
The Plane used for the conversion.
rectangle3D Rectangle3D
The Rectangle3D to convert.
tolerance System.Double
A System.Double value representing the distance tolerance.
IPolygonal2D
An IPolygonal2D if the conversion is successful; otherwise, null.
Converts a Segment3D to a Segment2D using the specified Plane.
public static DiGi.Geometry.Planar.Classes.Segment2D? Convert(this DiGi.Geometry.Spatial.Classes.Plane? plane, DiGi.Geometry.Spatial.Classes.Segment3D? segment3D);plane Plane
The Plane used for the conversion.
segment3D Segment3D
The Segment3D to convert.
Segment2D
A Segment2D if the conversion is successful; otherwise, null.
Converts a Triangle3D to a Triangle2D using the specified Plane.
public static DiGi.Geometry.Planar.Classes.Triangle2D? Convert(this DiGi.Geometry.Spatial.Classes.Plane? plane, DiGi.Geometry.Spatial.Classes.Triangle3D? triangle3D);plane Plane
The Plane used for the conversion.
triangle3D Triangle3D
The Triangle3D to convert.
Triangle2D
A Triangle2D representing the projected triangle, or null if the Plane, the Triangle3D, or any of its points are null or cannot be converted.
Converts a Vector3D to a Vector2D based on the coordinate system of the specified Plane.
public static DiGi.Geometry.Planar.Classes.Vector2D? Convert(this DiGi.Geometry.Spatial.Classes.Plane? plane, DiGi.Geometry.Spatial.Classes.Vector3D? vector3D);plane Plane
The Plane used as the reference for the conversion.
vector3D Vector3D
The Vector3D to be converted.
Vector2D
A Vector2D representing the projection of the Vector3D onto the plane's axes, or null if the Plane, Vector3D, or any of the plane's axes are null.
Converts a 3D polygonal object to a 2D polygonal object based on a specified Plane and tolerance.
public static DiGi.Geometry.Planar.Interfaces.IPolygonal2D? Convert(this DiGi.Geometry.Spatial.Classes.Plane? plane, DiGi.Geometry.Spatial.Interfaces.IPolygonal3D? polygonal3D, double tolerance=1E-06);plane Plane
The Plane used for the projection.
polygonal3D DiGi.Geometry.Spatial.Interfaces.IPolygonal3D
The DiGi.Geometry.Spatial.Interfaces.IPolygonal3D object to be converted.
tolerance System.Double
The System.Double tolerance value used during conversion.
IPolygonal2D
An IPolygonal2D representation of the 3D polygon on the plane, or null if either the Plane or the DiGi.Geometry.Spatial.Interfaces.IPolygonal3D is null.
Converts a 3D polygonal face to a 2D polygonal face using the specified plane.
public static DiGi.Geometry.Planar.Interfaces.IPolygonalFace2D? Convert(this DiGi.Geometry.Spatial.Classes.Plane? plane, DiGi.Geometry.Spatial.Interfaces.IPolygonalFace3D? polygonalFace3D);plane Plane
The Plane used for the conversion.
polygonalFace3D DiGi.Geometry.Spatial.Interfaces.IPolygonalFace3D
The DiGi.Geometry.Spatial.Interfaces.IPolygonalFace3D to be converted.
IPolygonalFace2D
An IPolygonalFace2D if the conversion is successful; otherwise, null.
Converts a given DiGi.Geometry.Spatial.Interfaces.IGeometry3D instance into a list of TGeometry3D instances.
public static System.Collections.Generic.List<TGeometry3D>? Convert<TGeometry3D>(DiGi.Geometry.Spatial.Interfaces.IGeometry3D? geometry3D)
where TGeometry3D : DiGi.Geometry.Spatial.Interfaces.IGeometry3D;TGeometry3D
The target type that implements the DiGi.Geometry.Spatial.Interfaces.IGeometry3D interface.
geometry3D DiGi.Geometry.Spatial.Interfaces.IGeometry3D
The source DiGi.Geometry.Spatial.Interfaces.IGeometry3D object to convert.
System.Collections.Generic.List<TGeometry3D>
A System.Collections.Generic.List<> containing the converted geometry, or null if the provided DiGi.Geometry.Spatial.Interfaces.IGeometry3D is null.
Determines whether two DiGi.Geometry.Spatial.Interfaces.IPlanar objects are coplanar within a specified tolerance.
public static bool Coplanar(this DiGi.Geometry.Spatial.Interfaces.IPlanar? planar_1, DiGi.Geometry.Spatial.Interfaces.IPlanar? planar_2, double tolerance=1E-06);planar_1 DiGi.Geometry.Spatial.Interfaces.IPlanar
The first DiGi.Geometry.Spatial.Interfaces.IPlanar object to evaluate.
planar_2 DiGi.Geometry.Spatial.Interfaces.IPlanar
The second DiGi.Geometry.Spatial.Interfaces.IPlanar object to evaluate.
tolerance System.Double
A System.Double value representing the distance tolerance for coplanarity.
System.Boolean
A System.Boolean value indicating whether the two objects are coplanar.
Determines whether a collection of Point3D points are coplanar within a specified tolerance.
public static bool Coplanar(this System.Collections.Generic.IEnumerable<DiGi.Geometry.Spatial.Classes.Point3D>? point3Ds, double tolerance=1E-06);point3Ds System.Collections.Generic.IEnumerable<Point3D>
The System.Collections.Generic.IEnumerable<> of points to evaluate.
tolerance System.Double
The System.Double distance tolerance used to determine if the points lie on the same plane.
System.Boolean
A System.Boolean value indicating whether the points are coplanar; returns false if the collection is null.
Decomposes an affine 3D transformation matrix into its translation vector, pure rotation matrix, and scale factors.
public static bool Decompose(this DiGi.Geometry.Spatial.Classes.Transform3D? transform3D, out DiGi.Geometry.Spatial.Classes.Vector3D? translation, out DiGi.Geometry.Spatial.Classes.Transform3D? rotation, out DiGi.Geometry.Spatial.Classes.Vector3D? scale);transform3D Transform3D
The source Transform3D matrix to decompose.
translation Vector3D
When this method returns, contains the extracted translation Vector3D, or null if decomposition fails.
rotation Transform3D
When this method returns, contains the extracted pure rotation Transform3D matrix, or null if decomposition fails.
scale Vector3D
When this method returns, contains the extracted scale factors as a Vector3D, or null if decomposition fails.
System.Boolean
A System.Boolean value indicating whether the matrix was successfully decomposed.
Calculates the determinant of a 3x3 matrix formed by three Point3D points and a Vector3D normal vector.
public static double Determinant(this DiGi.Geometry.Spatial.Classes.Point3D? point3D_1, DiGi.Geometry.Spatial.Classes.Point3D? point3D_2, DiGi.Geometry.Spatial.Classes.Point3D? point3D_3, DiGi.Geometry.Spatial.Classes.Vector3D? normal);point3D_1 Point3D
The first Point3D point.
point3D_2 Point3D
The second Point3D point.
point3D_3 Point3D
The third Point3D point.
normal Vector3D
The Vector3D normal vector.
System.Double
The calculated System.Double determinant, or System.Double.NaN if any of the provided parameters are null.
Calculates the determinant of a 3x3 matrix formed by three Vector3D vectors.
public static double Determinant(this DiGi.Geometry.Spatial.Classes.Vector3D? vector3D_1, DiGi.Geometry.Spatial.Classes.Vector3D? vector3D_2, DiGi.Geometry.Spatial.Classes.Vector3D? normal);vector3D_1 Vector3D
The first Vector3D vector.
vector3D_2 Vector3D
The second Vector3D vector.
normal Vector3D
The third Vector3D vector.
System.Double
A System.Double representing the determinant, or System.Double.NaN if any of the input vectors are null.
Query.Difference<TPolygonalFace3D>(this Polyhedron<TPolygonalFace3D>, Polyhedron<TPolygonalFace3D>, double) Method
Calculates the 3D boolean difference between two polyhedra.
public static System.Collections.Generic.List<DiGi.Geometry.Spatial.Classes.Polyhedron>? Difference<TPolygonalFace3D>(this DiGi.Geometry.Spatial.Classes.Polyhedron<TPolygonalFace3D>? polyhedron_1, DiGi.Geometry.Spatial.Classes.Polyhedron<TPolygonalFace3D>? polyhedron_2, double tolerance=1E-06)
where TPolygonalFace3D : DiGi.Geometry.Spatial.Interfaces.IPolygonalFace3D;TPolygonalFace3D
The type of polygonal face, which must implement DiGi.Geometry.Spatial.Interfaces.IPolygonalFace3D.
polyhedron_1 DiGi.Geometry.Spatial.Classes.Polyhedron<TPolygonalFace3D>
The first polyhedron (from which to subtract).
polyhedron_2 DiGi.Geometry.Spatial.Classes.Polyhedron<TPolygonalFace3D>
The second polyhedron (to subtract).
tolerance System.Double
The distance tolerance for boolean difference computations.
System.Collections.Generic.List<Polyhedron>
A list of Polyhedron objects representing the resulting difference, or null if either input is null.
The computation is delegated to DifferenceResult3D<TPolygonalFace3D>(this Polyhedron<TPolygonalFace3D>, Polyhedron<TPolygonalFace3D>, double); only the polyhedra of the result are returned. Use the result object directly to access lower-dimensional geometry elements.
Calculates the two extreme points from a collection of nullable Point3D objects.
public static void ExtremePoints(this System.Collections.Generic.IEnumerable<DiGi.Geometry.Spatial.Classes.Point3D?>? point3Ds, out DiGi.Geometry.Spatial.Classes.Point3D? point3D_1, out DiGi.Geometry.Spatial.Classes.Point3D? point3D_2);point3Ds System.Collections.Generic.IEnumerable<Point3D>
The System.Collections.Generic.IEnumerable<> of nullable Point3D objects to evaluate.
point3D_1 Point3D
When this method returns, contains the first extreme Point3D found; otherwise, null.
point3D_2 Point3D
When this method returns, contains the second extreme Point3D found; otherwise, null.
Finds the two points within a collection that are furthest apart and calculates the distance between them.
public static void ExtremePoints(this System.Collections.Generic.IEnumerable<DiGi.Geometry.Spatial.Classes.Point3D?>? point3Ds, out DiGi.Geometry.Spatial.Classes.Point3D? point3D_1, out DiGi.Geometry.Spatial.Classes.Point3D? point3D_2, out double distance);point3Ds System.Collections.Generic.IEnumerable<Point3D>
The IEnumerable<Point3D?> of Point3D objects to evaluate.
point3D_1 Point3D
When this method returns, contains the first point of the pair with the maximum distance, or null if the collection is null or contains fewer than two points.
point3D_2 Point3D
When this method returns, contains the second point of the pair with the maximum distance, or null if the collection is null or contains fewer than two points.
distance System.Double
When this method returns, contains the System.Double value representing the distance between the two extreme points, or System.Double.NaN if the collection is null or contains fewer than two points.
Determines whether a specified Point3D is within the range of the provided DiGi.Geometry.Spatial.Interfaces.IPlanar<> geometry, considering a given tolerance.
public static bool InRange<T>(DiGi.Geometry.Spatial.Interfaces.IPlanar<T> planar, DiGi.Geometry.Spatial.Classes.Point3D point3D, double tolerance=1E-06)
where T : DiGi.Geometry.Planar.Interfaces.IPolygonal2D;T
The type of polygonal geometry, which must implement IPolygonal2D.
planar DiGi.Geometry.Spatial.Interfaces.IPlanar<T>
The DiGi.Geometry.Spatial.Interfaces.IPlanar<> object to check against.
point3D Point3D
The Point3D point to evaluate.
tolerance System.Double
A System.Double value representing the distance tolerance.
System.Boolean
A System.Boolean value indicating whether the Point3D is within range; otherwise, false.
Determines whether a segmentable 3D entity is within the range of a planar entity.
public static bool InRange<T>(DiGi.Geometry.Spatial.Interfaces.IPlanar<T> planar, DiGi.Geometry.Spatial.Interfaces.ISegmentable3D segmentable3D, double tolerance=1E-06)
where T : DiGi.Geometry.Planar.Interfaces.IPolygonal2D;T
The type that implements IPolygonal2D.
planar DiGi.Geometry.Spatial.Interfaces.IPlanar<T>
The DiGi.Geometry.Spatial.Interfaces.IPlanar<> object to check against.
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.
System.Boolean
A System.Boolean value indicating true if the segmentable 3D entity is within range; otherwise, false.
Determines whether a collection of Point3D objects are within the range of the specified DiGi.Geometry.Spatial.Interfaces.IPlanar<> object.
public static bool InRange<T>(DiGi.Geometry.Spatial.Interfaces.IPlanar<T>? planar, System.Collections.Generic.IEnumerable<DiGi.Geometry.Spatial.Classes.Point3D>? point3Ds, double tolerance=1E-06)
where T : DiGi.Geometry.Planar.Interfaces.IPolygonal2D;T
The type of polygonal geometry, which must implement IPolygonal2D.
planar DiGi.Geometry.Spatial.Interfaces.IPlanar<T>
The DiGi.Geometry.Spatial.Interfaces.IPlanar<> object to check against.
point3Ds System.Collections.Generic.IEnumerable<Point3D>
An System.Collections.Generic.IEnumerable<> containing the points to evaluate.
tolerance System.Double
A System.Double value representing the distance tolerance.
System.Boolean
A System.Boolean value indicating true if the points are within range; otherwise, false.
Determines whether a point is located inside the triangle formed by three points within a given tolerance.
public static bool Inside(this DiGi.Geometry.Spatial.Classes.Point3D? point3D, DiGi.Geometry.Spatial.Classes.Point3D? point3D_1, DiGi.Geometry.Spatial.Classes.Point3D? point3D_2, DiGi.Geometry.Spatial.Classes.Point3D? point3D_3, double tolerance=1E-06);point3D Point3D
The Point3D point to check.
point3D_1 Point3D
The first vertex of the triangle.
point3D_2 Point3D
The second vertex of the triangle.
point3D_3 Point3D
The third vertex of the triangle.
tolerance System.Double
The distance tolerance value.
System.Boolean
True if the point lies inside or on the boundary of the triangle; otherwise, false.
Determines whether a specified Point3D is inside the given DiGi.Geometry.Spatial.Interfaces.IPlanar<> object within a certain tolerance.
public static bool Inside<T>(DiGi.Geometry.Spatial.Interfaces.IPlanar<T>? planar, DiGi.Geometry.Spatial.Classes.Point3D? point3D, double tolerance=1E-06)
where T : DiGi.Geometry.Planar.Interfaces.IPolygonal2D;T
The type of the polygonal 2D object, which must implement IPolygonal2D.
planar DiGi.Geometry.Spatial.Interfaces.IPlanar<T>
The DiGi.Geometry.Spatial.Interfaces.IPlanar<> object to check against.
point3D Point3D
The Point3D point to evaluate.
tolerance System.Double
A System.Double value representing the distance tolerance for the operation.
System.Boolean
A System.Boolean value indicating whether the Point3D is inside the DiGi.Geometry.Spatial.Interfaces.IPlanar<> object; otherwise, false if either parameter is null.
Determines whether a specified DiGi.Geometry.Spatial.Interfaces.ISegmentable3D object is located inside a specified DiGi.Geometry.Spatial.Interfaces.IPlanar<> planar region within a given tolerance.
public static bool Inside<T>(DiGi.Geometry.Spatial.Interfaces.IPlanar<T>? planar, DiGi.Geometry.Spatial.Interfaces.ISegmentable3D? segmentable3D, double tolerance=1E-06)
where T : DiGi.Geometry.Planar.Interfaces.IPolygonal2D;T
A type that implements IPolygonal2D.
planar DiGi.Geometry.Spatial.Interfaces.IPlanar<T>
The DiGi.Geometry.Spatial.Interfaces.IPlanar<> planar region to check against.
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 for the operation.
System.Boolean
A System.Boolean value indicating true if the DiGi.Geometry.Spatial.Interfaces.ISegmentable3D object is inside the planar region; otherwise, false.
Determines whether a collection of Point3D points are located on the plane of the specified DiGi.Geometry.Spatial.Interfaces.IPlanar<> object within a given tolerance.
public static bool Inside<T>(DiGi.Geometry.Spatial.Interfaces.IPlanar<T>? planar, System.Collections.Generic.IEnumerable<DiGi.Geometry.Spatial.Classes.Point3D>? point3Ds, double tolerance=1E-06)
where T : DiGi.Geometry.Planar.Interfaces.IPolygonal2D;T
A type that implements IPolygonal2D.
planar DiGi.Geometry.Spatial.Interfaces.IPlanar<T>
The DiGi.Geometry.Spatial.Interfaces.IPlanar<> object whose plane is being evaluated.
point3Ds System.Collections.Generic.IEnumerable<Point3D>
An System.Collections.Generic.IEnumerable<> containing the points to check.
tolerance System.Double
A System.Double value representing the distance tolerance for the operation.
System.Boolean
A System.Boolean value indicating true if all provided points are on the plane within the specified tolerance; otherwise, false.
Determines whether the specified Triangle3D overlaps an axis-aligned box given by its center and per-axis half-extents, using the Akenine-Möller separating-axis theorem (thirteen candidate axes: three box face normals, one triangle face normal, and nine edge cross products).
All arithmetic is performed on scalar doubles in the box's local frame, allocating nothing. A degenerate triangle whose normal is zero degrades gracefully to the box-axis and edge tests.
public static bool Intersect(double centerX, double centerY, double centerZ, double halfX, double halfY, double halfZ, DiGi.Geometry.Spatial.Classes.Triangle3D? triangle3D);centerX System.Double
The X-coordinate of the box center.
centerY System.Double
The Y-coordinate of the box center.
centerZ System.Double
The Z-coordinate of the box center.
halfX System.Double
The half-extent of the box along the X axis, already expanded by any tolerance.
halfY System.Double
The half-extent of the box along the Y axis, already expanded by any tolerance.
halfZ System.Double
The half-extent of the box along the Z axis, already expanded by any tolerance.
triangle3D Triangle3D
The Triangle3D to test for overlap.
System.Boolean
A System.Boolean value indicating true when no separating axis exists (the triangle overlaps the box); otherwise, false.
Determines whether a specified Segment3D intersects the given DiGi.Geometry.Spatial.Interfaces.IPolygonalFace3D object within a certain tolerance.
public static bool Intersect(this DiGi.Geometry.Spatial.Interfaces.IPolygonalFace3D? polygonalFace3D, DiGi.Geometry.Spatial.Classes.Segment3D? segment3D, double tolerance=1E-06, bool includeStart=false, bool includeEnd=false);polygonalFace3D DiGi.Geometry.Spatial.Interfaces.IPolygonalFace3D
The DiGi.Geometry.Spatial.Interfaces.IPolygonalFace3D to check against.
segment3D Segment3D
The Segment3D segment to check.
tolerance System.Double
The tolerance value.
includeStart System.Boolean
If true, includes intersection at the start point of the segment.
includeEnd System.Boolean
If true, includes intersection at the end point of the segment.
System.Boolean
True if the segment intersects the face; otherwise, false.
Query.Intersection<TPolygonalFace3D>(this Polyhedron<TPolygonalFace3D>, Polyhedron<TPolygonalFace3D>, double) Method
Calculates the 3D boolean intersection between two polyhedra.
public static System.Collections.Generic.List<DiGi.Geometry.Spatial.Classes.Polyhedron>? Intersection<TPolygonalFace3D>(this DiGi.Geometry.Spatial.Classes.Polyhedron<TPolygonalFace3D>? polyhedron_1, DiGi.Geometry.Spatial.Classes.Polyhedron<TPolygonalFace3D>? polyhedron_2, double tolerance=1E-06)
where TPolygonalFace3D : DiGi.Geometry.Spatial.Interfaces.IPolygonalFace3D;TPolygonalFace3D
The type of polygonal face, which must implement DiGi.Geometry.Spatial.Interfaces.IPolygonalFace3D.
polyhedron_1 DiGi.Geometry.Spatial.Classes.Polyhedron<TPolygonalFace3D>
The first polyhedron to intersect.
polyhedron_2 DiGi.Geometry.Spatial.Classes.Polyhedron<TPolygonalFace3D>
The second polyhedron to intersect.
tolerance System.Double
The distance tolerance for boolean intersection computations.
System.Collections.Generic.List<Polyhedron>
A list of Polyhedron objects representing the resulting intersection, or null if either input is null.
The computation is delegated to IntersectionResult3D<TPolygonalFace3D>(this Polyhedron<TPolygonalFace3D>, Polyhedron<TPolygonalFace3D>, double); only the polyhedra of the result are returned. Use the result object directly to access lower-dimensional geometry elements.
Calculates the intersection point of two lines defined by their start and end points.
public static DiGi.Geometry.Spatial.Classes.Point3D? IntersectionPoint(DiGi.Geometry.Spatial.Classes.Point3D? point3D_1_Start, DiGi.Geometry.Spatial.Classes.Point3D? point3D_1_End, DiGi.Geometry.Spatial.Classes.Point3D? point3D_2_Start, DiGi.Geometry.Spatial.Classes.Point3D? point3D_2_End, double tolerance=1E-06);point3D_1_Start Point3D
The starting Point3D of the first line.
point3D_1_End Point3D
The ending Point3D of the first line.
point3D_2_Start Point3D
The starting Point3D of the second line.
point3D_2_End Point3D
The ending Point3D of the second line.
tolerance System.Double
The System.Double tolerance used to determine if an intersection exists.
Point3D
A Point3D representing the intersection point, or null if no intersection is found within the specified tolerance.
Intersection of tw lines represented by vector3D (direction) and Point3D (origin). Source: https://github\.com/arakis/Net3dBool/blob/39354914eba2f9d34aedd2a16a6528d50e19beec/src/Net3dBool/Line\.cs\#L46
public static DiGi.Geometry.Spatial.Classes.Point3D? IntersectionPoint(this DiGi.Geometry.Spatial.Classes.Point3D? point3D_1, DiGi.Geometry.Spatial.Classes.Vector3D? vector3D_1, DiGi.Geometry.Spatial.Classes.Point3D? point3D_2, DiGi.Geometry.Spatial.Classes.Vector3D? vector3D_2, bool bounded, double tolerance=1E-06);point3D_1 Point3D
Origin point3D of first line
vector3D_1 Vector3D
Direction Vector3D of first line
point3D_2 Point3D
Origin point3D of second line
vector3D_2 Vector3D
Direction Vector3D of second line
bounded System.Boolean
Bounded means the intersection is limited to the line segments
tolerance System.Double
Tolerance
Determines whether the specified Polyhedron<TPolygonalFace3D> is fully closed within the given distance tolerance.
Face vertices are welded into shared indices using a tolerance-sized spatial hash, and each resulting edge is counted. Edges collapsing onto a single welded vertex are ignored.
Returns false for a null polyhedron, for fewer than four faces (the minimum for a closed solid), and for any structurally malformed face - a face with no plane, no 2D geometry, no edges, a ring holding fewer than three points, or a null point within a ring. A face that cannot be read in full is never treated as contributing no edges, because that would let a broken face pass as closed.
Known limitations. Winding is not checked: two faces sharing an edge in the same direction are accepted, whereas a consistently oriented solid traverses a shared edge in opposite directions - use Orient(Nullable<Orientation>, Nullable<Orientation>) for that. T-junctions report open: when one face's long edge is met by two shorter faces whose shared vertex lies mid-span, no vertex pair matches. Welding is not transitive, so a chain of vertices each within tolerance of the next can weld together even though the chain spans more than the tolerance.
public static bool IsClosed<TPolygonalFace3D>(this DiGi.Geometry.Spatial.Classes.Polyhedron<TPolygonalFace3D>? polyhedron, bool manifold, double tolerance=1E-06)
where TPolygonalFace3D : DiGi.Geometry.Spatial.Interfaces.IPolygonalFace3D;TPolygonalFace3D
The type of the polygonal face, which must implement DiGi.Geometry.Spatial.Interfaces.IPolygonalFace3D.
polyhedron DiGi.Geometry.Spatial.Classes.Polyhedron<TPolygonalFace3D>
The Polyhedron<TPolygonalFace3D> to evaluate.
manifold System.Boolean
When true, every edge must be used exactly twice (a strict 2-manifold surface), so an edge shared by three or more faces is rejected. When false, every edge must be used an even number of times, which accepts an edge shared by four faces.
tolerance System.Double
The System.Double distance tolerance used to weld coincident vertices. Values of zero or less fall back to DiGi.Core.Constants.Tolerance.MicroDistance. Defaults to DiGi.Core.Constants.Tolerance.Distance.
System.Boolean
A System.Boolean value indicating whether the polyhedron is fully closed.
Determines whether the specified Polyhedron<TPolygonalFace3D> is fully closed (i.e., has no naked edges) within the given distance tolerance.
Every edge must be used an even number of times. Use the overload taking a manifold flag to require that every edge is used exactly twice.
public static bool IsClosed<TPolygonalFace3D>(this DiGi.Geometry.Spatial.Classes.Polyhedron<TPolygonalFace3D>? polyhedron, double tolerance=1E-06)
where TPolygonalFace3D : DiGi.Geometry.Spatial.Interfaces.IPolygonalFace3D;TPolygonalFace3D
The type of the polygonal face, which must implement DiGi.Geometry.Spatial.Interfaces.IPolygonalFace3D.
polyhedron DiGi.Geometry.Spatial.Classes.Polyhedron<TPolygonalFace3D>
The Polyhedron<TPolygonalFace3D> to evaluate.
tolerance System.Double
The System.Double distance tolerance used to weld coincident vertices. Values of zero or less fall back to DiGi.Core.Constants.Tolerance.MicroDistance. Defaults to DiGi.Core.Constants.Tolerance.Distance.
System.Boolean
A System.Boolean value indicating whether the polyhedron is fully closed.
Returns the maximum of two Point3D? points.
public static DiGi.Geometry.Spatial.Classes.Point3D? Max(this DiGi.Geometry.Spatial.Classes.Point3D? point3D_1, DiGi.Geometry.Spatial.Classes.Point3D? point3D_2);point3D_1 Point3D
The first Point3D? point to compare.
point3D_2 Point3D
The second Point3D? point to compare.
Point3D
The maximum of the two Point3D? points, or null if either input is null.
Returns the maximum Point3D from the specified collection of nullable Point3D objects.
public static DiGi.Geometry.Spatial.Classes.Point3D? Max(this System.Collections.Generic.IEnumerable<DiGi.Geometry.Spatial.Classes.Point3D?>? point3Ds);point3Ds System.Collections.Generic.IEnumerable<Point3D>
The [System.Collections.Generic.IEnumerable<>](https://learn.microsoft.com/en-us/dotnet/api/system.collections.generic.ienumerable-1 'System.Colle