igeo

## Interface ITransformable

- All Known Subinterfaces:
    IBoidI, ICurveI, IMeshI, IParticleI, IParticleOnCurveI, IParticleOnSurfaceI, ISurfaceI, ITrimCurveI, IVec4I, IVecI, IVolumeI
  All Known Implementing Classes:
    IArc, IArcGeo, IBoid, IBoidGeo, IBoidTrajectory, IBox, IBrep, ICircle, ICircleGeo, ICollidableMesh, ICurve, ICurveGeo, ICurveR, ICylinder, IDataAgent, IGeometry, ILinkedDataAgent, ILinkedScalarAgent, ILinkedVec2Agent, ILinkedVecAgent, IMesh, IMeshGeo, IMeshR, IParticle, IParticleAgent, IParticleGeo, IParticleOnCurve, IParticleOnCurveAgent, IParticleOnCurveGeo, IParticleOnMeshGeo, IParticleOnPlane, IParticleOnPlaneGeo, IParticleOnSurface, IParticleOnSurfaceGeo, IParticleTrajectory, IPoint, IPointAgent, IPointR, IPolycurveGeo, ISphere, ISpringLine, IStickLine, IStraightenerCurve, IStringLine, ISurface, ISurfaceGeo, ISurfaceR, ITensionLine, ITensionLineOnCurve, IText, ITextGeo, ITrimCurve, IVec, IVec4, IVec4R, IVecR, IVectorObject, IVertex, IVolume, IVolumeGeo

      public interface ITransformable

  Abstract interface of transformable geometry.
  Author:
    Satoru Sugihara

- - ### Method Summary

    All Methods Instance Methods Abstract Methods
    Modifier and Type | Method and Description
    --- | ---
    `ITransformable` | `add(double x, double y, double z)`
    `ITransformable` | `add(double f, IVecI v)` scale add alias
    `ITransformable` | `add(IDoubleI x, IDoubleI y, IDoubleI z)`
    `ITransformable` | `add(IDoubleI f, IVecI v)` scale add alias
    `ITransformable` | `add(IVecI v)`
    `ITransformable` | `add(IVecI v, double f)` scale add
    `ITransformable` | `add(IVecI v, IDoubleI f)` scale add
    `ITransformable` | `cp()` cp() is alias of dup()
    `ITransformable` | `cp(double x, double y, double z)` cp() is alias of dup().add()
    `ITransformable` | `cp(IDoubleI x, IDoubleI y, IDoubleI z)`
    `ITransformable` | `cp(IVecI v)`
    `ITransformable` | `div(double v)`
    `ITransformable` | `div(IDoubleI v)`
    `ITransformable` | `dup()` duplicate the instance
    `ITransformable` | `flip()` alias of neg
    `ITransformable` | `mirror(IVecI planeDir)` mirror is alias of ref
    `ITransformable` | `mirror(IVecI center, IVecI planeDir)`
    `ITransformable` | `mul(double v)`
    `ITransformable` | `mul(IDoubleI v)`
    `ITransformable` | `mv(double x, double y, double z)` mv() is alias of add()
    `ITransformable` | `mv(IDoubleI x, IDoubleI y, IDoubleI z)`
    `ITransformable` | `mv(IVecI v)`
    `ITransformable` | `neg()`
    `ITransformable` | `ref(IVecI planeDir)` reflect(mirror) 3 dimensionally to the other side of the plane
    `ITransformable` | `ref(IVecI center, IVecI planeDir)`
    `ITransformable` | `rot(double angle)`
    `ITransformable` | `rot(IDoubleI angle)` rotation around z-axis and origin
    `ITransformable` | `rot(IVecI axis, double angle)`
    `ITransformable` | `rot(IVecI axis, IDoubleI angle)` rotation around axis vector
    `ITransformable` | `rot(IVecI axis, IVecI destDir)` rotate to destination direction vector
    `ITransformable` | `rot(IVecI center, IVecI axis, double angle)`
    `ITransformable` | `rot(IVecI center, IVecI axis, IDoubleI angle)` rotation around axis vector and center
    `ITransformable` | `rot(IVecI center, IVecI axis, IVecI destPt)` rotate to destination point location
    `ITransformable` | `rot2(double angle)` rotation on xy-plane around origin; same with rot(double)
    `ITransformable` | `rot2(IDoubleI angle)` rotation on xy-plane around origin; same with rot(IDoubleI)
    `ITransformable` | `rot2(IVecI destDir)` rotation on xy-plane to destination direction vector
    `ITransformable` | `rot2(IVecI center, double angle)`
    `ITransformable` | `rot2(IVecI center, IDoubleI angle)` rotation on xy-plane around center
    `ITransformable` | `rot2(IVecI center, IVecI destPt)` rotation on xy-plane to destination point location
    `ITransformable` | `scale(double f)`
    `ITransformable` | `scale(IDoubleI f)` alias of mul
    `ITransformable` | `scale(IVecI center, double f)`
    `ITransformable` | `scale(IVecI center, IDoubleI f)`
    `ITransformable` | `scale1d(IVecI axis, double f)` scale only in 1 direction
    `ITransformable` | `scale1d(IVecI axis, IDoubleI f)`
    `ITransformable` | `scale1d(IVecI center, IVecI axis, double f)`
    `ITransformable` | `scale1d(IVecI center, IVecI axis, IDoubleI f)`
    `ITransformable` | `shear(double sxy, double syx, double syz, double szy, double szx, double sxz)` shear operation
    `ITransformable` | `shear(IDoubleI sxy, IDoubleI syx, IDoubleI syz, IDoubleI szy, IDoubleI szx, IDoubleI sxz)`
    `ITransformable` | `shear(IVecI center, double sxy, double syx, double syz, double szy, double szx, double sxz)`
    `ITransformable` | `shear(IVecI center, IDoubleI sxy, IDoubleI syx, IDoubleI syz, IDoubleI szy, IDoubleI szx, IDoubleI sxz)`
    `ITransformable` | `shearXY(double sxy, double syx)`
    `ITransformable` | `shearXY(IDoubleI sxy, IDoubleI syx)`
    `ITransformable` | `shearXY(IVecI center, double sxy, double syx)`
    `ITransformable` | `shearXY(IVecI center, IDoubleI sxy, IDoubleI syx)`
    `ITransformable` | `shearYZ(double syz, double szy)`
    `ITransformable` | `shearYZ(IDoubleI syz, IDoubleI szy)`
    `ITransformable` | `shearYZ(IVecI center, double syz, double szy)`
    `ITransformable` | `shearYZ(IVecI center, IDoubleI syz, IDoubleI szy)`
    `ITransformable` | `shearZX(double szx, double sxz)`
    `ITransformable` | `shearZX(IDoubleI szx, IDoubleI sxz)`
    `ITransformable` | `shearZX(IVecI center, double szx, double sxz)`
    `ITransformable` | `shearZX(IVecI center, IDoubleI szx, IDoubleI sxz)`
    `ITransformable` | `sub(double x, double y, double z)`
    `ITransformable` | `sub(IDoubleI x, IDoubleI y, IDoubleI z)`
    `ITransformable` | `sub(IVecI v)`
    `ITransformable` | `transform(IMatrix3I mat)`
    `ITransformable` | `transform(IMatrix4I mat)`
    `ITransformable` | `transform(IVecI xvec, IVecI yvec, IVecI zvec)`
    `ITransformable` | `transform(IVecI xvec, IVecI yvec, IVecI zvec, IVecI translate)`
    `ITransformable` | `translate(double x, double y, double z)` translate() is alias of add()
    `ITransformable` | `translate(IDoubleI x, IDoubleI y, IDoubleI z)`
    `ITransformable` | `translate(IVecI v)`

