Class KruppaDualImageOfAbsoluteConicEstimator

java.lang.Object
com.irurueta.ar.calibration.estimators.KruppaDualImageOfAbsoluteConicEstimator

public class KruppaDualImageOfAbsoluteConicEstimator extends Object
Estimates the DIAC (Dual Image of Absolute Conic) by solving Kruppa's equations and assuming known principal point and zero skewness. This estimator allows enforcing a known aspect ratio as well. The DIAC can be used to obtain the intrinsic parameters of a pair of cameras related by a fundamental matrix. Hence, this class can be used for auto-calibration purposes. Notice that the DualAbsoluteQuadricEstimator is a more robust method of auto-calibration. This class is based on: S.D. Hippisley-Cox & J.Porrill. Auto-calibration - Kruppa's equations and the intrinsic parameters of a camera. AI Vision Research Unit. University of Sheffield.
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    static final double
    Constant defining default aspect ratio of focal distances.
    static final boolean
    Constant defining whether aspect ratio of focal distance (i.e. vertical focal distance divided by horizontal focal distance) is known or not.
    static final double
    Default value for horizontal principal point coordinate.
    static final double
    Default value for vertical principal point coordinate.
    private double
    Contains aspect ratio of focal distances (i.e. vertical focal distance divided by horizontal focal distance).
    private boolean
    Indicates whether aspect ratio of focal distances (i.e. vertical focal distance divided by horizontal focal distance) is known or not.
    Fundamental matrix to estimate DIAC from.
    Listener to be notified of events such as when estimation starts, ends or estimation progress changes.
    private boolean
    True when estimator is estimating the DIAC.
    static final double
    Minimum absolute value allowed for aspect ratio of focal distances.
    private static final int
    Degree of polynomial to solve Kruppa's equation when aspect ratio is known.
    private double
    Known horizontal principal point coordinate.
    private double
    Known vertical principal point coordinate.
  • Constructor Summary

    Constructors
  • Method Summary

    Modifier and Type
    Method
    Description
    private boolean
    buildDiac(double horizontalFocalLength, double verticalFocalLength, DualImageOfAbsoluteConic result)
    Builds a DIAC from estimated focal length components and current principal point assuming zero skewness.
    private com.irurueta.numerical.polynomials.Polynomial
    buildPolynomial1(double a, double b, double c, double d, double e, double f, double g, double h, double i, double j, double k, double l, double s, double t, double u, double v, double w)
    One of Kruppa's equations expressed as a polynomial of degree 4 to solve y value, which is the squared value of vertical focal length.
    private com.irurueta.numerical.polynomials.Polynomial
    buildPolynomial2(double d, double e, double f, double g, double h, double i, double m, double n, double o, double p, double q, double r, double s, double t, double u, double v, double w)
    Another of Kruppa's equations expressed as a polynomial of degree 4 to solve y value, which is the squared value of vertical focal length.
    private com.irurueta.numerical.polynomials.Polynomial
    buildPolynomial3(double a, double b, double c, double d, double e, double f, double g, double h, double i, double j, double k, double l)
    Another of Kruppa's equations expressed as a polynomial of degree 2 to solve x value, which is the squared value of horizontal focal length.
    private com.irurueta.numerical.polynomials.Polynomial
    buildPolynomial4(double d, double e, double f, double g, double h, double i, double m, double n, double o, double p, double q, double r)
    Another of Kruppa's equations expressed as a polynomial of degree 2 to solve x value, which is the squared value of horizontal focal length.
    private com.irurueta.numerical.polynomials.Polynomial
    buildPolynomial5(double a, double b, double c, double j, double k, double l, double m, double n, double o, double p, double q, double r)
    Another of Kruppa's equations expressed as a polynomial of degree 2 to solve x value, which is the squared value of horizontal focal length.
    Estimates Dual Image of Absolute Conic (DIAC).
    void
    Estimates Dual Image of Absolute Conic (DIAC).
    private void
    Estimates the DIAC assuming known aspect ratio.
    private void
    Estimates the DIAC assuming unknown aspect ratio.
    double
    Returns aspect ratio of focal distances (i.e. vertical focal distance divided by horizontal focal distance).
    Gets fundamental matrix to estimate DIAC from.
    Returns listener to be notified of events such as when estimation starts, ends or estimation progress changes.
    double
    Gets known horizontal principal point coordinate.
    double
    Gets known vertical principal point coordinate.
    private double
    getXFromY(double y, double s, double t, double u, double v, double w)
    Gets x value from current y value.
    boolean
    Returns boolean indicating whether aspect ratio of focal distances (i.e.
    boolean
    Indicates whether this instance is locked.
    boolean
    Returns value indicating whether required data has been provided so that DIAC estimation can start.
    private com.irurueta.algebra.Complex[]
    knownAspectRatioRoots(double polyA, double polyB, double polyC, double polyD, double polyE, double polyF, double polyG, double polyH, double polyI, double polyJ, double polyK, double polyL, double polyM, double polyN, double polyO, double polyP, double polyQ, double polyR)
    Solves Kruppa's equations when aspect ratio is known
    void
    setFocalDistanceAspectRatio(double focalDistanceAspectRatio)
    Sets aspect ratio of focal distances (i.e. vertical focal distance divided by horizontal focal distance).
    void
    setFocalDistanceAspectRatioKnown(boolean focalDistanceAspectRatioKnown)
    Sets value indicating whether aspect ratio of focal distances (i.e.
    void
    Sets fundamental matrix to estimate DIAC from.
    void
    Sets listener to be notified of events such as when estimation starts, ends or estimation progress changes.
    void
    setPrincipalPointX(double principalPointX)
    Sets known horizontal principal point coordinate.
    void
    setPrincipalPointY(double principalPointY)
    Sets known vertical principal point coordinate.
    private com.irurueta.algebra.Complex[]
    unknownAspectRatioRoots(double polyA, double polyB, double polyC, double polyD, double polyE, double polyF, double polyG, double polyH, double polyI, double polyJ, double polyK, double polyL, double polyM, double polyN, double polyO, double polyP, double polyQ, double polyR, double polyS, double polyT, double polyU, double polyV, double polyW)
    Solves Kruppa's equations when aspect ratio is unknown

    Methods inherited from class java.lang.Object

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

    • POLY_DEGREE_UNKNOWN_ASPECT_RATIO

      private static final int POLY_DEGREE_UNKNOWN_ASPECT_RATIO
      Degree of polynomial to solve Kruppa's equation when aspect ratio is known.
      See Also:
    • DEFAULT_PRINCIPAL_POINT_X

      public static final double DEFAULT_PRINCIPAL_POINT_X
      Default value for horizontal principal point coordinate.
      See Also:
    • DEFAULT_PRINCIPAL_POINT_Y

      public static final double DEFAULT_PRINCIPAL_POINT_Y
      Default value for vertical principal point coordinate.
      See Also:
    • DEFAULT_FOCAL_DISTANCE_ASPECT_RATIO_KNOWN

      public static final boolean DEFAULT_FOCAL_DISTANCE_ASPECT_RATIO_KNOWN
      Constant defining whether aspect ratio of focal distance (i.e. vertical focal distance divided by horizontal focal distance) is known or not. Notice that focal distance aspect ratio is not related to image size aspect ratio. Typically, LCD sensor cells are square and hence aspect ratio of focal distances is known and equal to 1.
      See Also:
    • DEFAULT_FOCAL_DISTANCE_ASPECT_RATIO

      public static final double DEFAULT_FOCAL_DISTANCE_ASPECT_RATIO
      Constant defining default aspect ratio of focal distances. This constant takes into account that typically LCD sensor cells are square and hence aspect ratio of focal distances is known and equal to 1.
      See Also:
    • MIN_ABS_FOCAL_DISTANCE_ASPECT_RATIO

      public static final double MIN_ABS_FOCAL_DISTANCE_ASPECT_RATIO
      Minimum absolute value allowed for aspect ratio of focal distances.
      See Also:
    • principalPointX

      private double principalPointX
      Known horizontal principal point coordinate.
    • principalPointY

      private double principalPointY
      Known vertical principal point coordinate.
    • focalDistanceAspectRatioKnown

      private boolean focalDistanceAspectRatioKnown
      Indicates whether aspect ratio of focal distances (i.e. vertical focal distance divided by horizontal focal distance) is known or not. Notice that focal distance aspect ratio is not related to image aspect ratio. Typically, LCD sensor cells are square and hence aspect ratio of focal distances is known and equal to 1.
    • focalDistanceAspectRatio

      private double focalDistanceAspectRatio
      Contains aspect ratio of focal distances (i.e. vertical focal distance divided by horizontal focal distance). By default, this is 1.0, since it is taken into account that typically LCD sensor cells are square and hence aspect ratio focal distance is known and equal to 1. Notice that focal distance aspect ratio is not related to image size aspect ratio.
    • locked

      private boolean locked
      True when estimator is estimating the DIAC.
    • listener

      Listener to be notified of events such as when estimation starts, ends or estimation progress changes.
    • fundamentalMatrix

      private FundamentalMatrix fundamentalMatrix
      Fundamental matrix to estimate DIAC from.
  • Constructor Details

    • KruppaDualImageOfAbsoluteConicEstimator

      public KruppaDualImageOfAbsoluteConicEstimator()
      Constructor.
    • KruppaDualImageOfAbsoluteConicEstimator

      public KruppaDualImageOfAbsoluteConicEstimator(KruppaDualImageOfAbsoluteConicEstimatorListener listener)
      Constructor.
      Parameters:
      listener - listener to be notified of events such as when estimation starts, ends or estimation progress changes.
    • KruppaDualImageOfAbsoluteConicEstimator

      public KruppaDualImageOfAbsoluteConicEstimator(FundamentalMatrix fundamentalMatrix)
      Constructor.
      Parameters:
      fundamentalMatrix - fundamental matrix to estimate DIAC from.
    • KruppaDualImageOfAbsoluteConicEstimator

      public KruppaDualImageOfAbsoluteConicEstimator(FundamentalMatrix fundamentalMatrix, KruppaDualImageOfAbsoluteConicEstimatorListener listener)
      Constructor.
      Parameters:
      fundamentalMatrix - fundamental matrix to estimate DIAC from.
      listener - listener to be notified of events such as when estimation starts, ends or estimation progress changes.
  • Method Details

    • getPrincipalPointX

      public double getPrincipalPointX()
      Gets known horizontal principal point coordinate.
      Returns:
      known horizontal principal point coordinate.
    • setPrincipalPointX

      public void setPrincipalPointX(double principalPointX) throws com.irurueta.geometry.estimators.LockedException
      Sets known horizontal principal point coordinate.
      Parameters:
      principalPointX - known horizontal principal point coordinate to be set.
      Throws:
      com.irurueta.geometry.estimators.LockedException - if estimator is locked.
    • getPrincipalPointY

      public double getPrincipalPointY()
      Gets known vertical principal point coordinate.
      Returns:
      known vertical principal point coordinate.
    • setPrincipalPointY

      public void setPrincipalPointY(double principalPointY) throws com.irurueta.geometry.estimators.LockedException
      Sets known vertical principal point coordinate.
      Parameters:
      principalPointY - known vertical principal point coordinate to be set.
      Throws:
      com.irurueta.geometry.estimators.LockedException - if estimator is locked.
    • isFocalDistanceAspectRatioKnown

      public boolean isFocalDistanceAspectRatioKnown()
      Returns boolean indicating whether aspect ratio of focal distances (i.e. vertical focal distance divided by horizontal focal distance) is known or not. Notice that focal distance aspect ratio is not related to image size aspect ratio. Typically, LCD sensor cells are square and hence aspect ratio of focal distances is known and equal to 1. This value is only taken into account if skewness is assumed to be zero, otherwise it is ignored.
      Returns:
      true if focal distance aspect ratio is known, false otherwise.
    • setFocalDistanceAspectRatioKnown

      public void setFocalDistanceAspectRatioKnown(boolean focalDistanceAspectRatioKnown) throws com.irurueta.geometry.estimators.LockedException
      Sets value indicating whether aspect ratio of focal distances (i.e. vertical focal distance divided by horizontal focal distance) is known or not. Notice that focal distance aspect ratio is not related to image size aspect ratio. Typically, LCD sensor cells are square and hence aspect ratio of focal distances is known and equal to 1. This value is only taken into account if skewness is assumed to be otherwise it is ignored.
      Parameters:
      focalDistanceAspectRatioKnown - true if focal distance aspect ratio is known, false otherwise.
      Throws:
      com.irurueta.geometry.estimators.LockedException - if estimator is locked.
    • getFocalDistanceAspectRatio

      public double getFocalDistanceAspectRatio()
      Returns aspect ratio of focal distances (i.e. vertical focal distance divided by horizontal focal distance). By default, this is 1.0, since it is taken into account that typically LCD sensor cells are square and hence aspect ratio focal distances is known and equal to 1. Notice that focal distance aspect ratio is not related to image size aspect ratio Notice that a negative aspect ratio indicates that vertical axis is reversed. This can be useful in some situations where image vertical coordinates are reversed respect to the physical world (i.e. in computer graphics typically image vertical coordinates go downwards, while in physical world they go upwards).
      Returns:
      aspect ratio of focal distances.
    • setFocalDistanceAspectRatio

      public void setFocalDistanceAspectRatio(double focalDistanceAspectRatio) throws com.irurueta.geometry.estimators.LockedException
      Sets aspect ratio of focal distances (i.e. vertical focal distance divided by horizontal focal distance). This value is only taken into account if aspect ratio is marked as known, otherwise it is ignored. By default, this is 1.0, since it is taken into account that typically LCD sensor cells are square and hence aspect ratio focal distances is known and equal to 1. Notice that focal distance aspect ratio is not related to image size aspect ratio. Notice that a negative aspect ratio indicates that vertical axis is reversed. This can be useful in some situations where image vertical coordinates are reversed respect to the physical world (i.e. in computer graphics typically image vertical coordinates go downwards, while in physical world they go upwards).
      Parameters:
      focalDistanceAspectRatio - aspect ratio of focal distances to be set.
      Throws:
      com.irurueta.geometry.estimators.LockedException - if estimator is locked.
      IllegalArgumentException - if focal distance aspect ratio is too close to zero, as it might produce numerical instabilities.
    • isLocked

      public boolean isLocked()
      Indicates whether this instance is locked.
      Returns:
      true if this estimator is busy estimating a DIAC, false otherwise.
    • getListener

      Returns listener to be notified of events such as when estimation starts, ends or estimation progress changes.
      Returns:
      listener to be notified of events.
    • setListener

      public void setListener(KruppaDualImageOfAbsoluteConicEstimatorListener listener) throws com.irurueta.geometry.estimators.LockedException
      Sets listener to be notified of events such as when estimation starts, ends or estimation progress changes.
      Parameters:
      listener - listener to be notified of events.
      Throws:
      com.irurueta.geometry.estimators.LockedException - if estimator is locked.
    • getFundamentalMatrix

      public FundamentalMatrix getFundamentalMatrix()
      Gets fundamental matrix to estimate DIAC from.
      Returns:
      fundamental matrix to estimate DIAC from.
    • setFundamentalMatrix

      public void setFundamentalMatrix(FundamentalMatrix fundamentalMatrix) throws com.irurueta.geometry.estimators.LockedException
      Sets fundamental matrix to estimate DIAC from.
      Parameters:
      fundamentalMatrix - fundamental matrix to estimate DIAC from.
      Throws:
      com.irurueta.geometry.estimators.LockedException - if estimator is locked.
    • isReady

      public boolean isReady()
      Returns value indicating whether required data has been provided so that DIAC estimation can start. If true, estimator is ready to compute the DIAC, otherwise more data needs to be provided.
      Returns:
      true if estimator is ready, false otherwise.
    • estimate

      public DualImageOfAbsoluteConic estimate() throws com.irurueta.geometry.estimators.LockedException, com.irurueta.geometry.estimators.NotReadyException, KruppaDualImageOfAbsoluteConicEstimatorException
      Estimates Dual Image of Absolute Conic (DIAC).
      Returns:
      estimated DIAC.
      Throws:
      com.irurueta.geometry.estimators.LockedException - if estimator is locked.
      com.irurueta.geometry.estimators.NotReadyException - if input has not yet been provided.
      KruppaDualImageOfAbsoluteConicEstimatorException - if an error occurs during estimation, usually because fundamental matrix corresponds to degenerate camera movements, or because of numerical instabilities.
    • estimate

      public void estimate(DualImageOfAbsoluteConic result) throws com.irurueta.geometry.estimators.LockedException, com.irurueta.geometry.estimators.NotReadyException, KruppaDualImageOfAbsoluteConicEstimatorException
      Estimates Dual Image of Absolute Conic (DIAC).
      Parameters:
      result - instance where estimated DIAC will be stored.
      Throws:
      com.irurueta.geometry.estimators.LockedException - if estimator is locked.
      com.irurueta.geometry.estimators.NotReadyException - if input has not yet been provided.
      KruppaDualImageOfAbsoluteConicEstimatorException - if an error occurs during estimation, usually because fundamental matrix corresponds to degenerate camera movements, or because of numerical instabilities.
    • buildDiac

      private boolean buildDiac(double horizontalFocalLength, double verticalFocalLength, DualImageOfAbsoluteConic result)
      Builds a DIAC from estimated focal length components and current principal point assuming zero skewness.
      Parameters:
      horizontalFocalLength - estimated horizontal focal length component.
      verticalFocalLength - estimated vertical focal length component.
      result - instance where estimated DIAC will be stored.
      Returns:
      true if estimated DIAC is valid, false otherwise.
    • estimateUnknownAspectRatio

      private void estimateUnknownAspectRatio(DualImageOfAbsoluteConic result) throws KruppaDualImageOfAbsoluteConicEstimatorException
      Estimates the DIAC assuming unknown aspect ratio.
      Parameters:
      result - instance where estimated DIAC will be stored.
      Throws:
      KruppaDualImageOfAbsoluteConicEstimatorException - if an error occurs during estimation, usually because fundamental matrix corresponds to degenerate camera movements, or because of numerical instabilities.
    • getXFromY

      private double getXFromY(double y, double s, double t, double u, double v, double w)
      Gets x value from current y value. X and y values are the squared values of estimated focal length components. This method is used internally when aspect ratio is not known.
      Parameters:
      y - y value to obtain x value from.
      s - internal value from Kruppa's equations.
      t - internal value from Kruppa's equations.
      u - internal value from Kruppa's equations.
      v - internal value from Kruppa's equations.
      w - internal value from Kruppa's equations.
      Returns:
      x value.
    • buildPolynomial1

      private com.irurueta.numerical.polynomials.Polynomial buildPolynomial1(double a, double b, double c, double d, double e, double f, double g, double h, double i, double j, double k, double l, double s, double t, double u, double v, double w)
      One of Kruppa's equations expressed as a polynomial of degree 4 to solve y value, which is the squared value of vertical focal length. This method is only used when aspect ratio is unknown.
      Parameters:
      a - internal value from Kruppa's equations.
      b - internal value from Kruppa's equations.
      c - internal value from Kruppa's equations.
      d - internal value from Kruppa's equations.
      e - internal value from Kruppa's equations.
      f - internal value from Kruppa's equations.
      g - internal value from Kruppa's equations.
      h - internal value from Kruppa's equations.
      i - internal value from Kruppa's equations.
      j - internal value from Kruppa's equations.
      k - internal value from Kruppa's equations.
      l - internal value from Kruppa's equations.
      s - internal value from Kruppa's equations.
      t - internal value from Kruppa's equations.
      u - internal value from Kruppa's equations.
      v - internal value from Kruppa's equations.
      w - internal value from Kruppa's equations.
      Returns:
      a polynomial.
    • buildPolynomial2

      private com.irurueta.numerical.polynomials.Polynomial buildPolynomial2(double d, double e, double f, double g, double h, double i, double m, double n, double o, double p, double q, double r, double s, double t, double u, double v, double w)
      Another of Kruppa's equations expressed as a polynomial of degree 4 to solve y value, which is the squared value of vertical focal length. This method is only used when aspect ratio is unknown.
      Parameters:
      d - internal value from Kruppa's equations.
      e - internal value from Kruppa's equations.
      f - internal value from Kruppa's equations.
      g - internal value from Kruppa's equations.
      h - internal value from Kruppa's equations.
      i - internal value from Kruppa's equations.
      m - internal value from Kruppa's equations.
      n - internal value from Kruppa's equations.
      o - internal value from Kruppa's equations.
      p - internal value from Kruppa's equations.
      q - internal value from Kruppa's equations.
      r - internal value from Kruppa's equations.
      s - internal value from Kruppa's equations.
      t - internal value from Kruppa's equations.
      u - internal value from Kruppa's equations.
      v - internal value from Kruppa's equations.
      w - internal value from Kruppa's equations.
      Returns:
      a polynomial.
    • estimateKnownAspectRatio

      private void estimateKnownAspectRatio(DualImageOfAbsoluteConic result) throws KruppaDualImageOfAbsoluteConicEstimatorException
      Estimates the DIAC assuming known aspect ratio.
      Parameters:
      result - instance where estimated DIAC will be stored.
      Throws:
      KruppaDualImageOfAbsoluteConicEstimatorException - if an error occurs during estimation, usually because fundamental matrix corresponds to degenerate camera movements, or because of numerical instabilities.
    • buildPolynomial3

      private com.irurueta.numerical.polynomials.Polynomial buildPolynomial3(double a, double b, double c, double d, double e, double f, double g, double h, double i, double j, double k, double l)
      Another of Kruppa's equations expressed as a polynomial of degree 2 to solve x value, which is the squared value of horizontal focal length. This method is only used when aspect ratio is known.
      Parameters:
      a - internal value from Kruppa's equations.
      b - internal value from Kruppa's equations.
      c - internal value from Kruppa's equations.
      d - internal value from Kruppa's equations.
      e - internal value from Kruppa's equations.
      f - internal value from Kruppa's equations.
      g - internal value from Kruppa's equations.
      h - internal value from Kruppa's equations.
      i - internal value from Kruppa's equations.
      j - internal value from Kruppa's equations.
      k - internal value from Kruppa's equations.
      l - internal value from Kruppa's equations.
      Returns:
      a polynomial.
    • buildPolynomial4

      private com.irurueta.numerical.polynomials.Polynomial buildPolynomial4(double d, double e, double f, double g, double h, double i, double m, double n, double o, double p, double q, double r)
      Another of Kruppa's equations expressed as a polynomial of degree 2 to solve x value, which is the squared value of horizontal focal length. This method is only used when aspect ratio is known.
      Parameters:
      d - internal value from Kruppa's equations.
      e - internal value from Kruppa's equations.
      f - internal value from Kruppa's equations.
      g - internal value from Kruppa's equations.
      h - internal value from Kruppa's equations.
      i - internal value from Kruppa's equations.
      m - internal value from Kruppa's equations.
      n - internal value from Kruppa's equations.
      o - internal value from Kruppa's equations.
      p - internal value from Kruppa's equations.
      q - internal value from Kruppa's equations.
      r - internal value from Kruppa's equations.
      Returns:
      a polynomial.
    • buildPolynomial5

      private com.irurueta.numerical.polynomials.Polynomial buildPolynomial5(double a, double b, double c, double j, double k, double l, double m, double n, double o, double p, double q, double r)
      Another of Kruppa's equations expressed as a polynomial of degree 2 to solve x value, which is the squared value of horizontal focal length. This method is only used when aspect ratio is known.
      Parameters:
      a - internal value from Kruppa's equations.
      b - internal value from Kruppa's equations.
      c - internal value from Kruppa's equations.
      j - internal value from Kruppa's equations.
      k - internal value from Kruppa's equations.
      l - internal value from Kruppa's equations.
      m - internal value from Kruppa's equations.
      n - internal value from Kruppa's equations.
      o - internal value from Kruppa's equations.
      p - internal value from Kruppa's equations.
      q - internal value from Kruppa's equations.
      r - internal value from Kruppa's equations.
      Returns:
      a polynomial.
    • unknownAspectRatioRoots

      private com.irurueta.algebra.Complex[] unknownAspectRatioRoots(double polyA, double polyB, double polyC, double polyD, double polyE, double polyF, double polyG, double polyH, double polyI, double polyJ, double polyK, double polyL, double polyM, double polyN, double polyO, double polyP, double polyQ, double polyR, double polyS, double polyT, double polyU, double polyV, double polyW) throws com.irurueta.numerical.NumericalException
      Solves Kruppa's equations when aspect ratio is unknown
      Parameters:
      polyA - A parameter of Kruppa's polynomial equation.
      polyB - B parameter of Kruppa's polynomial equation.
      polyC - C parameter of Kruppa's polynomial equation.
      polyD - D parameter of Kruppa's polynomial equation.
      polyE - E parameter of Kruppa's polynomial equation.
      polyF - F parameter of Kruppa's polynomial equation.
      polyG - G parameter of Kruppa's polynomial equation.
      polyH - H parameter of Kruppa's polynomial equation.
      polyI - I parameter of Kruppa's polynomial equation.
      polyJ - J parameter of Kruppa's polynomial equation.
      polyK - K parameter of Kruppa's polynomial equation.
      polyL - L parameter of Kruppa's polynomial equation.
      polyM - M parameter of Kruppa's polynomial equation.
      polyN - N parameter of Kruppa's polynomial equation.
      polyO - O parameter of Kruppa's polynomial equation.
      polyP - P parameter of Kruppa's polynomial equation.
      polyQ - Q parameter of Kruppa's polynomial equation.
      polyR - R parameter of Kruppa's polynomial equation.
      polyS - S parameter of Kruppa's polynomial equation.
      polyT - T parameter of Kruppa's polynomial equation.
      polyU - U parameter of Kruppa's polynomial equation.
      polyV - V parameter of Kruppa's polynomial equation.
      polyW - W parameter of Kruppa's polynomial equation.
      Returns:
      roots solving Kruppa's equations.
      Throws:
      com.irurueta.numerical.NumericalException - if there are numerical instabilities.
    • knownAspectRatioRoots

      private com.irurueta.algebra.Complex[] knownAspectRatioRoots(double polyA, double polyB, double polyC, double polyD, double polyE, double polyF, double polyG, double polyH, double polyI, double polyJ, double polyK, double polyL, double polyM, double polyN, double polyO, double polyP, double polyQ, double polyR) throws com.irurueta.numerical.NumericalException
      Solves Kruppa's equations when aspect ratio is known
      Parameters:
      polyA - A parameter of Kruppa's polynomial equation.
      polyB - B parameter of Kruppa's polynomial equation.
      polyC - C parameter of Kruppa's polynomial equation.
      polyD - D parameter of Kruppa's polynomial equation.
      polyE - E parameter of Kruppa's polynomial equation.
      polyF - F parameter of Kruppa's polynomial equation.
      polyG - G parameter of Kruppa's polynomial equation.
      polyH - H parameter of Kruppa's polynomial equation.
      polyI - I parameter of Kruppa's polynomial equation.
      polyJ - J parameter of Kruppa's polynomial equation.
      polyK - K parameter of Kruppa's polynomial equation.
      polyL - L parameter of Kruppa's polynomial equation.
      polyM - M parameter of Kruppa's polynomial equation.
      polyN - N parameter of Kruppa's polynomial equation.
      polyO - O parameter of Kruppa's polynomial equation.
      polyP - P parameter of Kruppa's polynomial equation.
      polyQ - Q parameter of Kruppa's polynomial equation.
      polyR - R parameter of Kruppa's polynomial equation.
      Returns:
      roots solving Kruppa's equations.
      Throws:
      com.irurueta.numerical.NumericalException - if there are numerical instabilities.