Skip to main content

icp

Function icp 

Source
pub fn icp(
    points: &[[f64; 3]],
    fixed: &Mesh,
    bvh: &Bvh,
    initial: &Rigid,
    options: &IcpOptions,
) -> Result<IcpReport>
Expand description

Aligns points to the mesh fixed by rigid, point-to-plane ICP, starting from initial. See the module docs.

The report’s transform maps the points to fixed’s local coordinates (the stored f32 positions, without the origin). The correspondence search rounds moved points to f32; the distances the solver minimises and reports are computed in f64. Results do not depend on the parallel feature or the thread count. The determination check adds a bounded cost: up to 12 restarts of up to 12 steps on at most 10,000 points.

§Errors

OpsError::InvalidInput for no points, non-finite points, a fixed mesh without triangles, or an invalid option; OpsError::Query for an invalid initial, one that takes a point out of f32 range, or a bvh that does not match fixed; OpsError::Store when out of memory.