Class DualAbsoluteQuadric

java.lang.Object
com.irurueta.geometry.BaseQuadric
com.irurueta.geometry.DualQuadric
com.irurueta.ar.calibration.DualAbsoluteQuadric
All Implemented Interfaces:
Serializable

public class DualAbsoluteQuadric extends com.irurueta.geometry.DualQuadric implements Serializable
The dual absolute quadric is the dual quadric tangent to the plane at infinity. The absolute quadric (which is its inverse) contains all planes located at infinity (x,y,z,0), hence the absolute quadric fulfills (x,y,z,0)'*Q*(x,y,z,0). Consequently, the dual absolute quadric fulfills P*Q^-1*P, where P is the plane at infinity (0,0,0,1) in the metric stratum. This means that in the metric stratus the dual absolute quadric is equal (up to scale) to: [1 0 0 0] Q = [0 1 0 0] [0 0 1 0] [0 0 0 0]
See Also:
  • Field Summary

    Fields inherited from class com.irurueta.geometry.BaseQuadric

    BASEQUADRIC_MATRIX_COLUMN_SIZE, BASEQUADRIC_MATRIX_ROW_SIZE, DEFAULT_LOCUS_THRESHOLD, DEFAULT_PERPENDICULAR_THRESHOLD, MIN_THRESHOLD, N_PARAMS
  • Constructor Summary

    Constructors
    Constructor
    Description
    Constructor.
    DualAbsoluteQuadric(double a, double b, double c, double d, double e, double f, double g, double h, double i, double j)
    Constructor of this class.
    Constructor using provided dual image of absolute conic on an arbitrary affine stratum while keeping the plane at infinity typically used in a metric stratum (0,0,0,1).
    DualAbsoluteQuadric(DualImageOfAbsoluteConic diac, com.irurueta.geometry.Plane planeAtInfinity)
    Constructor from provided dual image of absolute conic and plane at infinity on an arbitrary projective stratum.
    DualAbsoluteQuadric(com.irurueta.geometry.Plane planeAtInfinity)
    Constructor using provided plane at infinity while using the unitary dual image of absolute conic (the identity).
    DualAbsoluteQuadric(com.irurueta.geometry.ProjectiveTransformation3D metricToProjectiveTransformation)
    Constructor of the Dual Absolute Quadric in an arbitrary projective stratum using a transformation from metric stratum to such projective space.
  • Method Summary

    Modifier and Type
    Method
    Description
    Gets dual image of absolute conic associated to this dual absolute quadric in an arbitrary projective stratum.
    void
    Gets dual image of absolute conic associated to this dual absolute quadric in an arbitrary projective stratum and stores the result into provided instance.
    com.irurueta.geometry.ProjectiveTransformation3D
    Obtains the metric to projective stratum transformation defining this Dual Absolute Quadric.
    void
    getMetricToProjectiveTransformation(com.irurueta.geometry.ProjectiveTransformation3D result)
    Obtains the metric to projective stratum transformation defining this Dual Absolute Quadric.
    com.irurueta.geometry.Plane
    Gets plane at infinity associated to this dual absolute quadric in an arbitrary projective stratum.
    void
    getPlaneAtInfinity(com.irurueta.geometry.Plane result)
    Gets plane at infinity associated to this dual absolute quadric in an arbitrary projective stratum.
    final void
    Sets dual image of absolute conic while keeping current plane at infinity in an arbitrary projective stratum.
    final void
    setDualImageOfAbsoluteConicAndPlaneAtInfinity(DualImageOfAbsoluteConic diac, com.irurueta.geometry.Plane planeAtInfinity)
    Sets this dual absolute quadric from provided dual image of absolute conic and plane at infinity on an arbitrary projective stratum.
    final void
    setMetricToProjectiveTransformation(com.irurueta.geometry.ProjectiveTransformation3D metricToProjectiveTransformation)
    Sets this dual absolute quadric from provided metric to projective space transformation.
    final void
    setPlaneAtInfinity(com.irurueta.geometry.Plane planeAtInfinity)
    Sets provided plane at infinity at an arbitrary projective stratum while keeping current dual image of absolute conic.

    Methods inherited from class com.irurueta.geometry.DualQuadric

    angleBetweenPlanes, arePerpendicularPlanes, arePerpendicularPlanes, createCanonicalDualAbsoluteQuadric, getQuadric, isLocus, isLocus, quadric, setParametersFromPlanes

    Methods inherited from class com.irurueta.geometry.BaseQuadric

    asMatrix, asMatrix, getA, getB, getC, getD, getE, getF, getG, getH, getI, getJ, isNormalized, normalize, setA, setB, setC, setD, setE, setF, setG, setH, setI, setJ, setParameters, setParameters, setParameters

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Constructor Details

    • DualAbsoluteQuadric

      public DualAbsoluteQuadric()
      Constructor. Initializes the Dual Absolute Quadric assuming metric stratum, where it is equal to the identity except for the last element which is zero.
    • DualAbsoluteQuadric

      public DualAbsoluteQuadric(double a, double b, double c, double d, double e, double f, double g, double h, double i, double j)
      Constructor of this class. This constructor accepts every parameter describing a dual quadric (parameters a, b, c, d, e, f, g, h, i, j).
      Parameters:
      a - Parameter A of the quadric.
      b - Parameter B of the quadric.
      c - Parameter C of the quadric.
      d - Parameter D of the quadric.
      e - Parameter E of the quadric.
      f - Parameter F of the quadric.
      g - Parameter G of the quadric.
      h - Parameter H of the quadric.
      i - Parameter I of the quadric.
      j - Parameter J of the quadric.
    • DualAbsoluteQuadric

      public DualAbsoluteQuadric(DualImageOfAbsoluteConic diac, com.irurueta.geometry.Plane planeAtInfinity)
      Constructor from provided dual image of absolute conic and plane at infinity on an arbitrary projective stratum.
      Parameters:
      diac - dual image of absolute conic in an arbitrary projective stratum.
      planeAtInfinity - plane at infinity in an arbitrary projective stratum.
    • DualAbsoluteQuadric

      public DualAbsoluteQuadric(DualImageOfAbsoluteConic diac)
      Constructor using provided dual image of absolute conic on an arbitrary affine stratum while keeping the plane at infinity typically used in a metric stratum (0,0,0,1).
      Parameters:
      diac - dual image of absolute conic.
    • DualAbsoluteQuadric

      public DualAbsoluteQuadric(com.irurueta.geometry.Plane planeAtInfinity)
      Constructor using provided plane at infinity while using the unitary dual image of absolute conic (the identity).
      Parameters:
      planeAtInfinity - plane at infinity.
    • DualAbsoluteQuadric

      public DualAbsoluteQuadric(com.irurueta.geometry.ProjectiveTransformation3D metricToProjectiveTransformation) throws InvalidTransformationException
      Constructor of the Dual Absolute Quadric in an arbitrary projective stratum using a transformation from metric stratum to such projective space.
      Parameters:
      metricToProjectiveTransformation - transformation from metric to a projective space.
      Throws:
      InvalidTransformationException - if provided transformation is numerically unstable.
  • Method Details

    • setMetricToProjectiveTransformation

      public final void setMetricToProjectiveTransformation(com.irurueta.geometry.ProjectiveTransformation3D metricToProjectiveTransformation) throws InvalidTransformationException
      Sets this dual absolute quadric from provided metric to projective space transformation.
      Parameters:
      metricToProjectiveTransformation - transformation from metric to a projective space.
      Throws:
      InvalidTransformationException - if provided transformation is numerically unstable.
    • getMetricToProjectiveTransformation

      public com.irurueta.geometry.ProjectiveTransformation3D getMetricToProjectiveTransformation() throws InvalidTransformationException
      Obtains the metric to projective stratum transformation defining this Dual Absolute Quadric.
      Returns:
      a new metric to projective space transformation.
      Throws:
      InvalidTransformationException - if transformation cannot be determined because dual absolute quadric is numerically unstable.
    • getMetricToProjectiveTransformation

      public void getMetricToProjectiveTransformation(com.irurueta.geometry.ProjectiveTransformation3D result) throws InvalidTransformationException
      Obtains the metric to projective stratum transformation defining this Dual Absolute Quadric.
      Parameters:
      result - instance where metric to projective space transformation will be stored.
      Throws:
      InvalidTransformationException - if transformation cannot be determined because dual absolute quadric is numerically unstable.
    • setDualImageOfAbsoluteConicAndPlaneAtInfinity

      public final void setDualImageOfAbsoluteConicAndPlaneAtInfinity(DualImageOfAbsoluteConic diac, com.irurueta.geometry.Plane planeAtInfinity)
      Sets this dual absolute quadric from provided dual image of absolute conic and plane at infinity on an arbitrary projective stratum.
      Parameters:
      diac - dual image of absolute conic to be set.
      planeAtInfinity - plane at infinity to be set.
    • getDualImageOfAbsoluteConic

      public DualImageOfAbsoluteConic getDualImageOfAbsoluteConic()
      Gets dual image of absolute conic associated to this dual absolute quadric in an arbitrary projective stratum.
      Returns:
      dual image of absolute conic associated to this dual absolute quadric.
    • getDualImageOfAbsoluteConic

      public void getDualImageOfAbsoluteConic(DualImageOfAbsoluteConic result)
      Gets dual image of absolute conic associated to this dual absolute quadric in an arbitrary projective stratum and stores the result into provided instance.
      Parameters:
      result - instance where dual image of absolute conic will be stored.
    • setDualImageOfAbsoluteConic

      public final void setDualImageOfAbsoluteConic(DualImageOfAbsoluteConic diac) throws InvalidPlaneAtInfinityException
      Sets dual image of absolute conic while keeping current plane at infinity in an arbitrary projective stratum.
      Parameters:
      diac - dual image of absolute conic to be set.
      Throws:
      InvalidPlaneAtInfinityException - if plane at infinity to be preserved when setting DIAC cannot be determined.
    • getPlaneAtInfinity

      public com.irurueta.geometry.Plane getPlaneAtInfinity() throws InvalidPlaneAtInfinityException
      Gets plane at infinity associated to this dual absolute quadric in an arbitrary projective stratum.
      Returns:
      plane at infinity associated to this dual absolute quadric.
      Throws:
      InvalidPlaneAtInfinityException - if plane at infinity cannot be determined.
    • getPlaneAtInfinity

      public void getPlaneAtInfinity(com.irurueta.geometry.Plane result) throws InvalidPlaneAtInfinityException
      Gets plane at infinity associated to this dual absolute quadric in an arbitrary projective stratum.
      Parameters:
      result - instance where plane at infinity will be stored.
      Throws:
      InvalidPlaneAtInfinityException - if plane at infinity cannot be determined.
    • setPlaneAtInfinity

      public final void setPlaneAtInfinity(com.irurueta.geometry.Plane planeAtInfinity)
      Sets provided plane at infinity at an arbitrary projective stratum while keeping current dual image of absolute conic.
      Parameters:
      planeAtInfinity - plane at infinity to be set.