igeo

## Class ICircleGeo

- java.lang.Object
- - igeo.IParameterObject
  - - igeo.INurbsGeo
    - - igeo.ICurveGeo
      - - igeo.ICircleGeo

- All Implemented Interfaces:
    ICurveI, ICurveOp, IEntityParameter, IParameter, ISubobject, ITransformable, IVal

      public class ICircleGeo
      extends ICurveGeo

  Geometry class of a circle. Implemented as a type of NURBS curve.
  Author:
    Satoru Sugihara

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `IVecI` | `center`
    `IVecI` | `normal`
    `IDoubleI` | `xradius`
    `IDoubleI` | `yradius`

    - ### Fields inherited from class igeo.ICurveGeo

      `basisFunction, controlPoints, defaultWeights, degree, derivativeFunction, knots, uend, uSearchCache, ustart`

    - ### Fields inherited from class igeo.IParameterObject

      `parent`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `ICircleGeo(IVecI center, IVecI normal, double radius)`
    `ICircleGeo(IVecI center, IVecI normal, double radius, boolean approx)`
    `ICircleGeo(IVecI center, IVecI normal, double xradius, double yradius)`
    `ICircleGeo(IVecI center, IVecI normal, double xradius, double yradius, boolean approx)`
    `ICircleGeo(IVecI center, IVecI normal, IDoubleI radius)`
    `ICircleGeo(IVecI center, IVecI normal, IDoubleI radius, boolean approx)`
    `ICircleGeo(IVecI center, IVecI normal, IDoubleI xradius, IDoubleI yradius)`
    `ICircleGeo(IVecI center, IVecI normal, IDoubleI xradius, IDoubleI yradius, boolean approx)`
    `ICircleGeo(IVecI center, IVecI xradiusVec, IVecI yradiusVec)`
    `ICircleGeo(IVecI center, IVecI xradiusVec, IVecI yradiusVec, boolean approx)`
    `ICircleGeo(IVecI center, IVecI normal, IVecI rollDir, double radius)`
    `ICircleGeo(IVecI center, IVecI normal, IVecI rollDir, double radius, boolean approx)`
    `ICircleGeo(IVecI center, IVecI normal, IVecI rollDir, double xradius, double yradius)`
    `ICircleGeo(IVecI center, IVecI normal, IVecI rollDir, double xradius, double yradius, boolean approx)`
    `ICircleGeo(IVecI center, IVecI normal, IVecI rollDir, IDoubleI radius)`
    `ICircleGeo(IVecI center, IVecI normal, IVecI rollDir, IDoubleI radius, boolean approx)`
    `ICircleGeo(IVecI center, IVecI normal, IVecI rollDir, IDoubleI xradius, IDoubleI yradius)`
    `ICircleGeo(IVecI center, IVecI normal, IVecI rollDir, IDoubleI xradius, IDoubleI yradius, boolean approx)`

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `IVec` | `center()` Returns center of geometry object.
    `ICircleGeo` | `center(IVecI c)`
    `static IVec4[]` | `circleCP(IVec center, double radius)`
    `static IVec4[]` | `circleCP(IVec center, IVec normal, double radius)`
    `static IVec4[]` | `circleCP(IVec center, IVec normal, IVec rollDir, double radius)`
    `static IVec4[]` | `circleCP(IVec center, IVec normal, IVec rollDir, double xradius, double yradius)`
    `static IVec[]` | `circleCPApprox(IVec center, IVec normal, IVec rollDir, double xradius, double yradius)` for some platform where regular circle cp with duplicates cannot be shown properly.
    `static int` | `circleDeg()`
    `static double[]` | `circleKnots()`
    `static ICircleGeo` | `circumcircle(IVecI pt1, IVecI pt2, IVecI pt3)`
    `ICircleGeo` | `cps(IVecI[] cps)`
    `void` | `init()`
    `void` | `initApprox()`
    `IVec` | `nml()`
    `ICircleGeo` | `nml(IVec n)`
    `static IVec4[]` | `ovalCP(IVec center, IVec xaxis, IVec yaxis)`
    `static IVec[]` | `ovalCPApprox(IVec center, IVec xaxis, IVec yaxis)`
    `double` | `radius()`
    `ICircleGeo` | `radius(double r)`
    `ICircleGeo` | `radius(IDoubleI r)`
    `ICircleGeo` | `update(IVecI center, IVecI normal, IDoubleI xradius, IDoubleI yradius, boolean approx)`
    `ICircleGeo` | `update(IVecI center, IVecI xradiusVec, IVecI yradiusVec, boolean approx)`
    `ICircleGeo` | `update(IVecI center, IVecI normal, IVecI rollDir, IDoubleI xradius, IDoubleI yradius, boolean approx)`
    `double` | `xradius()`
    `ICircleGeo` | `xradius(double r)`
    `ICircleGeo` | `xradius(IDoubleI r)`
    `double` | `yradius()`
    `ICircleGeo` | `yradius(double r)`
    `ICircleGeo` | `yradius(IDoubleI r)`

    - ### Methods inherited from class igeo.ICurveGeo

      `add, add, add, add, add, add, add, addCP, addCP, addCP, addCP, addCP, addCP, addCP, addCP, checkDuplicatedCP, checkDuplicatedCP, checkDuplicatedCP, checkDuplicatedCPOnEdge, closePt, closePt, cp, cp, cp, cp, cp, cp, cpNum, cpNum, cpNum, cps, deg, deg, deg, dist, dist, div, div, dup, end, endCP, ep, ep, epNum, epNum, epNum, flip, flipU, get, getPointsFromArray, init, init, init, init, init, insertCP, insertCP, intersectPlane, intersectPlane, isClosed, isClosed, isClosed, isInside2d, isInside2d, isRational, isRational, isRational, isValid, isValidCP, isValidCP, knot, knot, knotNum, knotNum, knotNum, knots, knots, knots, len, len, len, len, mid, mirror, mirror, mul, mul, mv, mv, mv, neg, num, num, num, overlapCPNum, pt, pt, pt, ref, ref, removeCP, removeCP, removeCP, rev, revU, rot, rot, rot, rot, rot, rot, rot, rot, rot2, rot2, rot2, rot2, rot2, rot2, scale, scale, scale, scale, scale1d, scale1d, scale1d, scale1d, shear, shear, shear, shear, shearXY, shearXY, shearXY, shearXY, shearYZ, shearYZ, shearYZ, shearYZ, shearZX, shearZX, shearZX, shearZX, start, startCP, sub, sub, sub, tan, tan, tan, transform, transform, transform, transform, translate, translate, translate, u, u, u, u, u, u, u, u, uend, uend, uend, updateCache, ustart, ustart, ustart`

    - ### Methods inherited from class igeo.INurbsGeo

      `createClosedCP, createClosedCPInU, createClosedCPInV, createClosedKnots, createKnots, createKnots, invertKnots, isValidKnots, normalizeKnots`

    - ### Methods inherited from class igeo.IParameterObject

      `createObject, parent, parent`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Field Detail

    - #### center

          public IVecI center

    - #### normal

          public IVecI normal

    - #### xradius

          public IDoubleI xradius

    - #### yradius

          public IDoubleI yradius

  - ### Constructor Detail

    - #### ICircleGeo

          public ICircleGeo(IVecI center,
                    IVecI normal,
                    IDoubleI radius)

    - #### ICircleGeo

          public ICircleGeo(IVecI center,
                    IVecI normal,
                    double radius)

    - #### ICircleGeo

          public ICircleGeo(IVecI center,
                    IVecI normal,
                    IDoubleI xradius,
                    IDoubleI yradius)

    - #### ICircleGeo

          public ICircleGeo(IVecI center,
                    IVecI normal,
                    double xradius,
                    double yradius)

    - #### ICircleGeo

          public ICircleGeo(IVecI center,
                    IVecI normal,
                    IVecI rollDir,
                    double radius)

    - #### ICircleGeo

          public ICircleGeo(IVecI center,
                    IVecI normal,
                    IVecI rollDir,
                    IDoubleI radius)

    - #### ICircleGeo

          public ICircleGeo(IVecI center,
                    IVecI normal,
                    IVecI rollDir,
                    double xradius,
                    double yradius)

    - #### ICircleGeo

          public ICircleGeo(IVecI center,
                    IVecI normal,
                    IVecI rollDir,
                    IDoubleI xradius,
                    IDoubleI yradius)

    - #### ICircleGeo

          public ICircleGeo(IVecI center,
                    IVecI xradiusVec,
                    IVecI yradiusVec)

    - #### ICircleGeo

          public ICircleGeo(IVecI center,
                    IVecI normal,
                    IDoubleI radius,
                    boolean approx)

    - #### ICircleGeo

          public ICircleGeo(IVecI center,
                    IVecI normal,
                    double radius,
                    boolean approx)

    - #### ICircleGeo

          public ICircleGeo(IVecI center,
                    IVecI normal,
                    double xradius,
                    double yradius,
                    boolean approx)

    - #### ICircleGeo

          public ICircleGeo(IVecI center,
                    IVecI normal,
                    IDoubleI xradius,
                    IDoubleI yradius,
                    boolean approx)

    - #### ICircleGeo

          public ICircleGeo(IVecI center,
                    IVecI normal,
                    IVecI rollDir,
                    double radius,
                    boolean approx)

    - #### ICircleGeo

          public ICircleGeo(IVecI center,
                    IVecI normal,
                    IVecI rollDir,
                    IDoubleI radius,
                    boolean approx)

    - #### ICircleGeo

          public ICircleGeo(IVecI center,
                    IVecI normal,
                    IVecI rollDir,
                    double xradius,
                    double yradius,
                    boolean approx)

    - #### ICircleGeo

          public ICircleGeo(IVecI center,
                    IVecI normal,
                    IVecI rollDir,
                    IDoubleI xradius,
                    IDoubleI yradius,
                    boolean approx)

      Parameters:
        `rollDir` - direction of start point

    - #### ICircleGeo

          public ICircleGeo(IVecI center,
                    IVecI xradiusVec,
                    IVecI yradiusVec,
                    boolean approx)

  - ### Method Detail

    - #### circleDeg

          public static int circleDeg()

    - #### circleKnots

          public static double[] circleKnots()

    - #### circleCP

          public static IVec4[] circleCP(IVec center,
                         double radius)

    - #### circleCP

          public static IVec4[] circleCP(IVec center,
                         IVec normal,
                         double radius)

    - #### circleCP

          public static IVec4[] circleCP(IVec center,
                         IVec normal,
                         IVec rollDir,
                         double radius)

    - #### circleCP

          public static IVec4[] circleCP(IVec center,
                         IVec normal,
                         IVec rollDir,
                         double xradius,
                         double yradius)

    - #### ovalCP

          public static IVec4[] ovalCP(IVec center,
                       IVec xaxis,
                       IVec yaxis)

    - #### circleCPApprox

          public static IVec[] circleCPApprox(IVec center,
                              IVec normal,
                              IVec rollDir,
                              double xradius,
                              double yradius)

      for some platform where regular circle cp with duplicates cannot be shown properly. (ex. AI) knots for these control points can be uniform.

    - #### ovalCPApprox

          public static IVec[] ovalCPApprox(IVec center,
                            IVec xaxis,
                            IVec yaxis)

    - #### circumcircle

          public static ICircleGeo circumcircle(IVecI pt1,
                                IVecI pt2,
                                IVecI pt3)

    - #### init

          public void init()

    - #### initApprox

          public void initApprox()

    - #### update

          public ICircleGeo update(IVecI center,
                          IVecI normal,
                          IDoubleI xradius,
                          IDoubleI yradius,
                          boolean approx)

    - #### update

          public ICircleGeo update(IVecI center,
                          IVecI normal,
                          IVecI rollDir,
                          IDoubleI xradius,
                          IDoubleI yradius,
                          boolean approx)

    - #### update

          public ICircleGeo update(IVecI center,
                          IVecI xradiusVec,
                          IVecI yradiusVec,
                          boolean approx)

    - #### cps

          public ICircleGeo cps(IVecI[] cps)

    - #### center

          public IVec center()

      Description copied from class: `ICurveGeo`
      Returns center of geometry object. This is approximation calculated only by control points
      Specified by:
        `center` in interface `ICurveI`
      Overrides:
        `center` in class `ICurveGeo`

    - #### center

          public ICircleGeo center(IVecI c)

    - #### nml

          public IVec nml()

    - #### nml

          public ICircleGeo nml(IVec n)

    - #### radius

          public double radius()

    - #### radius

          public ICircleGeo radius(double r)

    - #### radius

          public ICircleGeo radius(IDoubleI r)

    - #### xradius

          public double xradius()

    - #### xradius

          public ICircleGeo xradius(double r)

    - #### xradius

          public ICircleGeo xradius(IDoubleI r)

    - #### yradius

          public double yradius()

    - #### yradius

          public ICircleGeo yradius(double r)

    - #### yradius

          public ICircleGeo yradius(IDoubleI r)