- - ### Method Detail

    - #### add

          ITransformable add(double x,
                             double y,
                             double z)

    - #### add

          ITransformable add(IDoubleI x,
                             IDoubleI y,
                             IDoubleI z)

    - #### add

          ITransformable add(IVecI v)

    - #### sub

          ITransformable sub(double x,
                             double y,
                             double z)

    - #### sub

          ITransformable sub(IDoubleI x,
                             IDoubleI y,
                             IDoubleI z)

    - #### sub

          ITransformable sub(IVecI v)

    - #### mul

          ITransformable mul(IDoubleI v)

    - #### mul

          ITransformable mul(double v)

    - #### div

          ITransformable div(IDoubleI v)

    - #### div

          ITransformable div(double v)

    - #### neg

          ITransformable neg()

    - #### flip

          ITransformable flip()

      alias of neg

    - #### add

          ITransformable add(IVecI v,
                             double f)

      scale add

    - #### add

          ITransformable add(IVecI v,
                             IDoubleI f)

      scale add

    - #### add

          ITransformable add(double f,
                             IVecI v)

      scale add alias

    - #### add

          ITransformable add(IDoubleI f,
                             IVecI v)

      scale add alias

    - #### rot

          ITransformable rot(IDoubleI angle)

      rotation around z-axis and origin

    - #### rot

          ITransformable rot(double angle)

    - #### rot

          ITransformable rot(IVecI axis,
                             IDoubleI angle)

      rotation around axis vector

    - #### rot

          ITransformable rot(IVecI axis,
                             double angle)

    - #### rot

          ITransformable rot(IVecI center,
                             IVecI axis,
                             IDoubleI angle)

      rotation around axis vector and center

    - #### rot

          ITransformable rot(IVecI center,
                             IVecI axis,
                             double angle)

    - #### rot

          ITransformable rot(IVecI axis,
                             IVecI destDir)

      rotate to destination direction vector

    - #### rot

          ITransformable rot(IVecI center,
                             IVecI axis,
                             IVecI destPt)

      rotate to destination point location

    - #### rot2

          ITransformable rot2(IDoubleI angle)

      rotation on xy-plane around origin; same with rot(IDoubleI)

    - #### rot2

          ITransformable rot2(double angle)

      rotation on xy-plane around origin; same with rot(double)

    - #### rot2

          ITransformable rot2(IVecI center,
                              IDoubleI angle)

      rotation on xy-plane around center

    - #### rot2

          ITransformable rot2(IVecI center,
                              double angle)

    - #### rot2

          ITransformable rot2(IVecI destDir)

      rotation on xy-plane to destination direction vector

    - #### rot2

          ITransformable rot2(IVecI center,
                              IVecI destPt)

      rotation on xy-plane to destination point location

    - #### scale

          ITransformable scale(IDoubleI f)

      alias of mul

    - #### scale

          ITransformable scale(double f)

    - #### scale

          ITransformable scale(IVecI center,
                               IDoubleI f)

    - #### scale

          ITransformable scale(IVecI center,
                               double f)

    - #### scale1d

          ITransformable scale1d(IVecI axis,
                                 double f)

      scale only in 1 direction

    - #### scale1d

          ITransformable scale1d(IVecI axis,
                                 IDoubleI f)

    - #### scale1d

          ITransformable scale1d(IVecI center,
                                 IVecI axis,
                                 double f)

    - #### scale1d

          ITransformable scale1d(IVecI center,
                                 IVecI axis,
                                 IDoubleI f)

    - #### ref

          ITransformable ref(IVecI planeDir)

      reflect(mirror) 3 dimensionally to the other side of the plane

    - #### ref

          ITransformable ref(IVecI center,
                             IVecI planeDir)

    - #### mirror

          ITransformable mirror(IVecI planeDir)

      mirror is alias of ref

    - #### mirror

          ITransformable mirror(IVecI center,
                                IVecI planeDir)

    - #### shear

          ITransformable shear(double sxy,
                               double syx,
                               double syz,
                               double szy,
                               double szx,
                               double sxz)

      shear operation

    - #### shear

          ITransformable shear(IDoubleI sxy,
                               IDoubleI syx,
                               IDoubleI syz,
                               IDoubleI szy,
                               IDoubleI szx,
                               IDoubleI sxz)

    - #### shear

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

    - #### shear

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

    - #### shearXY

          ITransformable shearXY(double sxy,
                                 double syx)

    - #### shearXY

          ITransformable shearXY(IDoubleI sxy,
                                 IDoubleI syx)

    - #### shearXY

          ITransformable shearXY(IVecI center,
                                 double sxy,
                                 double syx)

    - #### shearXY

          ITransformable shearXY(IVecI center,
                                 IDoubleI sxy,
                                 IDoubleI syx)

    - #### shearYZ

          ITransformable shearYZ(double syz,
                                 double szy)

    - #### shearYZ

          ITransformable shearYZ(IDoubleI syz,
                                 IDoubleI szy)

    - #### shearYZ

          ITransformable shearYZ(IVecI center,
                                 double syz,
                                 double szy)

    - #### shearYZ

          ITransformable shearYZ(IVecI center,
                                 IDoubleI syz,
                                 IDoubleI szy)

    - #### shearZX

          ITransformable shearZX(double szx,
                                 double sxz)

    - #### shearZX

          ITransformable shearZX(IDoubleI szx,
                                 IDoubleI sxz)

    - #### shearZX

          ITransformable shearZX(IVecI center,
                                 double szx,
                                 double sxz)

    - #### shearZX

          ITransformable shearZX(IVecI center,
                                 IDoubleI szx,
                                 IDoubleI sxz)

    - #### mv

          ITransformable mv(double x,
                            double y,
                            double z)

      mv() is alias of add()

    - #### mv

          ITransformable mv(IDoubleI x,
                            IDoubleI y,
                            IDoubleI z)

    - #### mv

          ITransformable mv(IVecI v)

    - #### dup

          ITransformable dup()

      duplicate the instance

    - #### cp

          ITransformable cp()

      cp() is alias of dup()

    - #### cp

          ITransformable cp(double x,
                            double y,
                            double z)

      cp() is alias of dup().add()

    - #### cp

          ITransformable cp(IDoubleI x,
                            IDoubleI y,
                            IDoubleI z)

    - #### cp

          ITransformable cp(IVecI v)

    - #### translate

          ITransformable translate(double x,
                                   double y,
                                   double z)

      translate() is alias of add()

    - #### translate

          ITransformable translate(IDoubleI x,
                                   IDoubleI y,
                                   IDoubleI z)

    - #### translate

          ITransformable translate(IVecI v)

    - #### transform

          ITransformable transform(IMatrix3I mat)

    - #### transform

          ITransformable transform(IMatrix4I mat)

    - #### transform

          ITransformable transform(IVecI xvec,
                                   IVecI yvec,
                                   IVecI zvec)

    - #### transform

          ITransformable transform(IVecI xvec,
                                   IVecI yvec,
                                   IVecI zvec,
                                   IVecI translate)