Overview |
According to Wikipedia Geometry (Ancient Greek: γεωμετρία; geo = earth, metria = measure) is a part of mathematics concerned with questions of size, shape, and relative position of figures and with properties of space. In that sense the DigitalRune Geometry library contains functions to define objects that have a position and a shape, to compute distance, detect collisions of objects and more.
This topic contains the following sections:
The namespace DigitalRune.Geometry contains the interface IGeometricObject. A geometric object is a 3D object that has a shape and is positioned in the 3D world. The position and orientation of a geometric object are defined using a Pose instance. A pose defines a rotation and a translation that positions a geometric object. The shape of geometric object can be defined using one of many shapes of the namespace DigitalRune.Geometry.Shapes. See Geometric Objects and Shapes for a detailed description of geometric object and shapes.
The namespace DigitalRune.Geometry.Collisions contains classes that compute whether two geometries are in contact (contact queries) or compute the closest points of separated geometries (closest point queries). See Collision Detection for an overview of collision detection in DigitalRune Geometry.
The namespace DigitalRune.Geometry.Partitioning provides spatial partitioning methods to structure complex objects or complex sets of objects in hierarchical data structures, such as bounding volume trees.
The namespace DigitalRune.Geometry.Meshes contains objects to create, describe and manipulate meshes. A doubly-connected edge list (DCEL) can be used to manipulate meshes (see DcelMesh).
The class DigitalRune.GeometryGeometryHelper contains several useful methods, for example, to compute convex hulls and bounding shapes for point clouds.
The class DigitalRune.Geometry.MeshesConvexDecomposition can be used to convert arbitrary meshes into convex shapes. (Convex shapes are better suited for collision detection.)