[−][src]Struct cv::WorldPoint
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 WorldPoint
s
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.
Methods from Deref<Target = Point<f64, U3>>
pub fn to_homogeneous(
&self
) -> Matrix<N, <D as DimNameAdd<U1>>::Output, U1, <DefaultAllocator as Allocator<N, <D as DimNameAdd<U1>>::Output, U1>>::Buffer> where
D: DimNameAdd<U1>,
N: One,
DefaultAllocator: Allocator<N, <D as DimNameAdd<U1>>::Output, U1>,
[src]
&self
) -> Matrix<N, <D as DimNameAdd<U1>>::Output, U1, <DefaultAllocator as Allocator<N, <D as DimNameAdd<U1>>::Output, U1>>::Buffer> where
D: DimNameAdd<U1>,
N: One,
DefaultAllocator: Allocator<N, <D as DimNameAdd<U1>>::Output, U1>,
Converts this point into a vector in homogeneous coordinates, i.e., appends a 1
at the
end of it.
This is the same as .into()
.
Example
let p = Point2::new(10.0, 20.0); assert_eq!(p.to_homogeneous(), Vector3::new(10.0, 20.0, 1.0)); // This works in any dimension. let p = Point3::new(10.0, 20.0, 30.0); assert_eq!(p.to_homogeneous(), Vector4::new(10.0, 20.0, 30.0, 1.0));
pub fn len(&self) -> usize
[src]
The dimension of this point.
Example
let p = Point2::new(1.0, 2.0); assert_eq!(p.len(), 2); // This works in any dimension. let p = Point3::new(10.0, 20.0, 30.0); assert_eq!(p.len(), 3);
pub fn stride(&self) -> usize
[src]
This methods is no longer significant and will always return 1.
The stride of this point. This is the number of buffer element separating each component of this point.
pub fn iter(
&self
) -> MatrixIter<N, D, U1, <DefaultAllocator as Allocator<N, D, U1>>::Buffer>
[src]
&self
) -> MatrixIter<N, D, U1, <DefaultAllocator as Allocator<N, D, U1>>::Buffer>
Iterates through this point coordinates.
Example
let p = Point3::new(1.0, 2.0, 3.0); let mut it = p.iter().cloned(); assert_eq!(it.next(), Some(1.0)); assert_eq!(it.next(), Some(2.0)); assert_eq!(it.next(), Some(3.0)); assert_eq!(it.next(), None);
pub unsafe fn get_unchecked(&self, i: usize) -> &N
[src]
Gets a reference to i-th element of this point without bound-checking.
pub fn iter_mut(
&mut self
) -> MatrixIterMut<N, D, U1, <DefaultAllocator as Allocator<N, D, U1>>::Buffer>
[src]
&mut self
) -> MatrixIterMut<N, D, U1, <DefaultAllocator as Allocator<N, D, U1>>::Buffer>
Mutably iterates through this point coordinates.
Example
let mut p = Point3::new(1.0, 2.0, 3.0); for e in p.iter_mut() { *e *= 10.0; } assert_eq!(p, Point3::new(10.0, 20.0, 30.0));
pub unsafe fn get_unchecked_mut(&mut self, i: usize) -> &mut N
[src]
Gets a mutable reference to i-th element of this point without bound-checking.
pub unsafe fn swap_unchecked(&mut self, i1: usize, i2: usize)
[src]
Swaps two entries without bound-checking.
pub fn inf(&self, other: &Point<N, D>) -> Point<N, D>
[src]
Computes the infimum (aka. componentwise min) of two points.
pub fn sup(&self, other: &Point<N, D>) -> Point<N, D>
[src]
Computes the supremum (aka. componentwise max) of two points.
pub fn inf_sup(&self, other: &Point<N, D>) -> (Point<N, D>, Point<N, D>)
[src]
Computes the (infimum, supremum) of two points.
pub fn xx(&self) -> Point<N, U2>
[src]
Builds a new point from components of self
.
pub fn xxx(&self) -> Point<N, U3>
[src]
Builds a new point from components of self
.
pub fn xy(&self) -> Point<N, U2>
[src]
Builds a new point from components of self
.
pub fn yx(&self) -> Point<N, U2>
[src]
Builds a new point from components of self
.
pub fn yy(&self) -> Point<N, U2>
[src]
Builds a new point from components of self
.
pub fn xxy(&self) -> Point<N, U3>
[src]
Builds a new point from components of self
.
pub fn xyx(&self) -> Point<N, U3>
[src]
Builds a new point from components of self
.
pub fn xyy(&self) -> Point<N, U3>
[src]
Builds a new point from components of self
.
pub fn yxx(&self) -> Point<N, U3>
[src]
Builds a new point from components of self
.
pub fn yxy(&self) -> Point<N, U3>
[src]
Builds a new point from components of self
.
pub fn yyx(&self) -> Point<N, U3>
[src]
Builds a new point from components of self
.
pub fn yyy(&self) -> Point<N, U3>
[src]
Builds a new point from components of self
.
pub fn xz(&self) -> Point<N, U2>
[src]
Builds a new point from components of self
.
pub fn yz(&self) -> Point<N, U2>
[src]
Builds a new point from components of self
.
pub fn zx(&self) -> Point<N, U2>
[src]
Builds a new point from components of self
.
pub fn zy(&self) -> Point<N, U2>
[src]
Builds a new point from components of self
.
pub fn zz(&self) -> Point<N, U2>
[src]
Builds a new point from components of self
.
pub fn xxz(&self) -> Point<N, U3>
[src]
Builds a new point from components of self
.
pub fn xyz(&self) -> Point<N, U3>
[src]
Builds a new point from components of self
.
pub fn xzx(&self) -> Point<N, U3>
[src]
Builds a new point from components of self
.
pub fn xzy(&self) -> Point<N, U3>
[src]
Builds a new point from components of self
.
pub fn xzz(&self) -> Point<N, U3>
[src]
Builds a new point from components of self
.
pub fn yxz(&self) -> Point<N, U3>
[src]
Builds a new point from components of self
.
pub fn yyz(&self) -> Point<N, U3>
[src]
Builds a new point from components of self
.
pub fn yzx(&self) -> Point<N, U3>
[src]
Builds a new point from components of self
.
pub fn yzy(&self) -> Point<N, U3>
[src]
Builds a new point from components of self
.
pub fn yzz(&self) -> Point<N, U3>
[src]
Builds a new point from components of self
.
pub fn zxx(&self) -> Point<N, U3>
[src]
Builds a new point from components of self
.
pub fn zxy(&self) -> Point<N, U3>
[src]
Builds a new point from components of self
.
pub fn zxz(&self) -> Point<N, U3>
[src]
Builds a new point from components of self
.
pub fn zyx(&self) -> Point<N, U3>
[src]
Builds a new point from components of self
.
pub fn zyy(&self) -> Point<N, U3>
[src]
Builds a new point from components of self
.
pub fn zyz(&self) -> Point<N, U3>
[src]
Builds a new point from components of self
.
pub fn zzx(&self) -> Point<N, U3>
[src]
Builds a new point from components of self
.
pub fn zzy(&self) -> Point<N, U3>
[src]
Builds a new point from components of self
.
pub fn zzz(&self) -> Point<N, U3>
[src]
Builds a new point from components of self
.
Trait Implementations
impl AsMut<Point<f64, U3>> for WorldPoint
[src]
impl AsRef<Point<f64, U3>> for WorldPoint
[src]
impl Clone for WorldPoint
[src]
fn clone(&self) -> WorldPoint
[src]
fn clone_from(&mut self, source: &Self)
1.0.0[src]
impl Copy for WorldPoint
[src]
impl Debug for WorldPoint
[src]
impl Deref for WorldPoint
[src]
type Target = Point<f64, U3>
The resulting type after dereferencing.
fn deref(&self) -> &<WorldPoint as Deref>::Target
[src]
impl DerefMut for WorldPoint
[src]
fn deref_mut(&mut self) -> &mut <WorldPoint as Deref>::Target
[src]
impl From<Point<f64, U3>> for WorldPoint
[src]
impl From<WorldPoint> for Point<f64, U3>
[src]
impl PartialEq<WorldPoint> for WorldPoint
[src]
fn eq(&self, other: &WorldPoint) -> bool
[src]
fn ne(&self, other: &WorldPoint) -> bool
[src]
impl PartialOrd<WorldPoint> for WorldPoint
[src]
fn partial_cmp(&self, other: &WorldPoint) -> Option<Ordering>
[src]
fn lt(&self, other: &WorldPoint) -> bool
[src]
fn le(&self, other: &WorldPoint) -> bool
[src]
fn gt(&self, other: &WorldPoint) -> bool
[src]
fn ge(&self, other: &WorldPoint) -> bool
[src]
impl StructuralPartialEq for WorldPoint
[src]
Auto Trait Implementations
impl RefUnwindSafe for WorldPoint
impl Send for WorldPoint
impl Sync for WorldPoint
impl Unpin for WorldPoint
impl UnwindSafe for WorldPoint
Blanket Implementations
impl<T> Any for T where
T: 'static + ?Sized,
[src]
T: 'static + ?Sized,
impl<T> Borrow<T> for T where
T: ?Sized,
[src]
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]
T: ?Sized,
fn borrow_mut(&mut self) -> &mut T
[src]
impl<T> From<T> for T
[src]
impl<T, U> Into<U> for T where
U: From<T>,
[src]
U: From<T>,
impl<T> Same<T> for T
type Output = T
Should always be Self
impl<T> Scalar for T where
T: PartialEq<T> + Copy + Any + Debug,
[src]
T: PartialEq<T> + Copy + Any + Debug,
impl<SS, SP> SupersetOf<SS> for SP where
SS: SubsetOf<SP>,
SS: SubsetOf<SP>,
fn to_subset(&self) -> Option<SS>
fn is_in_subset(&self) -> bool
fn to_subset_unchecked(&self) -> SS
fn from_subset(element: &SS) -> SP
impl<T> ToOwned for T where
T: Clone,
[src]
T: Clone,
type Owned = T
The resulting type after obtaining ownership.
fn to_owned(&self) -> T
[src]
fn clone_into(&self, target: &mut T)
[src]
impl<T, U> TryFrom<U> for T where
U: Into<T>,
[src]
U: Into<T>,
type Error = Infallible
The type returned in the event of a conversion error.
fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
[src]
impl<T, U> TryInto<U> for T where
U: TryFrom<T>,
[src]
U: TryFrom<T>,
type Error = <U as TryFrom<T>>::Error
The type returned in the event of a conversion error.
fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>
[src]
impl<V, T> VZip<V> for T where
V: MultiLane<T>,
V: MultiLane<T>,