igeo

## Class ICurve

- java.lang.Object
- - igeo.IObject
  - - igeo.IGeometry
    - - igeo.ICurve

- All Implemented Interfaces:
    ICurveI, ICurveOp, IParameter, ITransformable, IVal
  Direct Known Subclasses:
    IArc, ICircle, ISpringLine, IStickLine, IStraightenerCurve, IStringLine, ITensionLine, ITensionLineOnCurve

      public class ICurve
      extends IGeometry
      implements ICurveI

  Class of NURBS curve object. It contains ICurveGeo instance inside.
  Author:
    Satoru Sugihara

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `ICurveGeo` | `curve`

    - ### Fields inherited from class igeo.IObject

      `attribute, dynamics, graphics, parameter, server, userData`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `ICurve()`
    `ICurve(double[][] xyzValues)`
    `ICurve(double[][] xyzValues, boolean close)`
    `ICurve(double[][] xyzValues, int degree)`
    `ICurve(double[][] xyzValues, int degree, boolean close)`
    `ICurve(double x1, double y1, double z1, double x2, double y2, double z2)`
    `ICurve(ICurve crv)`
    `ICurve(ICurveGeo crv)`
    `ICurve(ICurveI crv)`
    `ICurve(IEdge edge)`
    `ICurve(IServerI s)`
    `ICurve(IServerI s, double[][] xyzValues)`
    `ICurve(IServerI s, double[][] xyzValues, boolean close)`
    `ICurve(IServerI s, double[][] xyzValues, int degree)`
    `ICurve(IServerI s, double[][] xyzValues, int degree, boolean close)`
    `ICurve(IServerI s, double x1, double y1, double z1, double x2, double y2, double z2)`
    `ICurve(IServerI s, ICurve crv)`
    `ICurve(IServerI s, ICurveGeo crv)`
    `ICurve(IServerI s, ICurveI crv)`
    `ICurve(IServerI s, IEdge edge)`
    `ICurve(IServerI s, IVecI pt)` this creates a line between a same point
    `ICurve(IServerI s, IVecI[] cpts)`
    `ICurve(IServerI s, IVecI[] cpts, boolean close)`
    `ICurve(IServerI s, IVecI[] cpts, int degree)`
    `ICurve(IServerI s, IVecI[] cpts, int degree, boolean close)`
    `ICurve(IServerI s, IVecI[] cpts, int degree, double[] knots)`
    `ICurve(IServerI s, IVecI[] cpts, int degree, double[] knots, double ustart, double uend)`
    `ICurve(IServerI s, IVecI pt1, IVecI pt2)`
    `ICurve(IVecI pt)` this creates a line between a same point
    `ICurve(IVecI[] cpts)`
    `ICurve(IVecI[] cpts, boolean close)`
    `ICurve(IVecI[] cpts, int degree)`
    `ICurve(IVecI[] cpts, int degree, boolean close)`
    `ICurve(IVecI[] cpts, int degree, double[] knots)`
    `ICurve(IVecI[] cpts, int degree, double[] knots, double ustart, double uend)`
    `ICurve(IVecI pt1, IVecI pt2)`

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `ICurve` | `add(double x, double y, double z)` transformation methods; API of ITransformable interface
    `ICurve` | `add(double f, IVecI v)` scale add alias
    `ICurve` | `add(IDoubleI x, IDoubleI y, IDoubleI z)`
    `ICurve` | `add(IDoubleI f, IVecI v)` scale add alias
    `ICurve` | `add(IVecI v)`
    `ICurve` | `add(IVecI v, double f)` scale add
    `ICurve` | `add(IVecI v, IDoubleI f)` scale add
    `ICurve` | `addCP(int index, IVecI pt)` add control point at i and rebuild the curve.
    `ICurve` | `addCP(int index, IVecI[] pts)` add control points at i and rebuild the curve.
    `ICurve` | `addCP(int index, IVecI[] pts, int newDegree)` add control points at i and rebuild the curve and newDegree.
    `ICurve` | `addCP(int index, IVecI pt, int newDegree)` add control point at i and rebuild the curve and change degree.
    `ICurve` | `addCP(IVecI pt)` add control point at the end and rebuild the curve.
    `ICurve` | `addCP(IVecI[] pts)` add control points at the end and rebuild the curve.
    `ICurve` | `addCP(IVecI[] pts, int newDegree)` add control points at the end and rebuild the curve and change degree.
    `ICurve` | `addCP(IVecI pt, int newDegree)` add control point at the end and rebuild the curve and change degree.
    `ICurve` | `attr(IAttribute at)` set attributes
    `IVec` | `center()` returns center of geometry object
    `IVec` | `closePt(IVec2I pt)` find approximately closest point on a curve on 2D
    `IVec` | `closePt(IVecI pt)` find approximately closest point on a curve
    `ICurve` | `clr(java.awt.Color c)`
    `ICurve` | `clr(java.awt.Color c, double alpha)`
    `ICurve` | `clr(java.awt.Color c, float alpha)`
    `ICurve` | `clr(java.awt.Color c, int alpha)`
    `ICurve` | `clr(double dgray)`
    `ICurve` | `clr(double dgray, double dalpha)`
    `ICurve` | `clr(double dr, double dg, double db)`
    `ICurve` | `clr(double dr, double dg, double db, double da)`
    `ICurve` | `clr(float fgray)`
    `ICurve` | `clr(float fgray, float falpha)`
    `ICurve` | `clr(float fr, float fg, float fb)`
    `ICurve` | `clr(float fr, float fg, float fb, float fa)`
    `ICurve` | `clr(IColor c)` to set an object color
    `ICurve` | `clr(IColor c, double alpha)` to set color, with alpha value overwritten
    `ICurve` | `clr(IColor c, float alpha)` to set color, with alpha value overwritten
    `ICurve` | `clr(IColor c, int alpha)` to set color, with alpha value overwritten
    `ICurve` | `clr(int gray)`
    `ICurve` | `clr(int gray, int alpha)`
    `ICurve` | `clr(int r, int g, int b)`
    `ICurve` | `clr(int r, int g, int b, int a)`
    `ICurve` | `clr(IObject o)` to set the same color with the object
    `ICurve` | `cp()` cp() is alias of dup()
    `ICurve` | `cp(double x, double y, double z)` cp() is alias of dup().add()
    `ICurve` | `cp(IDoubleI x, IDoubleI y, IDoubleI z)` cp() is alias of dup().add()
    `IVecI` | `cp(IIntegerI i)` getting i-th control point
    `IVec` | `cp(int i)` getting i-th control point
    `ICurve` | `cp(IVecI v)` cp() is alias of dup().add()
    `int` | `cpNum()`
    `int` | `cpNum(ISwitchE e)`
    `IInteger` | `cpNum(ISwitchR r)`
    `IVecI[]` | `cps()` all control points
    `IGraphicObject` | `createGraphic(igeo.gui.IGraphicMode m)`
    `int` | `deg()`
    `int` | `deg(ISwitchE e)`
    `IInteger` | `deg(ISwitchR r)`
    `double` | `dist(IVec2I pt)` distance to the closest point on a curve on 2D
    `double` | `dist(IVecI pt)` distance to the closest point on a curve
    `ICurve` | `div(double v)`
    `ICurve` | `div(IDoubleI v)`
    `ICurve` | `dup()` duplicate object
    `IVec` | `end()` end point of the curve
    `IVec` | `endCP()` end control point of the curve
    `IVec` | `ep(IIntegerI i)` getting i-th edit point
    `IVec` | `ep(int i)` getting i-th edit point
    `int` | `epNum()`
    `int` | `epNum(ISwitchE e)`
    `IInteger` | `epNum(ISwitchR r)`
    `ICurve` | `flip()` alias of neg
    `ICurve` | `flipU()` alias of rev()
    `ICurveGeo` | `get()`
    `ICurve` | `hide()`
    `ICurve` | `hsb(double h, double s, double b)`
    `ICurve` | `hsb(double h, double s, double b, double a)`
    `ICurve` | `hsb(float h, float s, float b)`
    `ICurve` | `hsb(float h, float s, float b, float a)`
    `void` | `initCurve(IServerI s)`
    `ICurve` | `insertCP(int index, IVecI pt)` alias of addCP(int,IVecI)
    `ICurve` | `insertCP(int index, IVecI[] pts)` alias of addCP(int,IVecI[])
    `IVec[]` | `intersectPlane(IVecI planeDir, IVecI planePt)` intersection of curve
    `IVec[]` | `intersectPlane(IVecI planeDir, IVecI planePt, int segmentResolution)` intersection of curve and plane.
    `boolean` | `isClosed()`
    `boolean` | `isClosed(ISwitchE e)`
    `IBool` | `isClosed(ISwitchR r)`
    `boolean` | `isInside2d(IVecI pt)` check if the input point is inside a closed curve.
    `boolean` | `isInside2d(IVecI pt, IVecI projectionDir)` check if the input point is inside a closed curve.
    `boolean` | `isRational()`
    `boolean` | `isRational(ISwitchE e)`
    `IBool` | `isRational(ISwitchR r)`
    `boolean` | `isValid()` checking parameters validity.
    `IDouble` | `knot(IIntegerI i)`
    `double` | `knot(int i)` close curve with the current control points.
    `int` | `knotNum()`
    `int` | `knotNum(ISwitchE e)`
    `IInteger` | `knotNum(ISwitchR r)`
    `double[]` | `knots()` all knot values
    `double[]` | `knots(ISwitchE e)`
    `IDoubleI[]` | `knots(ISwitchR r)`
    `ICurve` | `layer(ILayer l)` Set layer by ILayer object
    `ICurve` | `layer(java.lang.String l)` Set layer by layer name.
    `double` | `len()`
    `double` | `len(ISwitchE e)`
    `IDouble` | `len(ISwitchR r)`
    `IVec` | `mid()` parametrically mid point of a curve
    `ICurve` | `mirror(IVecI planeDir)` mirror is alias of ref
    `ICurve` | `mirror(IVecI center, IVecI planeDir)`
    `ICurve` | `mul(double v)`
    `ICurve` | `mul(IDoubleI v)`
    `ICurve` | `mv(double x, double y, double z)` mv() is alias of add()
    `ICurve` | `mv(IDoubleI x, IDoubleI y, IDoubleI z)`
    `ICurve` | `mv(IVecI v)`
    `ICurve` | `name(java.lang.String nm)` IObject methods
    `ICurve` | `neg()`
    `int` | `num()` change degree.
    `int` | `num(ISwitchE e)`
    `IInteger` | `num(ISwitchR r)`
    `IVec` | `pt(double u)`
    `IVec` | `pt(IDoubleI u)`
    `ICurve` | `ref(IVecI planeDir)` reflect(mirror) 3 dimensionally to the other side of the plane
    `ICurve` | `ref(IVecI center, IVecI planeDir)`
    `ICurve` | `removeCP()` removing control point at the end and rebuild the curve.
    `ICurve` | `removeCP(int index)` removing control point at i and rebuild the curve note that a knots is rebuilt with default equal interval and destroy original knot intervals if variable, like circle.
    `ICurve` | `removeCP(int indexFrom, int indexTo)` removing control point from indexFrom to indexTo-1 and rebuild the curve note that a knots is rebuilt with default equal interval and destroy original knot intervals if variable, like circle.
    `ICurve` | `rev()` reverse self curve ; not creating a new object
    `ICurve` | `revU()` alias of rev()
    `ICurve` | `rot(double angle)`
    `ICurve` | `rot(IDoubleI angle)` rotation around z-axis and origin
    `ICurve` | `rot(IVecI axis, double angle)`
    `ICurve` | `rot(IVecI axis, IDoubleI angle)` rotation around axis vector
    `ICurve` | `rot(IVecI axis, IVecI destDir)` rotate to destination direction vector
    `ICurve` | `rot(IVecI center, IVecI axis, double angle)`
    `ICurve` | `rot(IVecI center, IVecI axis, IDoubleI angle)` rotation around axis vector and center
    `ICurve` | `rot(IVecI center, IVecI axis, IVecI destPt)` rotate to destination point location
    `ICurve` | `rot2(double angle)` rotation on xy-plane around origin; same with rot(double)
    `ICurve` | `rot2(IDoubleI angle)` rotation on xy-plane around origin; same with rot(IDoubleI)
    `ICurve` | `rot2(IVecI destDir)` rotation on xy-plane to destination direction vector
    `ICurve` | `rot2(IVecI center, double angle)`
    `ICurve` | `rot2(IVecI center, IDoubleI angle)` rotation on xy-plane around center
    `ICurve` | `rot2(IVecI center, IVecI destPt)` rotation on xy-plane to destination point location
    `ICurve` | `scale(double f)`
    `ICurve` | `scale(IDoubleI f)` alias of mul
    `ICurve` | `scale(IVecI center, double f)`
    `ICurve` | `scale(IVecI center, IDoubleI f)`
    `ICurve` | `scale1d(IVecI axis, double f)` scale only in 1 direction
    `ICurve` | `scale1d(IVecI axis, IDoubleI f)`
    `ICurve` | `scale1d(IVecI center, IVecI axis, double f)`
    `ICurve` | `scale1d(IVecI center, IVecI axis, IDoubleI f)`
    `ICurve` | `setColor(java.awt.Color c)`
    `ICurve` | `setColor(java.awt.Color c, double alpha)`
    `ICurve` | `setColor(java.awt.Color c, float alpha)`
    `ICurve` | `setColor(java.awt.Color c, int alpha)`
    `ICurve` | `setColor(double dgray)`
    `ICurve` | `setColor(double dgray, double dalpha)`
    `ICurve` | `setColor(double dr, double dg, double db)`
    `ICurve` | `setColor(double dr, double dg, double db, double da)`
    `ICurve` | `setColor(float fgray)`
    `ICurve` | `setColor(float fgray, float falpha)`
    `ICurve` | `setColor(float fr, float fg, float fb)`
    `ICurve` | `setColor(float fr, float fg, float fb, float fa)`
    `ICurve` | `setColor(IColor c)`
    `ICurve` | `setColor(IColor c, double alpha)`
    `ICurve` | `setColor(IColor c, float alpha)`
    `ICurve` | `setColor(IColor c, int alpha)`
    `ICurve` | `setColor(int gray)`
    `ICurve` | `setColor(int gray, int alpha)`
    `ICurve` | `setColor(int r, int g, int b)`
    `ICurve` | `setColor(int r, int g, int b, int a)`
    `ICurve` | `setHSBColor(double h, double s, double b)`
    `ICurve` | `setHSBColor(double h, double s, double b, double a)`
    `ICurve` | `setHSBColor(float h, float s, float b)`
    `ICurve` | `setHSBColor(float h, float s, float b, float a)`
    `ICurve` | `shear(double sxy, double syx, double syz, double szy, double szx, double sxz)` shear operation
    `ICurve` | `shear(IDoubleI sxy, IDoubleI syx, IDoubleI syz, IDoubleI szy, IDoubleI szx, IDoubleI sxz)`
    `ICurve` | `shear(IVecI center, double sxy, double syx, double syz, double szy, double szx, double sxz)`
    `ICurve` | `shear(IVecI center, IDoubleI sxy, IDoubleI syx, IDoubleI syz, IDoubleI szy, IDoubleI szx, IDoubleI sxz)`
    `ICurve` | `shearXY(double sxy, double syx)`
    `ICurve` | `shearXY(IDoubleI sxy, IDoubleI syx)`
    `ICurve` | `shearXY(IVecI center, double sxy, double syx)`
    `ICurve` | `shearXY(IVecI center, IDoubleI sxy, IDoubleI syx)`
    `ICurve` | `shearYZ(double syz, double szy)`
    `ICurve` | `shearYZ(IDoubleI syz, IDoubleI szy)`
    `ICurve` | `shearYZ(IVecI center, double syz, double szy)`
    `ICurve` | `shearYZ(IVecI center, IDoubleI syz, IDoubleI szy)`
    `ICurve` | `shearZX(double szx, double sxz)`
    `ICurve` | `shearZX(IDoubleI szx, IDoubleI sxz)`
    `ICurve` | `shearZX(IVecI center, double szx, double sxz)`
    `ICurve` | `shearZX(IVecI center, IDoubleI szx, IDoubleI sxz)`
    `ICurve` | `show()`
    `IVec` | `start()` start point of the curve
    `IVec` | `startCP()` start control point of the curve
    `ICurve` | `sub(double x, double y, double z)`
    `ICurve` | `sub(IDoubleI x, IDoubleI y, IDoubleI z)`
    `ICurve` | `sub(IVecI v)`
    `IVec` | `tan(double u)`
    `IVec` | `tan(IDoubleI u)`
    `ICurve` | `transform(IMatrix3I mat)`
    `ICurve` | `transform(IMatrix4I mat)`
    `ICurve` | `transform(IVecI xvec, IVecI yvec, IVecI zvec)`
    `ICurve` | `transform(IVecI xvec, IVecI yvec, IVecI zvec, IVecI translate)`
    `ICurve` | `translate(double x, double y, double z)` translate is alias of add()
    `ICurve` | `translate(IDoubleI x, IDoubleI y, IDoubleI z)`
    `ICurve` | `translate(IVecI v)`
    `IDouble` | `u(IInteger epIdx, IDouble epFraction)`
    `double` | `u(int epIdx, double epFraction)`
    `double` | `u(ISwitchE r, IVec2I pt)`
    `double` | `u(ISwitchE r, IVecI pt)`
    `IDouble` | `u(ISwitchR r, IVec2I pt)`
    `IDouble` | `u(ISwitchR r, IVecI pt)`
    `double` | `u(IVec2I pt)` approximate invert projection from 2D location to interanl parameter U
    `double` | `u(IVecI pt)` approximate invert projection from 3D location to interanl parameter U (closest point on curve)
    `double` | `uend()`
    `double` | `uend(ISwitchE e)`
    `IDouble` | `uend(ISwitchR r)`
    `double` | `ustart()`
    `double` | `ustart(ISwitchE e)`
    `IDouble` | `ustart(ISwitchR r)`
    `ICurve` | `weight(double w)`
    `ICurve` | `weight(float w)`

    - ### Methods inherited from class igeo.IObject

      `addDynamics, addUserData, addUserData, alpha, alphaInt, attr, attr, awtColor, blue, blueInt, brightness, castStringHashMap, clearDynamics, clearGraphics, clr, defaultAttribute, del, deletDynamics, deleteDynamics, deleteDynamics, deleteGraphic, dynamicsNum, getAWTColor, getColor, getDynamics, getGraphic, getGraphic, getParameter, graphicsNum, gray, grayInt, green, greenInt, grey, greyInt, hue, initGraphic, initObject, isVisible, layer, name, red, redInt, resetGraphic, saturation, server, setParameter, setTexture, syncColor, syncGraphic, syncVisibility, syncWeight, texture, updateGraphic, userData, userData, userData, userDataNum, visible, weight`

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

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

