DAVID4 SDK  1.8.7
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Groups Pages

Provides functions and types related 'Shape Fusion'. More...

Classes

struct  david::MotionInfo
 Provides user knowledge about the motion between two scans. More...
 
struct  david::SubmeshVertexIndex
 Index to define a vertex in a submesh. More...
 
struct  david::ContactRegionPair
 A pair of contact regions, defined as lists of SubmeshVertexIndex. More...
 
struct  david::PosesWithTolerances
 A list of poses (given as 4*4 matrices) plus tolerance values for translation and rotation. More...
 
struct  david::CoarseAlignParams
 Parameter set for Coarse Alignment, see IShapeFusion::AlignPairCoarse. More...
 
struct  david::FineAlignParams
 Parameter set for Fine Alignment, see IShapeFusion::AlignPairFine. More...
 
struct  david::GlobalFineAlignParams
 Parameter set for Global Fine Alignment, see IShapeFusion::AlignGlobalFine. More...
 
class  david::IShapeFusion
 Interface class for 'Shape Fusion'. More...
 

Enumerations

enum  david::TransformType {
  david::TransformGlobalX = 0, david::TransformGlobalY, david::TransformGlobalZ, david::TransformMeshX,
  david::TransformMeshY, david::TransformMeshZ
}
 Defines transform types used by ShapeFusion::Translate and ShapeFusion::Rotate. More...
 
enum  david::CoordinateSystem { david::WorldCoordinates = 0, david::LocalCoordinates }
 Selection of coordinate system. More...
 
enum  david::SubmeshBufferType {
  david::SubmeshVertexPositionBuffer, david::SubmeshVertexNormalBuffer, david::SubmeshVertexTexCoordBuffer, david::SubmeshVertexColorBuffer,
  david::SubmeshTriangleIndexBuffer, david::SubmeshVertexQualityBuffer
}
 Buffer selection. More...
 

Classes and functions related to MotionInfo.

MotionInfo david::GetMotionInfo_Free ()
 Nothing is known. More...
 
MotionInfo david::GetMotionInfo_OnTable (const double axisDir[3])
 Object was moved (translated and rotated) on a planar table without lifting it. More...
 
MotionInfo david::GetMotionInfo_AngleOnly (double angleDeg, double angleToleranceDeg=2.0)
 Only rotation angle is known. More...
 
MotionInfo david::GetMotionInfo_TurntablePartlyCalibrated (double angleDeg, const double axisDir[3], double angleToleranceDeg=2.0)
 Object was rotated with the help of a turntable. More...
 

Detailed Description

Provides functions and types related 'Shape Fusion'.

Enumeration Type Documentation

Selection of coordinate system.

Enumerator
WorldCoordinates 

Coordinates are given with respect to world (global coordinates).

LocalCoordinates 

Coordinates are given with respect to local object coordinate system.

Definition at line 45 of file IShapeFusion.h.

Buffer selection.

Enumerator
SubmeshVertexPositionBuffer 

The vertex position buffer stores the vertex positions as an array of tuples.

Each vertex position is described by a tuple (x,y,z) of three 32bit floats .
This buffer is always present.
Note
Coordinates are always with respect to the local coordinate system of the mesh.
SubmeshVertexNormalBuffer 

The vertex normal buffer stores the vertex normals as an array of tuples.

Each vertex normal is described by a tuple (nx,ny,nz) of three 32bit floats.
This buffer is always present.
Note
Coordinates are always with respect to the local coordinate system of the mesh.
SubmeshVertexTexCoordBuffer 

The texture coordinates buffer stores texture coordinates as an array of tuples.

Each vertex texture coordinate is described a tuple (u,v) of two 32bit floats.
This buffer is only optional.
Note
Coordinates should be in range [0,1].
SubmeshVertexColorBuffer 

The vertex color buffer stores vertex colors as an array of tuples.

Each vertex texture coordinate is described a RGBA tuple (red, green, blue, alpha) of four 8bit unsigned chars.
This buffer is only optional.
Note
Coordinates should be in range [0,1].
SubmeshTriangleIndexBuffer 

The triangle index buffer stores triangles as an array of vertex indices.

Each triangle is described by tuple (v0, v1, v2) of three 32bit integer vertex indices that are zero based. This buffer is always present.

SubmeshVertexQualityBuffer 

The vertex quality buffer stores a quality value for each vertex.

This buffer is only optional.
Note
Quality values should be in range [0,1].

Definition at line 57 of file IShapeFusion.h.

Defines transform types used by ShapeFusion::Translate and ShapeFusion::Rotate.

Enumerator
TransformGlobalX 

Transform around or along global (world) x axis.

TransformGlobalY 

Transform around or along global (world) y axis.

TransformGlobalZ 

Transform around or along global (world) z axis.

TransformMeshX 

Transform around or along mesh's x axis.

TransformMeshY 

Transform around or along mesh's y axis.

TransformMeshZ 

Transform around or along mesh's z axis.

Definition at line 29 of file IShapeFusion.h.

Function Documentation

MotionInfo david::GetMotionInfo_AngleOnly ( double  angleDeg,
double  angleToleranceDeg = 2.0 
)

Only rotation angle is known.

Axis is unknown.

Parameters
[in]angleDegAngle in degrees.
[in]angleToleranceDegTolerance of angleDeg in degrees. Won't work well with too low tolerances; recommended: >=2 deg.
Returns
MotionInfo
MotionInfo david::GetMotionInfo_Free ( )

Nothing is known.

All parameters are set to unknown.

Returns
MotionInfo
Examples:
SimpleMeshComparison.cpp, and SimpleShapeFusion.cpp.
MotionInfo david::GetMotionInfo_OnTable ( const double  axisDir[3])

Object was moved (translated and rotated) on a planar table without lifting it.

Parameters
[in]axisDir3D vector w.r.t. to world coordinates describing a vector orthogonal to the table plane.
Returns
MotionInfo
MotionInfo david::GetMotionInfo_TurntablePartlyCalibrated ( double  angleDeg,
const double  axisDir[3],
double  angleToleranceDeg = 2.0 
)

Object was rotated with the help of a turntable.

The direction of the rotation axis is known, but not the position of the rotation axis.

Parameters
[in]angleDegAngle in degrees.
[in]axisDirDirection vector of the turntable w.r.t. to world coordinates (orthogonal to the turntable surface plane).
[in]angleToleranceDegTolerance of angleDeg in degrees. Won't work well with too low tolerances; recommended: >=2 deg.
Returns
MotionInfo