Expand description
Canonical recognition: deciding that a set of points is a plane, a cylinder, a cone, a sphere or a torus, not that it resembles one.
The input is samples with normals; the output is the canonical surface and the worst deviation actually measured, or nothing. A fit is easy; the decision is the product, and a wrong yes gives a solid that measures nearly right with the wrong surface under every later operation. So every candidate is verified against all the samples at the caller’s stated tolerance, and the reported deviation is the certificate.
The first estimates are closed forms. A plane is the point covariance’s
smallest direction, and a sphere linear least squares through the
|c|² − r² substitution. A cylinder, a cone and a torus are surfaces of
revolution, every normal line of which meets the axis: the axis is the
line that best meets them all, found linearly in Plücker coordinates and
reweighted against the few samples off the surface, and the kind’s
profile (a line, a slanted line) is then fitted in the plane through
it. A torus’s tube radius is read from how fast its normals turn, and its
spine as the circle the samples land on when shifted back along their
normals by that radius. Normals estimated from a mesh’s facets are only
good to a fraction of the facet angle, so each estimate is refined by
least squares on the samples’ own distances to the surface, which is
what the verification measures.
Structs§
- Recognized
- A recognition with its certificate.
Enums§
- Canonical
- A canonical surface a set of samples was recognized as.
Functions§
- recognize_
points - Recognize a canonical surface from samples with unit normals.