Struct WorldPoint

Source
pub struct WorldPoint(pub Vector4<f64>);
Expand description

A point in “world” coordinates. This means that the real-world units of the pose are unknown, but the unit of distance and orientation are the same as the current reconstruction.

The reason that the unit of measurement is typically unknown is because if the whole world is scaled by any factor n (excluding the camera itself), then the normalized image coordinates will be exactly same on every frame. Due to this, the scaling of the world is chosen arbitrarily.

To extract the real scale of the world, a known distance between two WorldPoints must be used to scale the whole world (and all translations between cameras). At that point, the world will be appropriately scaled. It is recommended not to make the WorldPoint in the reconstruction scale to the “correct” scale. This is for two reasons:

Firstly, because it is possible for scale drift to occur due to the above situation, the further in the view graph you go from the reference measurement, the more the scale will drift from the reference. It would give a false impression that the scale is known globally when it is only known locally if the whole reconstruction was scaled.

Secondly, as the reconstruction progresses, the reference points might get rescaled as optimization of the reconstruction brings everything into global consistency. This means that, while the reference points would be initially scaled correctly, any graph optimization might cause them to drift in scale as well.

Please scale your points on-demand. When you need to know a real distance in the reconstruction, please use the closest known refenence in the view graph to scale it appropriately. In the future we will add APIs to utilize references as optimization constraints when a known reference reconstruction is present.

If you must join two reconstructions, please solve for the similarity (rotation, translation and scale) between the two reconstructions using an optimizer. APIs will eventually be added to perform this operation as well.

Tuple Fields§

§0: Vector4<f64>

Trait Implementations§

Source§

impl AsMut<Matrix<f64, U4, U1, <DefaultAllocator as Allocator<f64, U4>>::Buffer>> for WorldPoint

Source§

fn as_mut(&mut self) -> &mut Vector4<f64>

Converts this type into a mutable reference of the (usually inferred) input type.
Source§

impl AsRef<Matrix<f64, U4, U1, <DefaultAllocator as Allocator<f64, U4>>::Buffer>> for WorldPoint

Source§

fn as_ref(&self) -> &Vector4<f64>

Converts this type into a shared reference of the (usually inferred) input type.
Source§

impl Clone for WorldPoint

Source§

fn clone(&self) -> WorldPoint

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for WorldPoint

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Deref for WorldPoint

Source§

type Target = Matrix<f64, U4, U1, <DefaultAllocator as Allocator<f64, U4>>::Buffer>

The resulting type after dereferencing.
Source§

fn deref(&self) -> &Self::Target

Dereferences the value.
Source§

impl DerefMut for WorldPoint

Source§

fn deref_mut(&mut self) -> &mut Self::Target

Mutably dereferences the value.
Source§

impl From<Matrix<f64, U4, U1, <DefaultAllocator as Allocator<f64, U4>>::Buffer>> for WorldPoint

Source§

fn from(original: Vector4<f64>) -> WorldPoint

Converts to this type from the input type.
Source§

impl From<WorldPoint> for Vector4<f64>

Source§

fn from(original: WorldPoint) -> Self

Converts to this type from the input type.
Source§

impl PartialEq for WorldPoint

Source§

fn eq(&self, other: &WorldPoint) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl PartialOrd for WorldPoint

Source§

fn partial_cmp(&self, other: &WorldPoint) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more
1.0.0 · Source§

fn lt(&self, other: &Rhs) -> bool

Tests less than (for self and other) and is used by the < operator. Read more
1.0.0 · Source§

fn le(&self, other: &Rhs) -> bool

Tests less than or equal to (for self and other) and is used by the <= operator. Read more
1.0.0 · Source§

fn gt(&self, other: &Rhs) -> bool

Tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · Source§

fn ge(&self, other: &Rhs) -> bool

Tests greater than or equal to (for self and other) and is used by the >= operator. Read more
Source§

impl Projective for WorldPoint

Source§

fn homogeneous(self) -> Vector4<f64>

Retrieve the homogeneous vector. Read more
Source§

fn point(self) -> Option<Point3<f64>>

Retrieve the euclidean 3d point by normalizing the homogeneous coordinate. Read more
Source§

fn from_point(point: Point3<f64>) -> Self

Convert the euclidean 3d point into homogeneous coordinates.
Source§

fn bearing(self) -> Unit<Vector3<f64>>

Retrieve the normalized bearing of the coordinate.
Source§

fn bearing_unnormalized(self) -> Vector3<f64>

Retrieve the unnormalized bearing of the coordinate. Read more
Source§

impl Copy for WorldPoint

Source§

impl StructuralPartialEq for WorldPoint

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<P, T> Receiver for P
where P: Deref<Target = T> + ?Sized, T: ?Sized,

Source§

type Target = T

🔬This is a nightly-only experimental API. (arbitrary_self_types)
The target type on which the method may be called.
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> Scalar for T
where T: Copy + PartialEq + Debug + Any,

Source§

fn inlined_clone(&self) -> T

Performance hack: Clone doesn’t get inlined for Copy types in debug mode, so make it inline anyway.
Source§

fn is<T>() -> bool
where T: Scalar,

Tests if Self the same as the type T Read more
Source§

impl<SS, SP> SupersetOf<SS> for SP
where SS: SubsetOf<SP>,

Source§

fn to_subset(&self) -> Option<SS>

The inverse inclusion map: attempts to construct self from the equivalent element of its superset. Read more
Source§

fn is_in_subset(&self) -> bool

Checks if self is actually part of its subset T (and can be converted to it).
Source§

fn to_subset_unchecked(&self) -> SS

Use with care! Same as self.to_subset but without any property checks. Always succeeds.
Source§

fn from_subset(element: &SS) -> SP

The inclusion map: converts self to the equivalent element of its superset.
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V