pub enum SceneKind {
Plane,
Cylinder,
Sphere,
TwoPlanes,
Corner,
TeeJoint,
Corridor,
}Expand description
The set of scenes whose answer is known.
Variants§
Plane
A single plane.
Cylinder
The lateral surface of a cylinder.
Sphere
A sphere.
TwoPlanes
Two non-parallel planes.
Corner
A trihedral corner.
TeeJoint
A T-shaped weld joint.
Corridor
A long corridor: a floor and two walls.
Implementations§
Source§impl SceneKind
impl SceneKind
Sourcepub fn nullspace(self) -> Vec<Vector6<f64>> ⓘ
pub fn nullspace(self) -> Vec<Vector6<f64>> ⓘ
The analytical basis of the null space in the canonical pose.
The derivation for each scene, from the Jacobian row
[nᵀ | (p × n)ᵀ]:
Plane z = 0, n = (0,0,1), points (a, b, 0). Here
p × n = (b, −a, 0), and requiring ρz + b·φx − a·φy = 0 for all
a, b gives φx = φy = ρz = 0. Free: ρx, ρy, φz — the
in-plane translations and rotation about the normal, three degrees
of freedom.
Cylinder with axis z, points (r cosθ, r sinθ, h),
n = (cosθ, sinθ, 0). Here p × n = (−h sinθ, h cosθ, 0), and
requiring cosθ·(ρx + h·φy) + sinθ·(ρy − h·φx) = 0 for all θ and
at least two distinct h gives ρx = ρy = φx = φy = 0. Free: ρz
and φz — sliding along the axis and spinning about it.
Sphere centred at the origin: p = r·n, hence
p × n = r·(n × n) = 0, so the rotational block of every row
vanishes identically. The normals cover all directions, so ρ = 0.
Free: all three rotations. Note that the answer depends on the
sphere’s centre coinciding with the centre of rotation; a displaced
sphere has a different basis.
Two planes z = 0 and x = 0. The first gives
φx = φy = ρz = 0, the second φy = φz = ρx = 0. Together only
ρy is free: translation along the line of intersection.
Trihedral corner adds the plane y = 0 with the condition
ρy = φx = φz = 0. Nothing is left — full observability.
Tee joint is the same pair of orthogonal planes as above, with realistic extents. Translation along the seam is free.
Corridor: the floor z = 0 gives ρz = φx = φy = 0, and the
walls x = ±s give ρx = φy = φz = 0. Translation along the
corridor is free.
Sourcepub fn nullspace_dimension(self) -> usize
pub fn nullspace_dimension(self) -> usize
Dimension of the null space.
Trait Implementations§
impl Copy for SceneKind
impl Eq for SceneKind
impl StructuralPartialEq for SceneKind
Auto Trait Implementations§
impl Freeze for SceneKind
impl RefUnwindSafe for SceneKind
impl Send for SceneKind
impl Sync for SceneKind
impl Unpin for SceneKind
impl UnsafeUnpin for SceneKind
impl UnwindSafe for SceneKind
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> Pointable for T
impl<T> Pointable for T
impl<T> Scalar for T
Source§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
Source§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
self from the equivalent element of its
superset. Read moreSource§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
self is actually part of its subset T (and can be converted to it).Source§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
self.to_subset but without any property checks. Always succeeds.Source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
self to the equivalent element of its superset.