Class AlgebraicCircle

java.lang.Object
imagingbook.common.geometry.circle.AlgebraicCircle

public class AlgebraicCircle extends Object

Represents an algebraic circle with four parameters A, B, C, D in the form A * (x^2 + y^2) + B * x + C * y + D = 0. Parameters are normalized such that B^2 + C^2 - 4 * A * D = 1 and A ≥ 0 Circle instances are immutable. See Sec. 11.1.1 and Appendix F.2.1 of [1] for details.

[1] W. Burger, M.J. Burge, Digital Image Processing – An Algorithmic Introduction, 3rd ed, Springer (2022).

Version:
2022/11/17
  • Field Details

    • A

      public final double A
      Circle parameter.
    • B

      public final double B
      Circle parameter.
    • C

      public final double C
      Circle parameter.
    • D

      public final double D
      Circle parameter.
  • Constructor Details

    • AlgebraicCircle

      public AlgebraicCircle(double A, double B, double C, double D)
      Constructor. Creates a AlgebraicCircle instance whose parameters A, B, C, D are normalized such that B^2 + C^2 - 4 * A * D = 1 and A ≥ 0. Throws an exception if d = B^2 + C^2 - 4 * A * D (the discriminant) is negative.
      Parameters:
      A - circle parameter A
      B - circle parameter B
      C - circle parameter C
      D - circle parameter D
    • AlgebraicCircle

      public AlgebraicCircle(double[] p)
      Constructor. Creates a AlgebraicCircle instance from the specified parameter vector [A, B, C, D].
      Parameters:
      p - algebraic circle parameters
    • AlgebraicCircle

      Constructor. Creates a AlgebraicCircle instance from a GeometricCircle.
      Parameters:
      gc - a GeometricCircle
  • Method Details

    • getParameters

      public double[] getParameters()
      Returns a vector of algebraic circle parameters (A, B, C, D).
      Returns:
      algebraic circle parameters (A, B, C, D)
    • equals

      public boolean equals(Object other)
      Overrides:
      equals in class Object
    • equals

      public boolean equals(AlgebraicCircle other, double tolerance)
      Same as equals(Object) but with a numeric tolerance on parameters.
      Parameters:
      other - some other circle
      tolerance - numeric tolerance
      Returns:
      true is equal
    • duplicate

      Returns a copy of this circle.
      Returns:
      a copy of this circle
    • toString

      public String toString()
      Overrides:
      toString in class Object