Namespace Hi.Geom
Classes
- ArrayUtil
Utility class for array operations.
- AxisAngle4d
Axis(3d) and angle(1d)
- Box3d
The axis-aligned box as a geometry kind: what a workpiece, a fixture, a holder, a cutter beam, a transformation geometry or a combination holds beside Cylindroid, StlFile, ExtendedCylinder,
TransformationGeom(HiMech) and GeomCombination — the XML elementBox3d, the mesh, the presentation DTO and the selection name “Box”. The box itself is the value Box, a box3d_t: every bound, corner, expansion and view is computed there, and this class carries none of that API (a bounding box isnew box3d_t(geom)through IExpandToBox3d). Being a class, the object an owner holds is the object a registry key or an editor names, so writing Box through either reaches the owner.
- Cylindroid
3d Geometry of Cylindroid.
- ExtendedCylinder
An extensible cylinder geometry that generates a corresponding Cylindroid by the start section and the total length.
- Flat3d
Represents a 3D plane defined by a unit normal vector and its signed distance from the origin. The plane equation is: Ax + By + Cz + d = 0, where (A,B,C) is the normal vector and d is the distance to origin.
- GenStlFuncHost
A class that hosts a function to generate STL geometry at a caller-chosen resolution.
- GeomCombination
A class that manages multiple STL sources as a single source.
- GeomUtil
Utility of Geometry.
- MathNetUtil
Utility class for MathNet.Numerics operations.
- MathUtil
Math Utility.
- NativeFraction
Native wrapper for C++ fraction_t<0> (unlimited precision fraction). A fraction consists of a numerator and denominator using unlimited precision integers.
- NativeStl
Native Stl. For purpose of efficient swept volume.
- ObjUtil
Wavefront OBJ writer for RGB-coloured triangle buffers.
- PairZr
Value pair of Z and R.
- PairZrUtil
Utility class for working with PairZr objects
- PlyUtil
Stanford PLY writer for RGB-coloured triangle buffers.
- Polar3d
Represents a point in 3D space using polar coordinates
- Segment3d
Represents a 3D line segment defined by two endpoints.
- Stl
STL (stereolithography). Composed by Triangles. Provide Stl File R/W.
- StlFile
Represents an STL file with loading and saving capabilities
- StlFuncHost
A class that hosts a function to generate STL geometry.
- TransformationGeom
Represents a geometric transformation that can be applied to a geometry object. This class combines a transformer with a target geometry to produce transformed geometric results.
- Vec2i
Basic 2D point (or vector).
Structs
- Fraction<TEva>
Pure C# unlimited precision fraction.
- box2d_t
Lightweight 2d box: a sequential-layout value type of two vec2d_t fields, the 32-byte mirror of the C++
geom::box2<vec2d>. An orthogonal box whose edges are all parallel with the Cartesian coordinate axes; the data is Min and Max. It has no in-place mutating method: write Min/Max on a variable, or build a new value with Expanded(vec2d_t), Translated(vec2d_t) and the other value-returning members.
- box3d_t
Lightweight 3d box: a sequential-layout value type of two vec3d_t fields, the 48-byte mirror of the C++
geom::box3<vec3d_t>. An orthogonal box whose edges are all parallel with the Cartesian coordinate axes; the data is Min and Max. It has no in-place mutating method: write Min/Max on a variable, field or array element (never on a property receiver), or build a new value with Expanded(vec3d_t), Translated(vec3d_t), ScaledFromCenter(double) and GetTransformedBoundingBox(mat4d_t). Bound accumulation goes through ExpandToBox3d(ref box3d_t), which takes the destination by reference. This is the mathematical value only — a bound, a stroke limit, a native mirror. The box as a geometry kind (what a workpiece, a holder or a combination holds, the XML factory kind, the mesh, the editor's object) is the class Box3d, which wraps one of these.
- dvec3d_t
Dual vec3d_t with p(vec3d_t) and n(vec3d_t): a sequential-layout value type of two vec3d_t fields, the 48-byte mirror of the C++
geom::dvec3<double>. It has no in-place mutating method: write Point/Normal (or a component through the indexer) on a variable, field or array element, never on a property receiver, or build a new value with theGet*members. A default dvec3d_t is Zero.
- mat4d_t
4x4 matrix, column-major in 16 inline doubles: a sequential-layout value type, the mirror of the C++
geom::mat4<double>(128 bytes,T m[16]). It has no in-place mutating method: write an element through m or the this[int, int] indexer on a variable, field or array element (never on a property, which hands out a copy), assign Trans, or build a new matrix with a constructor, GetInverse(), TransposeMat, NoTransMat, GetScaleMat(double) and the otherGet*members.new mat4d_t()is the identity matrix;default(mat4d_t)is the zero matrix, as the C++mat4()is.
- mat4d_t.Elements
The 16 elements of a mat4d_t, inline (the C++
T m[16]): indexable, enumerable and convertible to Span<T> / ReadOnlySpan<T> of double.
- tri3d_t
Basic 3D triangle: a sequential-layout value type of four vec3d_t fields in the order p0, p1, p2, n, the 96-byte mirror of the C++
geom::tri3<vec3d_t>(so a pinned array of triangles is what core.dll reads astri3d_t*). It has no in-place mutating method: write an apex through the fields or the indexer on a variable, field or array element (never on a property or a List indexer, which hand out a copy), or build a new value with theGet*members.
- vec2d_t
Basic 2D point (or vector): a sequential-layout value type with mutable fields (the mirror of the C++
geom::vec2<double>). It has no in-place mutating method: write a component through x/y, X/Y or the indexer on a variable, field or array element, or build a new value with WithAt(int, double).
- vec3d_t
Basic 3D point (or vector): a sequential-layout value type with mutable fields (the mirror of the C++
geom::vec3<double>, 24 bytes). It has no in-place mutating method: write a component through x/y/z, X/Y/Z or the indexer on a variable, field or array element (never on a property, which hands out a copy), or build a new value with WithAt(int, double) and theGet*family.
- vec3f_t
Single-precision 3D vector: the 12-byte mirror of the C++
geom::vec3<float>(vec3f_t), what core.dll takes for colours and float coordinates; not merged with vec3d_t (float vs double).
Interfaces
- IExpandToBox2d
Object that can be expanded to a box2d_t.
- IExpandToBox3d
Object that can be expanded to a box3d_t.
- IFlat3d
Interface for a 3D plane that provides an anchor point and a normal vector.
- IGenStl
Interface for generating STL geometry with a resolution.
- IGeomProperty
Interface for objects that have a geometry property.
- IGetStl
Interface for retrieving STL geometry data.
- IGetZrContour
Interface for retrieving Z-R contour data for rotational geometries.
- IGetZrList
Interface for getting a list of Z-R pairs.
- IStlSource
Stl provider with xml support.
- ITri3d
Interface for 3D triangles.
- IVec<T>
Interface for vector types with generic element type.
- IZrListSourceProperty
Provides a source for obtaining an IGetZrList.
Enums
- Dir
Enumeration of coordinate axis directions in 3D space.
- FractionStatus
Status flags for Fraction and NativeFraction. Corresponds to IS_PACKED_MASK and IS_EVALUATED_MASK in C++ fraction_base_t.
- Stl.StlType
Stl file format.
- mat4d_t.IndexFlag
Specifies the indexing method for matrix construction from vectors.