- - ### Field Detail

    - #### curve

          public ICurveGeo curve

  - ### Constructor Detail

    - #### ICurve

          public ICurve()

    - #### ICurve

          public ICurve(IVecI[] cpts,
                int degree,
                double[] knots,
                double ustart,
                double uend)

    - #### ICurve

          public ICurve(IVecI[] cpts,
                int degree,
                double[] knots)

    - #### ICurve

          public ICurve(IVecI[] cpts,
                int degree)

    - #### ICurve

          public ICurve(IVecI[] cpts)

    - #### ICurve

          public ICurve(IVecI[] cpts,
                int degree,
                boolean close)

    - #### ICurve

          public ICurve(IVecI[] cpts,
                boolean close)

    - #### ICurve

          public ICurve(IVecI pt1,
                IVecI pt2)

    - #### ICurve

          public ICurve(IVecI pt)

      this creates a line between a same point

    - #### ICurve

          public ICurve(double x1,
                double y1,
                double z1,
                double x2,
                double y2,
                double z2)

    - #### ICurve

          public ICurve(double[][] xyzValues)

    - #### ICurve

          public ICurve(double[][] xyzValues,
                int degree)

    - #### ICurve

          public ICurve(double[][] xyzValues,
                boolean close)

    - #### ICurve

          public ICurve(double[][] xyzValues,
                int degree,
                boolean close)

    - #### ICurve

          public ICurve(IEdge edge)

    - #### ICurve

          public ICurve(ICurveGeo crv)

    - #### ICurve

          public ICurve(ICurveI crv)

    - #### ICurve

          public ICurve(ICurve crv)

    - #### ICurve

          public ICurve(IServerI s)

    - #### ICurve

          public ICurve(IServerI s,
                IVecI[] cpts,
                int degree,
                double[] knots,
                double ustart,
                double uend)

    - #### ICurve

          public ICurve(IServerI s,
                IVecI[] cpts,
                int degree,
                double[] knots)

    - #### ICurve

          public ICurve(IServerI s,
                IVecI[] cpts,
                int degree)

    - #### ICurve

          public ICurve(IServerI s,
                IVecI[] cpts)

    - #### ICurve

          public ICurve(IServerI s,
                IVecI[] cpts,
                int degree,
                boolean close)

    - #### ICurve

          public ICurve(IServerI s,
                IVecI[] cpts,
                boolean close)

    - #### ICurve

          public ICurve(IServerI s,
                IVecI pt1,
                IVecI pt2)

    - #### ICurve

          public ICurve(IServerI s,
                IVecI pt)

      this creates a line between a same point

    - #### ICurve

          public ICurve(IServerI s,
                double x1,
                double y1,
                double z1,
                double x2,
                double y2,
                double z2)

    - #### ICurve

          public ICurve(IServerI s,
                double[][] xyzValues)

    - #### ICurve

          public ICurve(IServerI s,
                double[][] xyzValues,
                int degree)

    - #### ICurve

          public ICurve(IServerI s,
                double[][] xyzValues,
                boolean close)

    - #### ICurve

          public ICurve(IServerI s,
                double[][] xyzValues,
                int degree,
                boolean close)

    - #### ICurve

          public ICurve(IServerI s,
                IEdge edge)

    - #### ICurve

          public ICurve(IServerI s,
                ICurveGeo crv)

    - #### ICurve

          public ICurve(IServerI s,
                ICurveI crv)

    - #### ICurve

          public ICurve(IServerI s,
                ICurve crv)

  - ### Method Detail

    - #### initCurve

          public void initCurve(IServerI s)

    - #### createGraphic

          public IGraphicObject createGraphic(igeo.gui.IGraphicMode m)

      Overrides:
        `createGraphic` in class `IObject`

    - #### isValid

          public boolean isValid()

      Description copied from class: `IObject`
      checking parameters validity. to be overriden.
      Specified by:
        `isValid` in interface `ICurveI`
      Overrides:
        `isValid` in class `IObject`

    - #### get

          public ICurveGeo get()

      Specified by:
        `get` in interface `ICurveI`
      Specified by:
        `get` in interface `ICurveOp`
      Specified by:
        `get` in interface `IParameter`
      Returns:
        fixed value but in wrapper class

    - #### dup

          public ICurve dup()

      Description copied from class: `IObject`
      duplicate object
      Specified by:
        `dup` in interface `ICurveI`
      Specified by:
        `dup` in interface `ITransformable`
      Overrides:
        `dup` in class `IGeometry`
      Returns:
        duplicated instance

    - #### pt

          public IVec pt(IDoubleI u)

      Specified by:
        `pt` in interface `ICurveI`

    - #### pt

          public IVec pt(double u)

      Specified by:
        `pt` in interface `ICurveI`

    - #### tan

          public IVec tan(IDoubleI u)

      Specified by:
        `tan` in interface `ICurveI`

    - #### tan

          public IVec tan(double u)

      Specified by:
        `tan` in interface `ICurveI`

    - #### cp

          public IVec cp(int i)

      getting i-th control point
      Specified by:
        `cp` in interface `ICurveI`

    - #### cp

          public IVecI cp(IIntegerI i)

      getting i-th control point
      Specified by:
        `cp` in interface `ICurveI`

    - #### cps

          public IVecI[] cps()

      Description copied from interface: `ICurveI`
      all control points
      Specified by:
        `cps` in interface `ICurveI`

    - #### ep

          public IVec ep(int i)

      getting i-th edit point
      Specified by:
        `ep` in interface `ICurveI`

    - #### ep

          public IVec ep(IIntegerI i)

      getting i-th edit point
      Specified by:
        `ep` in interface `ICurveI`

    - #### start

          public IVec start()

      start point of the curve
      Specified by:
        `start` in interface `ICurveI`

    - #### end

          public IVec end()

      end point of the curve
      Specified by:
        `end` in interface `ICurveI`

    - #### startCP

          public IVec startCP()

      start control point of the curve
      Specified by:
        `startCP` in interface `ICurveI`

    - #### endCP

          public IVec endCP()

      end control point of the curve
      Specified by:
        `endCP` in interface `ICurveI`

    - #### mid

          public IVec mid()

      parametrically mid point of a curve
      Specified by:
        `mid` in interface `ICurveI`

    - #### center

          public IVec center()

      returns center of geometry object
      Specified by:
        `center` in interface `ICurveI`
      Specified by:
        `center` in class `IGeometry`

    - #### addCP

          public ICurve addCP(IVecI pt,
                     int newDegree)

      add control point at the end and rebuild the curve and change degree. note that a knots is rebuilt with default equal intervals and destroy original knot intervals if variable, like circle.

    - #### addCP

          public ICurve addCP(IVecI pt)

      add control point at the end and rebuild the curve. note that a knots is rebuilt with default equal intervals and destroy original knot intervals if variable, like circle.

    - #### addCP

          public ICurve addCP(int index,
                     IVecI pt,
                     int newDegree)

      add control point at i and rebuild the curve and change degree. note that a knots is rebuilt with default equal intervals and destroy original knot intervals if variable, like circle.

    - #### addCP

          public ICurve addCP(int index,
                     IVecI pt)

      add control point at i and rebuild the curve. note that a knots is rebuilt with default equal intervals and destroy original knot intervals if variable, like circle.

    - #### addCP

          public ICurve addCP(IVecI[] pts,
                     int newDegree)

      add control points at the end and rebuild the curve and change degree. note that a knots is rebuilt with default equal intervals and destroy original knot intervals if variable, like circle.

    - #### addCP

          public ICurve addCP(IVecI[] pts)

      add control points at the end and rebuild the curve. note that a knots is rebuilt with default equal intervals and destroy original knot intervals if variable, like circle.

    - #### addCP

          public ICurve addCP(int index,
                     IVecI[] pts,
                     int newDegree)

      add control points at i and rebuild the curve and newDegree. note that a knots is rebuilt with default equal intervals and destroy original knot intervals if variable, like circle.

    - #### addCP

          public ICurve addCP(int index,
                     IVecI[] pts)

      add control points at i and rebuild the curve. note that a knots is rebuilt with default equal intervals and destroy original knot intervals if variable, like circle.

    - #### insertCP

          public ICurve insertCP(int index,
                        IVecI pt)

      alias of addCP(int,IVecI)

    - #### insertCP

          public ICurve insertCP(int index,
                        IVecI[] pts)

      alias of addCP(int,IVecI[])

    - #### removeCP

          public ICurve removeCP()

      removing control point at the end and rebuild the curve. note that a knots is rebuilt with default equal interval and destroy original knot intervals if variable, like circle.

    - #### removeCP

          public ICurve removeCP(int index)

      removing control point at i and rebuild the curve note that a knots is rebuilt with default equal interval and destroy original knot intervals if variable, like circle.

    - #### removeCP

          public ICurve removeCP(int indexFrom,
                        int indexTo)

      removing control point from indexFrom to indexTo-1 and rebuild the curve note that a knots is rebuilt with default equal interval and destroy original knot intervals if variable, like circle.

    - #### u

          public double u(IVecI pt)

      approximate invert projection from 3D location to interanl parameter U (closest point on curve)
      Specified by:
        `u` in interface `ICurveI`

    - #### u

          public double u(ISwitchE r,
                 IVecI pt)

      Specified by:
        `u` in interface `ICurveI`

    - #### u

          public IDouble u(ISwitchR r,
                  IVecI pt)

      Specified by:
        `u` in interface `ICurveI`

    - #### u

          public double u(IVec2I pt)

      approximate invert projection from 2D location to interanl parameter U
      Specified by:
        `u` in interface `ICurveI`

    - #### u

          public double u(ISwitchE r,
                 IVec2I pt)

      Specified by:
        `u` in interface `ICurveI`

    - #### u

          public IDouble u(ISwitchR r,
                  IVec2I pt)

      Specified by:
        `u` in interface `ICurveI`

    - #### closePt

          public IVec closePt(IVecI pt)

      find approximately closest point on a curve
      Specified by:
        `closePt` in interface `ICurveI`

    - #### closePt

          public IVec closePt(IVec2I pt)

      find approximately closest point on a curve on 2D
      Specified by:
        `closePt` in interface `ICurveI`

    - #### dist

          public double dist(IVecI pt)

      distance to the closest point on a curve
      Specified by:
        `dist` in interface `ICurveI`

    - #### dist

          public double dist(IVec2I pt)

      distance to the closest point on a curve on 2D
      Specified by:
        `dist` in interface `ICurveI`

    - #### knot

          public double knot(int i)

      Description copied from interface: `ICurveI`
      close curve with the current control points. it changes total number of control points and knot vector dependng on the degree. new knot vector has equal default intervals destroying original variable intervals.
      Specified by:
        `knot` in interface `ICurveI`

    - #### knot

          public IDouble knot(IIntegerI i)

      Specified by:
        `knot` in interface `ICurveI`

    - #### knots

          public double[] knots()

      Description copied from interface: `ICurveI`
      all knot values
      Specified by:
        `knots` in interface `ICurveI`

    - #### knots

          public double[] knots(ISwitchE e)

      Specified by:
        `knots` in interface `ICurveI`

    - #### knots

          public IDoubleI[] knots(ISwitchR r)

      Specified by:
        `knots` in interface `ICurveI`

    - #### knotNum

          public int knotNum()

      Specified by:
        `knotNum` in interface `ICurveI`

    - #### knotNum

          public int knotNum(ISwitchE e)

      Specified by:
        `knotNum` in interface `ICurveI`

    - #### knotNum

          public IInteger knotNum(ISwitchR r)

      Specified by:
        `knotNum` in interface `ICurveI`

    - #### isRational

          public boolean isRational()

      Specified by:
        `isRational` in interface `ICurveI`
      Returns:
        returns true if any of control point has non-default(1.0) weight otherwise false.

    - #### isRational

          public boolean isRational(ISwitchE e)

      Specified by:
        `isRational` in interface `ICurveI`

    - #### isRational

          public IBool isRational(ISwitchR r)

      Specified by:
        `isRational` in interface `ICurveI`

    - #### deg

          public int deg()

      Specified by:
        `deg` in interface `ICurveI`

    - #### deg

          public int deg(ISwitchE e)

      Specified by:
        `deg` in interface `ICurveI`

    - #### deg

          public IInteger deg(ISwitchR r)

      Specified by:
        `deg` in interface `ICurveI`

    - #### num

          public int num()

      Description copied from interface: `ICurveI`
      change degree. this operation is costly because it needs to rebuild the whole knots and basisFunction
      Specified by:
        `num` in interface `ICurveI`

    - #### num

          public int num(ISwitchE e)

      Specified by:
        `num` in interface `ICurveI`

    - #### num

          public IInteger num(ISwitchR r)

      Specified by:
        `num` in interface `ICurveI`

    - #### cpNum

          public int cpNum()

      Specified by:
        `cpNum` in interface `ICurveI`

    - #### cpNum

          public int cpNum(ISwitchE e)

      Specified by:
        `cpNum` in interface `ICurveI`

    - #### cpNum

          public IInteger cpNum(ISwitchR r)

      Specified by:
        `cpNum` in interface `ICurveI`

    - #### epNum

          public int epNum()

      Specified by:
        `epNum` in interface `ICurveI`

    - #### epNum

          public int epNum(ISwitchE e)

      Specified by:
        `epNum` in interface `ICurveI`

    - #### epNum

          public IInteger epNum(ISwitchR r)

      Specified by:
        `epNum` in interface `ICurveI`

    - #### len

          public double len()

      Specified by:
        `len` in interface `ICurveI`

    - #### len

          public double len(ISwitchE e)

      Specified by:
        `len` in interface `ICurveI`

    - #### len

          public IDouble len(ISwitchR r)

      Specified by:
        `len` in interface `ICurveI`

    - #### u

          public double u(int epIdx,
                 double epFraction)

      Specified by:
        `u` in interface `ICurveI`

    - #### u

          public IDouble u(IInteger epIdx,
                  IDouble epFraction)

      Specified by:
        `u` in interface `ICurveI`

    - #### ustart

          public double ustart()

      Specified by:
        `ustart` in interface `ICurveI`

    - #### uend

          public double uend()

      Specified by:
        `uend` in interface `ICurveI`

    - #### ustart

          public double ustart(ISwitchE e)

      Specified by:
        `ustart` in interface `ICurveI`

    - #### uend

          public double uend(ISwitchE e)

      Specified by:
        `uend` in interface `ICurveI`

    - #### ustart

          public IDouble ustart(ISwitchR r)

      Specified by:
        `ustart` in interface `ICurveI`

    - #### uend

          public IDouble uend(ISwitchR r)

      Specified by:
        `uend` in interface `ICurveI`

    - #### isClosed

          public boolean isClosed()

      Specified by:
        `isClosed` in interface `ICurveI`

    - #### isClosed

          public boolean isClosed(ISwitchE e)

      Specified by:
        `isClosed` in interface `ICurveI`

    - #### isClosed

          public IBool isClosed(ISwitchR r)

      Specified by:
        `isClosed` in interface `ICurveI`

    - #### rev

          public ICurve rev()

      reverse self curve ; not creating a new object
      Specified by:
        `rev` in interface `ICurveI`

    - #### revU

          public ICurve revU()

      Description copied from interface: `ICurveI`
      alias of rev()
      Specified by:
        `revU` in interface `ICurveI`

    - #### flipU

          public ICurve flipU()

      Description copied from interface: `ICurveI`
      alias of rev()
      Specified by:
        `flipU` in interface `ICurveI`

    - #### isInside2d

          public boolean isInside2d(IVecI pt,
                           IVecI projectionDir)

      check if the input point is inside a closed curve. if not closed, it supposes closed by connecting the start and end point

    - #### isInside2d

          public boolean isInside2d(IVecI pt)

      check if the input point is inside a closed curve. if not closed, it supposes closed by connecting the start and end point

    - #### intersectPlane

          public IVec[] intersectPlane(IVecI planeDir,
                              IVecI planePt,
                              int segmentResolution)

      intersection of curve and plane.
      Parameters:
        `segmentResolution` - segmentation resolution per EP count in degree >= 1 curve.

    - #### intersectPlane

          public IVec[] intersectPlane(IVecI planeDir,
                              IVecI planePt)

      intersection of curve

    - #### add

          public ICurve add(double x,
                   double y,
                   double z)

      transformation methods; API of ITransformable interface
      Specified by:
        `add` in interface `ICurveI`
      Specified by:
        `add` in interface `ITransformable`
      Specified by:
        `add` in class `IGeometry`

    - #### add

          public ICurve add(IDoubleI x,
                   IDoubleI y,
                   IDoubleI z)

      Specified by:
        `add` in interface `ICurveI`
      Specified by:
        `add` in interface `ITransformable`
      Specified by:
        `add` in class `IGeometry`

    - #### add

          public ICurve add(IVecI v)

      Specified by:
        `add` in interface `ICurveI`
      Specified by:
        `add` in interface `ITransformable`
      Specified by:
        `add` in class `IGeometry`

    - #### sub

          public ICurve sub(double x,
                   double y,
                   double z)

      Specified by:
        `sub` in interface `ICurveI`
      Specified by:
        `sub` in interface `ITransformable`
      Specified by:
        `sub` in class `IGeometry`

    - #### sub

          public ICurve sub(IDoubleI x,
                   IDoubleI y,
                   IDoubleI z)

      Specified by:
        `sub` in interface `ICurveI`
      Specified by:
        `sub` in interface `ITransformable`
      Specified by:
        `sub` in class `IGeometry`

    - #### sub

          public ICurve sub(IVecI v)

      Specified by:
        `sub` in interface `ICurveI`
      Specified by:
        `sub` in interface `ITransformable`
      Specified by:
        `sub` in class `IGeometry`

    - #### mul

          public ICurve mul(IDoubleI v)

      Specified by:
        `mul` in interface `ICurveI`
      Specified by:
        `mul` in interface `ITransformable`
      Specified by:
        `mul` in class `IGeometry`

    - #### mul

          public ICurve mul(double v)

      Specified by:
        `mul` in interface `ICurveI`
      Specified by:
        `mul` in interface `ITransformable`
      Specified by:
        `mul` in class `IGeometry`

    - #### div

          public ICurve div(IDoubleI v)

      Specified by:
        `div` in interface `ICurveI`
      Specified by:
        `div` in interface `ITransformable`
      Specified by:
        `div` in class `IGeometry`

    - #### div

          public ICurve div(double v)

      Specified by:
        `div` in interface `ICurveI`
      Specified by:
        `div` in interface `ITransformable`
      Specified by:
        `div` in class `IGeometry`

    - #### neg

          public ICurve neg()

      Specified by:
        `neg` in interface `ICurveI`
      Specified by:
        `neg` in interface `ITransformable`
      Specified by:
        `neg` in class `IGeometry`

    - #### flip

          public ICurve flip()

      Description copied from class: `IGeometry`
      alias of neg
      Specified by:
        `flip` in interface `ICurveI`
      Specified by:
        `flip` in interface `ITransformable`
      Specified by:
        `flip` in class `IGeometry`

    - #### add

          public ICurve add(IVecI v,
                   double f)

      scale add
      Specified by:
        `add` in interface `ICurveI`
      Specified by:
        `add` in interface `ITransformable`
      Specified by:
        `add` in class `IGeometry`

    - #### add

          public ICurve add(IVecI v,
                   IDoubleI f)

      Description copied from class: `IGeometry`
      scale add
      Specified by:
        `add` in interface `ICurveI`
      Specified by:
        `add` in interface `ITransformable`
      Specified by:
        `add` in class `IGeometry`

    - #### add

          public ICurve add(double f,
                   IVecI v)

      scale add alias
      Specified by:
        `add` in interface `ITransformable`
      Specified by:
        `add` in class `IGeometry`

    - #### add

          public ICurve add(IDoubleI f,
                   IVecI v)

      Description copied from class: `IGeometry`
      scale add alias
      Specified by:
        `add` in interface `ITransformable`
      Specified by:
        `add` in class `IGeometry`

    - #### rot

          public ICurve rot(IDoubleI angle)

      Description copied from class: `IGeometry`
      rotation around z-axis and origin
      Specified by:
        `rot` in interface `ITransformable`
      Specified by:
        `rot` in class `IGeometry`

    - #### rot

          public ICurve rot(double angle)

      Specified by:
        `rot` in interface `ITransformable`
      Specified by:
        `rot` in class `IGeometry`

    - #### rot

          public ICurve rot(IVecI axis,
                   IDoubleI angle)

      Description copied from class: `IGeometry`
      rotation around axis vector
      Specified by:
        `rot` in interface `ICurveI`
      Specified by:
        `rot` in interface `ITransformable`
      Specified by:
        `rot` in class `IGeometry`

    - #### rot

          public ICurve rot(IVecI axis,
                   double angle)

      Specified by:
        `rot` in interface `ICurveI`
      Specified by:
        `rot` in interface `ITransformable`
      Specified by:
        `rot` in class `IGeometry`

    - #### rot

          public ICurve rot(IVecI center,
                   IVecI axis,
                   IDoubleI angle)

      Description copied from class: `IGeometry`
      rotation around axis vector and center
      Specified by:
        `rot` in interface `ICurveI`
      Specified by:
        `rot` in interface `ITransformable`
      Specified by:
        `rot` in class `IGeometry`

    - #### rot

          public ICurve rot(IVecI center,
                   IVecI axis,
                   double angle)

      Specified by:
        `rot` in interface `ICurveI`
      Specified by:
        `rot` in interface `ITransformable`
      Specified by:
        `rot` in class `IGeometry`

    - #### rot

          public ICurve rot(IVecI axis,
                   IVecI destDir)

      rotate to destination direction vector
      Specified by:
        `rot` in interface `ICurveI`
      Specified by:
        `rot` in interface `ITransformable`
      Specified by:
        `rot` in class `IGeometry`

    - #### rot

          public ICurve rot(IVecI center,
                   IVecI axis,
                   IVecI destPt)

      rotate to destination point location
      Specified by:
        `rot` in interface `ICurveI`
      Specified by:
        `rot` in interface `ITransformable`
      Specified by:
        `rot` in class `IGeometry`

    - #### rot2

          public ICurve rot2(IDoubleI angle)

      Description copied from class: `IGeometry`
      rotation on xy-plane around origin; same with rot(IDoubleI)
      Specified by:
        `rot2` in interface `ITransformable`
      Specified by:
        `rot2` in class `IGeometry`

    - #### rot2

          public ICurve rot2(double angle)

      Description copied from class: `IGeometry`
      rotation on xy-plane around origin; same with rot(double)
      Specified by:
        `rot2` in interface `ITransformable`
      Specified by:
        `rot2` in class `IGeometry`

    - #### rot2

          public ICurve rot2(IVecI center,
                    IDoubleI angle)

      Description copied from class: `IGeometry`
      rotation on xy-plane around center
      Specified by:
        `rot2` in interface `ITransformable`
      Specified by:
        `rot2` in class `IGeometry`

    - #### rot2

          public ICurve rot2(IVecI center,
                    double angle)

      Specified by:
        `rot2` in interface `ITransformable`
      Specified by:
        `rot2` in class `IGeometry`

    - #### rot2

          public ICurve rot2(IVecI destDir)

      rotation on xy-plane to destination direction vector
      Specified by:
        `rot2` in interface `ITransformable`
      Specified by:
        `rot2` in class `IGeometry`

    - #### rot2

          public ICurve rot2(IVecI center,
                    IVecI destPt)

      rotation on xy-plane to destination point location
      Specified by:
        `rot2` in interface `ITransformable`
      Specified by:
        `rot2` in class `IGeometry`

    - #### scale

          public ICurve scale(IDoubleI f)

      alias of mul
      Specified by:
        `scale` in interface `ICurveI`
      Specified by:
        `scale` in interface `ITransformable`
      Specified by:
        `scale` in class `IGeometry`

    - #### scale

          public ICurve scale(double f)

      Specified by:
        `scale` in interface `ICurveI`
      Specified by:
        `scale` in interface `ITransformable`
      Specified by:
        `scale` in class `IGeometry`

    - #### scale

          public ICurve scale(IVecI center,
                     IDoubleI f)

      Specified by:
        `scale` in interface `ICurveI`
      Specified by:
        `scale` in interface `ITransformable`
      Specified by:
        `scale` in class `IGeometry`

    - #### scale

          public ICurve scale(IVecI center,
                     double f)

      Specified by:
        `scale` in interface `ICurveI`
      Specified by:
        `scale` in interface `ITransformable`
      Specified by:
        `scale` in class `IGeometry`

    - #### scale1d

          public ICurve scale1d(IVecI axis,
                       double f)

      scale only in 1 direction
      Specified by:
        `scale1d` in interface `ICurveI`
      Specified by:
        `scale1d` in interface `ITransformable`
      Specified by:
        `scale1d` in class `IGeometry`

    - #### scale1d

          public ICurve scale1d(IVecI axis,
                       IDoubleI f)

      Specified by:
        `scale1d` in interface `ICurveI`
      Specified by:
        `scale1d` in interface `ITransformable`
      Specified by:
        `scale1d` in class `IGeometry`

    - #### scale1d

          public ICurve scale1d(IVecI center,
                       IVecI axis,
                       double f)

      Specified by:
        `scale1d` in interface `ICurveI`
      Specified by:
        `scale1d` in interface `ITransformable`
      Specified by:
        `scale1d` in class `IGeometry`

    - #### scale1d

          public ICurve scale1d(IVecI center,
                       IVecI axis,
                       IDoubleI f)

      Specified by:
        `scale1d` in interface `ICurveI`
      Specified by:
        `scale1d` in interface `ITransformable`
      Specified by:
        `scale1d` in class `IGeometry`

    - #### ref

          public ICurve ref(IVecI planeDir)

      reflect(mirror) 3 dimensionally to the other side of the plane
      Specified by:
        `ref` in interface `ICurveI`
      Specified by:
        `ref` in interface `ITransformable`
      Specified by:
        `ref` in class `IGeometry`

    - #### ref

          public ICurve ref(IVecI center,
                   IVecI planeDir)

      Specified by:
        `ref` in interface `ICurveI`
      Specified by:
        `ref` in interface `ITransformable`
      Specified by:
        `ref` in class `IGeometry`

    - #### mirror

          public ICurve mirror(IVecI planeDir)

      mirror is alias of ref
      Specified by:
        `mirror` in interface `ICurveI`
      Specified by:
        `mirror` in interface `ITransformable`
      Specified by:
        `mirror` in class `IGeometry`

    - #### mirror

          public ICurve mirror(IVecI center,
                      IVecI planeDir)

      Specified by:
        `mirror` in interface `ICurveI`
      Specified by:
        `mirror` in interface `ITransformable`
      Specified by:
        `mirror` in class `IGeometry`

    - #### shear

          public ICurve shear(double sxy,
                     double syx,
                     double syz,
                     double szy,
                     double szx,
                     double sxz)

      shear operation
      Specified by:
        `shear` in interface `ICurveI`
      Specified by:
        `shear` in interface `ITransformable`
      Specified by:
        `shear` in class `IGeometry`

    - #### shear

          public ICurve shear(IDoubleI sxy,
                     IDoubleI syx,
                     IDoubleI syz,
                     IDoubleI szy,
                     IDoubleI szx,
                     IDoubleI sxz)

      Specified by:
        `shear` in interface `ICurveI`
      Specified by:
        `shear` in interface `ITransformable`
      Specified by:
        `shear` in class `IGeometry`

    - #### shear

          public ICurve shear(IVecI center,
                     double sxy,
                     double syx,
                     double syz,
                     double szy,
                     double szx,
                     double sxz)

      Specified by:
        `shear` in interface `ICurveI`
      Specified by:
        `shear` in interface `ITransformable`
      Specified by:
        `shear` in class `IGeometry`

    - #### shear

          public ICurve shear(IVecI center,
                     IDoubleI sxy,
                     IDoubleI syx,
                     IDoubleI syz,
                     IDoubleI szy,
                     IDoubleI szx,
                     IDoubleI sxz)

      Specified by:
        `shear` in interface `ICurveI`
      Specified by:
        `shear` in interface `ITransformable`
      Specified by:
        `shear` in class `IGeometry`

    - #### shearXY

          public ICurve shearXY(double sxy,
                       double syx)

      Specified by:
        `shearXY` in interface `ICurveI`
      Specified by:
        `shearXY` in interface `ITransformable`
      Specified by:
        `shearXY` in class `IGeometry`

    - #### shearXY

          public ICurve shearXY(IDoubleI sxy,
                       IDoubleI syx)

      Specified by:
        `shearXY` in interface `ICurveI`
      Specified by:
        `shearXY` in interface `ITransformable`
      Specified by:
        `shearXY` in class `IGeometry`

    - #### shearXY

          public ICurve shearXY(IVecI center,
                       double sxy,
                       double syx)

      Specified by:
        `shearXY` in interface `ICurveI`
      Specified by:
        `shearXY` in interface `ITransformable`
      Specified by:
        `shearXY` in class `IGeometry`

    - #### shearXY

          public ICurve shearXY(IVecI center,
                       IDoubleI sxy,
                       IDoubleI syx)

      Specified by:
        `shearXY` in interface `ICurveI`
      Specified by:
        `shearXY` in interface `ITransformable`
      Specified by:
        `shearXY` in class `IGeometry`

    - #### shearYZ

          public ICurve shearYZ(double syz,
                       double szy)

      Specified by:
        `shearYZ` in interface `ICurveI`
      Specified by:
        `shearYZ` in interface `ITransformable`
      Specified by:
        `shearYZ` in class `IGeometry`

    - #### shearYZ

          public ICurve shearYZ(IDoubleI syz,
                       IDoubleI szy)

      Specified by:
        `shearYZ` in interface `ICurveI`
      Specified by:
        `shearYZ` in interface `ITransformable`
      Specified by:
        `shearYZ` in class `IGeometry`

    - #### shearYZ

          public ICurve shearYZ(IVecI center,
                       double syz,
                       double szy)

      Specified by:
        `shearYZ` in interface `ICurveI`
      Specified by:
        `shearYZ` in interface `ITransformable`
      Specified by:
        `shearYZ` in class `IGeometry`

    - #### shearYZ

          public ICurve shearYZ(IVecI center,
                       IDoubleI syz,
                       IDoubleI szy)

      Specified by:
        `shearYZ` in interface `ICurveI`
      Specified by:
        `shearYZ` in interface `ITransformable`
      Specified by:
        `shearYZ` in class `IGeometry`

    - #### shearZX

          public ICurve shearZX(double szx,
                       double sxz)

      Specified by:
        `shearZX` in interface `ICurveI`
      Specified by:
        `shearZX` in interface `ITransformable`
      Specified by:
        `shearZX` in class `IGeometry`

    - #### shearZX

          public ICurve shearZX(IDoubleI szx,
                       IDoubleI sxz)

      Specified by:
        `shearZX` in interface `ICurveI`
      Specified by:
        `shearZX` in interface `ITransformable`
      Specified by:
        `shearZX` in class `IGeometry`

    - #### shearZX

          public ICurve shearZX(IVecI center,
                       double szx,
                       double sxz)

      Specified by:
        `shearZX` in interface `ICurveI`
      Specified by:
        `shearZX` in interface `ITransformable`
      Specified by:
        `shearZX` in class `IGeometry`

    - #### shearZX

          public ICurve shearZX(IVecI center,
                       IDoubleI szx,
                       IDoubleI sxz)

      Specified by:
        `shearZX` in interface `ICurveI`
      Specified by:
        `shearZX` in interface `ITransformable`
      Specified by:
        `shearZX` in class `IGeometry`

    - #### translate

          public ICurve translate(double x,
                         double y,
                         double z)

      translate is alias of add()
      Specified by:
        `translate` in interface `ICurveI`
      Specified by:
        `translate` in interface `ITransformable`
      Specified by:
        `translate` in class `IGeometry`

    - #### translate

          public ICurve translate(IDoubleI x,
                         IDoubleI y,
                         IDoubleI z)

      Specified by:
        `translate` in interface `ICurveI`
      Specified by:
        `translate` in interface `ITransformable`
      Specified by:
        `translate` in class `IGeometry`

    - #### translate

          public ICurve translate(IVecI v)

      Specified by:
        `translate` in interface `ICurveI`
      Specified by:
        `translate` in interface `ITransformable`
      Specified by:
        `translate` in class `IGeometry`

    - #### mv

          public ICurve mv(double x,
                  double y,
                  double z)

      mv() is alias of add()
      Specified by:
        `mv` in interface `ICurveI`
      Specified by:
        `mv` in interface `ITransformable`
      Specified by:
        `mv` in class `IGeometry`

    - #### mv

          public ICurve mv(IDoubleI x,
                  IDoubleI y,
                  IDoubleI z)

      Specified by:
        `mv` in interface `ICurveI`
      Specified by:
        `mv` in interface `ITransformable`
      Specified by:
        `mv` in class `IGeometry`

    - #### mv

          public ICurve mv(IVecI v)

      Specified by:
        `mv` in interface `ICurveI`
      Specified by:
        `mv` in interface `ITransformable`
      Specified by:
        `mv` in class `IGeometry`

    - #### cp

          public ICurve cp()

      cp() is alias of dup()
      Specified by:
        `cp` in interface `ICurveI`
      Specified by:
        `cp` in interface `ITransformable`
      Overrides:
        `cp` in class `IGeometry`

    - #### cp

          public ICurve cp(double x,
                  double y,
                  double z)

      cp() is alias of dup().add()
      Specified by:
        `cp` in interface `ICurveI`
      Specified by:
        `cp` in interface `ITransformable`
      Specified by:
        `cp` in class `IGeometry`

    - #### cp

          public ICurve cp(IDoubleI x,
                  IDoubleI y,
                  IDoubleI z)

      cp() is alias of dup().add()
      Specified by:
        `cp` in interface `ICurveI`
      Specified by:
        `cp` in interface `ITransformable`
      Specified by:
        `cp` in class `IGeometry`

    - #### cp

          public ICurve cp(IVecI v)

      cp() is alias of dup().add()
      Specified by:
        `cp` in interface `ICurveI`
      Specified by:
        `cp` in interface `ITransformable`
      Specified by:
        `cp` in class `IGeometry`

    - #### transform

          public ICurve transform(IMatrix3I mat)

      Specified by:
        `transform` in interface `ICurveI`
      Specified by:
        `transform` in interface `ITransformable`
      Specified by:
        `transform` in class `IGeometry`

    - #### transform

          public ICurve transform(IMatrix4I mat)

      Specified by:
        `transform` in interface `ICurveI`
      Specified by:
        `transform` in interface `ITransformable`
      Specified by:
        `transform` in class `IGeometry`

    - #### transform

          public ICurve transform(IVecI xvec,
                         IVecI yvec,
                         IVecI zvec)

      Specified by:
        `transform` in interface `ICurveI`
      Specified by:
        `transform` in interface `ITransformable`
      Specified by:
        `transform` in class `IGeometry`

    - #### transform

          public ICurve transform(IVecI xvec,
                         IVecI yvec,
                         IVecI zvec,
                         IVecI translate)

      Specified by:
        `transform` in interface `ICurveI`
      Specified by:
        `transform` in interface `ITransformable`
      Specified by:
        `transform` in class `IGeometry`

    - #### name

          public ICurve name(java.lang.String nm)

      IObject methods
      Overrides:
        `name` in class `IObject`

    - #### layer

          public ICurve layer(ILayer l)

      Description copied from class: `IGeometry`
      Set layer by ILayer object
      Overrides:
        `layer` in class `IGeometry`

    - #### layer

          public ICurve layer(java.lang.String l)

      Description copied from class: `IGeometry`
      Set layer by layer name. If the layer specified by the name is not existing in the server, a new layer is automatically created in the server
      Overrides:
        `layer` in class `IGeometry`

    - #### attr

          public ICurve attr(IAttribute at)

      Description copied from class: `IObject`
      set attributes
      Overrides:
        `attr` in class `IGeometry`

    - #### hide

          public ICurve hide()

      Overrides:
        `hide` in class `IGeometry`

    - #### show

          public ICurve show()

      Overrides:
        `show` in class `IGeometry`

    - #### clr

          public ICurve clr(IColor c)

      Description copied from class: `IObject`
      to set an object color
      Overrides:
        `clr` in class `IGeometry`

    - #### clr

          public ICurve clr(IColor c,
                   int alpha)

      Description copied from class: `IObject`
      to set color, with alpha value overwritten
      Overrides:
        `clr` in class `IGeometry`

    - #### clr

          public ICurve clr(IColor c,
                   float alpha)

      Description copied from class: `IObject`
      to set color, with alpha value overwritten
      Overrides:
        `clr` in class `IGeometry`

    - #### clr

          public ICurve clr(IColor c,
                   double alpha)

      Description copied from class: `IObject`
      to set color, with alpha value overwritten
      Overrides:
        `clr` in class `IGeometry`

    - #### clr

          public ICurve clr(IObject o)

      Description copied from class: `IObject`
      to set the same color with the object
      Overrides:
        `clr` in class `IGeometry`

    - #### clr

          public ICurve clr(java.awt.Color c)

      Overrides:
        `clr` in class `IGeometry`

    - #### clr

          public ICurve clr(java.awt.Color c,
                   int alpha)

      Overrides:
        `clr` in class `IGeometry`

    - #### clr

          public ICurve clr(java.awt.Color c,
                   float alpha)

      Overrides:
        `clr` in class `IGeometry`

    - #### clr

          public ICurve clr(java.awt.Color c,
                   double alpha)

      Overrides:
        `clr` in class `IGeometry`

    - #### clr

          public ICurve clr(int gray)

      Overrides:
        `clr` in class `IGeometry`

    - #### clr

          public ICurve clr(float fgray)

      Overrides:
        `clr` in class `IGeometry`

    - #### clr

          public ICurve clr(double dgray)

      Overrides:
        `clr` in class `IGeometry`

    - #### clr

          public ICurve clr(int gray,
                   int alpha)

      Overrides:
        `clr` in class `IGeometry`

    - #### clr

          public ICurve clr(float fgray,
                   float falpha)

      Overrides:
        `clr` in class `IGeometry`

    - #### clr

          public ICurve clr(double dgray,
                   double dalpha)

      Overrides:
        `clr` in class `IGeometry`

    - #### clr

          public ICurve clr(int r,
                   int g,
                   int b)

      Overrides:
        `clr` in class `IGeometry`

    - #### clr

          public ICurve clr(float fr,
                   float fg,
                   float fb)

      Overrides:
        `clr` in class `IGeometry`

    - #### clr

          public ICurve clr(double dr,
                   double dg,
                   double db)

      Overrides:
        `clr` in class `IGeometry`

    - #### clr

          public ICurve clr(int r,
                   int g,
                   int b,
                   int a)

      Overrides:
        `clr` in class `IGeometry`

    - #### clr

          public ICurve clr(float fr,
                   float fg,
                   float fb,
                   float fa)

      Overrides:
        `clr` in class `IGeometry`

    - #### clr

          public ICurve clr(double dr,
                   double dg,
                   double db,
                   double da)

      Overrides:
        `clr` in class `IGeometry`

    - #### hsb

          public ICurve hsb(float h,
                   float s,
                   float b,
                   float a)

      Overrides:
        `hsb` in class `IGeometry`

    - #### hsb

          public ICurve hsb(double h,
                   double s,
                   double b,
                   double a)

      Overrides:
        `hsb` in class `IGeometry`

    - #### hsb

          public ICurve hsb(float h,
                   float s,
                   float b)

      Overrides:
        `hsb` in class `IGeometry`

    - #### hsb

          public ICurve hsb(double h,
                   double s,
                   double b)

      Overrides:
        `hsb` in class `IGeometry`

    - #### setColor

          public ICurve setColor(IColor c)

      Overrides:
        `setColor` in class `IObject`

    - #### setColor

          public ICurve setColor(IColor c,
                        int alpha)

      Overrides:
        `setColor` in class `IObject`

    - #### setColor

          public ICurve setColor(IColor c,
                        float alpha)

      Overrides:
        `setColor` in class `IObject`

    - #### setColor

          public ICurve setColor(IColor c,
                        double alpha)

      Overrides:
        `setColor` in class `IObject`

    - #### setColor

          public ICurve setColor(java.awt.Color c)

      Overrides:
        `setColor` in class `IGeometry`

    - #### setColor

          public ICurve setColor(java.awt.Color c,
                        int alpha)

      Overrides:
        `setColor` in class `IGeometry`

    - #### setColor

          public ICurve setColor(java.awt.Color c,
                        float alpha)

      Overrides:
        `setColor` in class `IObject`

    - #### setColor

          public ICurve setColor(java.awt.Color c,
                        double alpha)

      Overrides:
        `setColor` in class `IObject`

    - #### setColor

          public ICurve setColor(int gray)

      Overrides:
        `setColor` in class `IGeometry`

    - #### setColor

          public ICurve setColor(float fgray)

      Overrides:
        `setColor` in class `IGeometry`

    - #### setColor

          public ICurve setColor(double dgray)

      Overrides:
        `setColor` in class `IGeometry`

    - #### setColor

          public ICurve setColor(int gray,
                        int alpha)

      Overrides:
        `setColor` in class `IGeometry`

    - #### setColor

          public ICurve setColor(float fgray,
                        float falpha)

      Overrides:
        `setColor` in class `IGeometry`

    - #### setColor

          public ICurve setColor(double dgray,
                        double dalpha)

      Overrides:
        `setColor` in class `IGeometry`

    - #### setColor

          public ICurve setColor(int r,
                        int g,
                        int b)

      Overrides:
        `setColor` in class `IGeometry`

    - #### setColor

          public ICurve setColor(float fr,
                        float fg,
                        float fb)

      Overrides:
        `setColor` in class `IGeometry`

    - #### setColor

          public ICurve setColor(double dr,
                        double dg,
                        double db)

      Overrides:
        `setColor` in class `IGeometry`

    - #### setColor

          public ICurve setColor(int r,
                        int g,
                        int b,
                        int a)

      Overrides:
        `setColor` in class `IGeometry`

    - #### setColor

          public ICurve setColor(float fr,
                        float fg,
                        float fb,
                        float fa)

      Overrides:
        `setColor` in class `IGeometry`

    - #### setColor

          public ICurve setColor(double dr,
                        double dg,
                        double db,
                        double da)

      Overrides:
        `setColor` in class `IGeometry`

    - #### setHSBColor

          public ICurve setHSBColor(float h,
                           float s,
                           float b,
                           float a)

      Overrides:
        `setHSBColor` in class `IGeometry`

    - #### setHSBColor

          public ICurve setHSBColor(double h,
                           double s,
                           double b,
                           double a)

      Overrides:
        `setHSBColor` in class `IGeometry`

    - #### setHSBColor

          public ICurve setHSBColor(float h,
                           float s,
                           float b)

      Overrides:
        `setHSBColor` in class `IGeometry`

    - #### setHSBColor

          public ICurve setHSBColor(double h,
                           double s,
                           double b)

      Overrides:
        `setHSBColor` in class `IGeometry`

    - #### weight

          public ICurve weight(double w)

      Overrides:
        `weight` in class `IGeometry`

    - #### weight

          public ICurve weight(float w)

      Overrides:
        `weight` in class `IGeometry`