igeo

## Class IParticleOnSurfaceGeo

- java.lang.Object
- - igeo.IDynamicsBase
  - - igeo.IParticleGeo
    - - igeo.IParticleOnSurfaceGeo

- All Implemented Interfaces:
    IArithmeticVal<IVecI,IDoubleI>, IDynamics, IParameter, IParticleI, IParticleOnSurfaceI, ISubobject, ITransformable, IVal, IVecI, IVecOp

      public class IParticleOnSurfaceGeo
      extends IParticleGeo
      implements IParticleOnSurfaceI

  Class of a particle which sits and moves on a surface.
  Author:
    Satoru Sugihara

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `ISurfaceI` | `surface`
    `boolean` | `ufixed`
    `IVec` | `utan`
    `IVec2` | `uvfrc`
    `IVec2` | `uvpos`
    `IVec2` | `uvvel`
    `boolean` | `vfixed`
    `IVec` | `vtan`

    - ### Fields inherited from class igeo.IParticleGeo

      `defaultFriction, fixed, frc, friction, mass, pos, skipUpdateOnce, vel`

    - ### Fields inherited from class igeo.IDynamicsBase

      `parent, targets`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `IParticleOnSurfaceGeo(IParticleOnSurfaceGeo p)`
    `IParticleOnSurfaceGeo(IParticleOnSurfaceGeo p, IObject parent)`
    `IParticleOnSurfaceGeo(IParticleOnSurfaceGeo p, IVec pos)`
    `IParticleOnSurfaceGeo(IParticleOnSurfaceGeo p, IVec pos, IObject parent)`
    `IParticleOnSurfaceGeo(ISurface srf)`
    `IParticleOnSurfaceGeo(ISurface srf, double u, double v)`
    `IParticleOnSurfaceGeo(ISurface srf, double u, double v, double uvel, double vvel)`
    `IParticleOnSurfaceGeo(ISurface srf, double u, double v, double uvel, double vvel, IVec pos)`
    `IParticleOnSurfaceGeo(ISurface srf, double u, double v, IVec pos)`
    `IParticleOnSurfaceGeo(ISurfaceI srf)`
    `IParticleOnSurfaceGeo(ISurfaceI srf, double u, double v)`
    `IParticleOnSurfaceGeo(ISurfaceI srf, double u, double v, double uvel, double vvel)`
    `IParticleOnSurfaceGeo(ISurfaceI srf, double u, double v, double uvel, double vvel, IObject parent)`
    `IParticleOnSurfaceGeo(ISurfaceI srf, double u, double v, double uvel, double vvel, IPoint pt)`
    `IParticleOnSurfaceGeo(ISurfaceI srf, double u, double v, double uvel, double vvel, IPointR pt)`
    `IParticleOnSurfaceGeo(ISurfaceI srf, double u, double v, double uvel, double vvel, IVec pos)`
    `IParticleOnSurfaceGeo(ISurfaceI srf, double u, double v, double uvel, double vvel, IVec pos, IObject parent)`
    `IParticleOnSurfaceGeo(ISurfaceI srf, double u, double v, IObject parent)`
    `IParticleOnSurfaceGeo(ISurfaceI srf, double u, double v, IPoint pt)`
    `IParticleOnSurfaceGeo(ISurfaceI srf, double u, double v, IPointR pt)`
    `IParticleOnSurfaceGeo(ISurfaceI srf, double u, double v, IVec pos)`
    `IParticleOnSurfaceGeo(ISurfaceI srf, double u, double v, IVec pos, IObject parent)`
    `IParticleOnSurfaceGeo(ISurfaceI srf, IObject parent)`
    `IParticleOnSurfaceGeo(ISurfaceI srf, IPoint pt)`
    `IParticleOnSurfaceGeo(ISurfaceI srf, IPointR pt)`
    `IParticleOnSurfaceGeo(ISurfaceI srf, IVec pos)`
    `IParticleOnSurfaceGeo(ISurfaceI srf, IVec pos, IObject parent)`
    `IParticleOnSurfaceGeo(ISurface srf, IVec pos)`

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `IParticleOnSurfaceGeo` | `add(double x, double y, double z)`
    `IParticleOnSurfaceGeo` | `add(double f, IVecI v)` scale add
    `IParticleOnSurfaceGeo` | `add(IDoubleI x, IDoubleI y, IDoubleI z)`
    `IParticleOnSurfaceGeo` | `add(IDoubleI f, IVecI v)` scale add
    `IParticleOnSurfaceGeo` | `add(IVecI v)`
    `IParticleOnSurfaceGeo` | `add(IVecI v, double f)` scale add
    `IParticleOnSurfaceGeo` | `add(IVecI v, IDoubleI f)` scale add
    `IParticleOnSurfaceGeo` | `addForce(IVecI f)` adding force (alias of push)
    `IParticleOnSurfaceGeo` | `addUVForce(double ufrc, double vfrc)`
    `IParticleOnSurfaceGeo` | `cp()` cp() is alias of dup()
    `IParticleOnSurfaceGeo` | `cp(double x, double y, double z)` cp() is alias of dup().add()
    `IParticleOnSurfaceGeo` | `cp(IDoubleI x, IDoubleI y, IDoubleI z)` cp() is alias of dup().add()
    `IParticleOnSurfaceGeo` | `cp(IVecI v)` cp() is alias of dup().add()
    `IParticleOnSurfaceGeo` | `decay(double d)`
    `IParticleOnSurfaceGeo` | `div(double v)`
    `IParticleOnSurfaceGeo` | `div(IDoubleI v)`
    `IParticleOnSurfaceGeo` | `dup()` duplicate the instance
    `IParticleOnSurfaceGeo` | `fix()` fix movement
    `IParticleOnSurfaceGeo` | `fixU()`
    `IParticleOnSurfaceGeo` | `fixV()`
    `IParticleOnSurfaceGeo` | `flip()` alias of neg()
    `IParticleOnSurfaceGeo` | `force(IVecI v)` set force
    `IParticleOnSurfaceGeo` | `frc(IVecI v)` set force
    `IParticleOnSurfaceGeo` | `fric(double friction)` set friction
    `IParticleOnSurfaceGeo` | `friction(double friction)` set friction
    `void` | `interact(java.util.ArrayList<IDynamics> dynamics)` behavior definition of interaction with other dynamic objects.
    `IParticleOnSurfaceGeo` | `mass(double mass)` set mass
    `IParticleOnSurfaceGeo` | `mirror(double planeX, double planeY, double planeZ)` reflect (mirror) 3 dimensionally to the other side of the plane
    `IParticleOnSurfaceGeo` | `mirror(double centerX, double centerY, double centerZ, double planeX, double planeY, double planeZ)` reflect (mirror) 3 dimensionally to the other side of the plane
    `IParticleOnSurfaceGeo` | `mirror(IVecI planeDir)` reflect (mirror) 3 dimensionally to the other side of the plane
    `IParticleOnSurfaceGeo` | `mirror(IVecI center, IVecI planeDir)` reflect (mirror) 3 dimensionally to the other side of the plane
    `IParticleOnSurfaceGeo` | `mul(double v)`
    `IParticleOnSurfaceGeo` | `mul(IDoubleI v)`
    `IParticleOnSurfaceGeo` | `mv(double x, double y, double z)` mv() is alias of add()
    `IParticleOnSurfaceGeo` | `mv(IDoubleI x, IDoubleI y, IDoubleI z)` mv() is alias of add()
    `IParticleOnSurfaceGeo` | `mv(IVecI v)` mv() is alias of add()
    `IParticleOnSurfaceGeo` | `neg()`
    `IParticleOnSurfaceGeo` | `pos(IVecI v)` set position
    `IParticleOnSurfaceGeo` | `position(IVecI v)` set position
    `void` | `postupdate()` this is changed again because force in update cannot be reflected (updated 2014/03/10)
    `void` | `preupdate()` update of velocity is done in preupdate (updated 2012/08/26)
    `IParticleOnSurfaceGeo` | `pull(IVecI f)` adding negative force
    `IParticleOnSurfaceGeo` | `push(IVecI f)` adding force
    `IParticleOnSurfaceGeo` | `ref(double planeX, double planeY, double planeZ)` reflect (mirror) 3 dimensionally to the other side of the plane
    `IParticleOnSurfaceGeo` | `ref(double centerX, double centerY, double centerZ, double planeX, double planeY, double planeZ)` reflect (mirror) 3 dimensionally to the other side of the plane
    `IParticleOnSurfaceGeo` | `ref(IVecI planeDir)` reflect (mirror) 3 dimensionally to the other side of the plane
    `IParticleOnSurfaceGeo` | `ref(IVecI center, IVecI planeDir)` reflect (mirror) 3 dimensionally to the other side of the plane
    `IParticleOnSurfaceGeo` | `reset()` setting force zero
    `IParticleOnSurfaceGeo` | `resetForce()` setting force zero (alias of reset())
    `IParticleOnSurfaceGeo` | `resetUVForce()`
    `IParticleOnSurfaceGeo` | `rev()` alias of neg()
    `IParticleOnSurfaceGeo` | `rot(double angle)` rotation on XY plane
    `IParticleOnSurfaceGeo` | `rot(double axisX, double axisY, double axisZ, double angle)` rotation around axis vector
    `IParticleOnSurfaceGeo` | `rot(double centerX, double centerY, double centerZ, double axisX, double axisY, double axisZ, double angle)` rotation around axis vector and center point
    `IParticleOnSurfaceGeo` | `rot(IDoubleI angle)` rotation on XY plane
    `IParticleOnSurfaceGeo` | `rot(IVecI axis, double angle)` rotation around axis vector
    `IParticleOnSurfaceGeo` | `rot(IVecI axis, IDoubleI angle)` rotation around axis vector
    `IParticleOnSurfaceGeo` | `rot(IVecI axis, IVecI destDir)` Rotate to destination direction vector.
    `IParticleOnSurfaceGeo` | `rot(IVecI center, IVecI axis, double angle)` rotation around axis vector and center point
    `IParticleOnSurfaceGeo` | `rot(IVecI center, IVecI axis, IDoubleI angle)` rotation around axis vector and center point
    `IParticleOnSurfaceGeo` | `rot(IVecI center, IVecI axis, IVecI destPt)` Rotate to destination point location.
    `IParticleOnSurfaceGeo` | `rot2(double angle)` rotation on xy-plane; alias of rot(double)
    `IParticleOnSurfaceGeo` | `rot2(double centerX, double centerY, double angle)` rotation on xy-plane
    `IParticleOnSurfaceGeo` | `rot2(IDoubleI angle)` rotation on xy-plane; alias of rot(IDoubleI)
    `IParticleOnSurfaceGeo` | `rot2(IVecI destDir)` rotation on xy-plane towards destDir
    `IParticleOnSurfaceGeo` | `rot2(IVecI center, double angle)` rotation on xy-plane
    `IParticleOnSurfaceGeo` | `rot2(IVecI center, IDoubleI angle)` rotation on xy-plane
    `IParticleOnSurfaceGeo` | `rot2(IVecI center, IVecI destPt)` rotation on xy-plane towards destPt
    `IParticleOnSurfaceGeo` | `scale(double f)` alias of mul
    `IParticleOnSurfaceGeo` | `scale(double centerX, double centerY, double centerZ, double f)` scale from a center
    `IParticleOnSurfaceGeo` | `scale(IDoubleI f)` alias of mul
    `IParticleOnSurfaceGeo` | `scale(IVecI center, double f)` scale from a center
    `IParticleOnSurfaceGeo` | `scale(IVecI center, IDoubleI f)` scale from a center
    `IParticleOnSurfaceGeo` | `scale1d(double axisX, double axisY, double axisZ, double f)` scale only in 1 direction
    `IParticleOnSurfaceGeo` | `scale1d(double centerX, double centerY, double centerZ, double axisX, double axisY, double axisZ, double f)` scale only in 1 direction from a center
    `IParticleOnSurfaceGeo` | `scale1d(IVecI axis, double f)` scale only in 1 direction
    `IParticleOnSurfaceGeo` | `scale1d(IVecI axis, IDoubleI f)` scale only in 1 direction
    `IParticleOnSurfaceGeo` | `scale1d(IVecI center, IVecI axis, double f)` scale only in 1 direction from a center
    `IParticleOnSurfaceGeo` | `scale1d(IVecI center, IVecI axis, IDoubleI f)` scale only in 1 direction from a center
    `IParticleOnSurfaceGeo` | `set(double x, double y, double z)`
    `IParticleOnSurfaceGeo` | `set(IDoubleI x, IDoubleI y, IDoubleI z)`
    `IParticleOnSurfaceGeo` | `set(IVecI v)`
    `IParticleOnSurfaceGeo` | `shear(double sxy, double syx, double syz, double szy, double szx, double sxz)` shear operation
    `IParticleOnSurfaceGeo` | `shear(IDoubleI sxy, IDoubleI syx, IDoubleI syz, IDoubleI szy, IDoubleI szx, IDoubleI sxz)` shear operation
    `IParticleOnSurfaceGeo` | `shear(IVecI center, double sxy, double syx, double syz, double szy, double szx, double sxz)` shear operation
    `IParticleOnSurfaceGeo` | `shear(IVecI center, IDoubleI sxy, IDoubleI syx, IDoubleI syz, IDoubleI szy, IDoubleI szx, IDoubleI sxz)` shear operation
    `IParticleOnSurfaceGeo` | `shearXY(double sxy, double syx)` shear operation on XY
    `IParticleOnSurfaceGeo` | `shearXY(IDoubleI sxy, IDoubleI syx)` shear operation on XY
    `IParticleOnSurfaceGeo` | `shearXY(IVecI center, double sxy, double syx)` shear operation on XY
    `IParticleOnSurfaceGeo` | `shearXY(IVecI center, IDoubleI sxy, IDoubleI syx)` shear operation on XY
    `IParticleOnSurfaceGeo` | `shearYZ(double syz, double szy)` shear operation on YZ
    `IParticleOnSurfaceGeo` | `shearYZ(IDoubleI syz, IDoubleI szy)` shear operation on YZ
    `IParticleOnSurfaceGeo` | `shearYZ(IVecI center, double syz, double szy)` shear operation on YZ
    `IParticleOnSurfaceGeo` | `shearYZ(IVecI center, IDoubleI syz, IDoubleI szy)` shear operation on YZ
    `IParticleOnSurfaceGeo` | `shearZX(double szx, double sxz)` shear operation on ZX
    `IParticleOnSurfaceGeo` | `shearZX(IDoubleI szx, IDoubleI sxz)` shear operation on ZX
    `IParticleOnSurfaceGeo` | `shearZX(IVecI center, double szx, double sxz)` shear operation on ZX
    `IParticleOnSurfaceGeo` | `shearZX(IVecI center, IDoubleI szx, IDoubleI sxz)` shear operation on ZX
    `IParticleOnSurfaceGeo` | `skipUpdateOnce(boolean f)` for other agent to control particle
    `IParticleOnSurfaceGeo` | `sub(double x, double y, double z)`
    `IParticleOnSurfaceGeo` | `sub(IDoubleI x, IDoubleI y, IDoubleI z)`
    `IParticleOnSurfaceGeo` | `sub(IVecI v)`
    `ISurfaceI` | `surface()`
    `IParticleOnSurfaceGeo` | `transform(IMatrix3I mat)` transform with a transformation matrix
    `IParticleOnSurfaceGeo` | `transform(IMatrix4I mat)` transform with a transformation matrix
    `IParticleOnSurfaceGeo` | `transform(IVecI xvec, IVecI yvec, IVecI zvec)` transform with a transformation vectors
    `IParticleOnSurfaceGeo` | `transform(IVecI xvec, IVecI yvec, IVecI zvec, IVecI translate)` transform with a transformation vectors
    `IParticleOnSurfaceGeo` | `translate(double x, double y, double z)` translate is alias of add()
    `IParticleOnSurfaceGeo` | `translate(IDoubleI x, IDoubleI y, IDoubleI z)` alias of add()
    `IParticleOnSurfaceGeo` | `translate(IVecI v)` alias of add()
    `boolean` | `uFixed()`
    `IParticleOnSurfaceGeo` | `unfix()` unfix movement
    `IParticleOnSurfaceGeo` | `unfixU()`
    `IParticleOnSurfaceGeo` | `unfixV()`
    `IParticleOnSurfaceGeo` | `unit()` unitize
    `void` | `update()` update of velocity is done in preupdate and update of position is done in update() (updated 2012/08/26)
    `IVec2` | `uv()`
    `IParticleOnSurfaceGeo` | `uv(double u, double v)`
    `IVec2` | `uvfrc()`
    `IParticleOnSurfaceGeo` | `uvfrc(double ufrc, double vfrc)`
    `IParticleOnSurfaceGeo` | `uvpull(double ufrc, double vfrc)`
    `IParticleOnSurfaceGeo` | `uvpush(double ufrc, double vfrc)`
    `IParticleOnSurfaceGeo` | `uvreset()`
    `IVec2` | `uvvel()`
    `IParticleOnSurfaceGeo` | `uvvel(double uvel, double vvel)`
    `IParticleOnSurfaceGeo` | `vel(IVecI v)` set velocity
    `IParticleOnSurfaceGeo` | `velocity(IVecI v)` set velocity
    `boolean` | `vFixed()`
    `IParticleOnSurfaceGeo` | `x(double vx)` implementation of IVecI
    `IParticleOnSurfaceGeo` | `x(IDoubleI vx)` setting x component
    `IParticleOnSurfaceGeo` | `x(IVec2I vx)` setting x component by x component of input vector
    `IParticleOnSurfaceGeo` | `x(IVecI vx)` setting x component by x component of input vector
    `IParticleOnSurfaceGeo` | `y(double vy)` setting y component
    `IParticleOnSurfaceGeo` | `y(IDoubleI vy)` setting y component
    `IParticleOnSurfaceGeo` | `y(IVec2I vy)` setting y component by y component of input vector
    `IParticleOnSurfaceGeo` | `y(IVecI vy)` setting y component by y component of input vector
    `IParticleOnSurfaceGeo` | `z(double vz)` setting z component
    `IParticleOnSurfaceGeo` | `z(IDoubleI vz)` setting z component
    `IParticleOnSurfaceGeo` | `z(IVecI vz)` setting z component by z component of input vector
    `IParticleOnSurfaceGeo` | `zero()` setting all zero

    - ### Methods inherited from class igeo.IParticleGeo

      `acc, acceleration, addForce, angle, angle, angle, angle, angle, angle, angle, angle, bisect, bisect, cross, cross, decay, dif, dif, diff, diff, dist, dist, dist, dist, dist2, dist2, dist2, dist2, dot, dot, dot, dot, eq, eq, eq, eq, eq, eq, eq, eq, eqX, eqX, eqX, eqX, eqX, eqX, eqX, eqX, eqY, eqY, eqY, eqY, eqY, eqY, eqY, eqY, eqZ, eqZ, eqZ, eqZ, eqZ, eqZ, eqZ, eqZ, fixed, force, frc, fric, friction, get, getX, getY, getZ, initParticle, initParticle, initParticle, isValid, len, len, len, len, len, len2, len2, len2, mass, mid, mid, nml, nml, nml, nml, pos, position, pull, push, removeTarget, removeTarget, skipUpdateOnce, sum, sum, sum, sum, sum, sum, sum, target, to2d, to2d, to2d, to2d, to4d, to4d, to4d, toString, vel, velocity, x, x, x, y, y, y, z, z, z`

    - ### Methods inherited from class igeo.IDynamicsBase

      `initDynamicsBase, initDynamicsBase, initDynamicsBase, localDynamics, parent, parent, postinteract, preinteract, target, targetNum, targets, updateTarget`

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

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

    - ### Methods inherited from interface igeo.IParticleI

      `acc, acceleration, addForce, decay, fixed, force, frc, fric, friction, mass, pos, position, pull, push, removeTarget, removeTarget, skipUpdateOnce, target, target, targetNum, targets, updateTarget, vel, velocity`

    - ### Methods inherited from interface igeo.IVecI

      `angle, angle, angle, angle, angle, angle, angle, angle, bisect, bisect, cross, cross, dif, dif, diff, diff, dist, dist, dist, dist, dist2, dist2, dist2, dist2, dot, dot, dot, dot, eq, eq, eq, eq, eq, eq, eq, eq, eqX, eqX, eqX, eqX, eqX, eqX, eqX, eqX, eqY, eqY, eqY, eqY, eqY, eqY, eqY, eqY, eqZ, eqZ, eqZ, eqZ, eqZ, eqZ, eqZ, eqZ, get, getX, getY, getZ, isValid, len, len, len, len, len, len2, len2, len2, mid, mid, nml, nml, nml, nml, sum, sum, sum, sum, sum, sum, sum, to2d, to2d, to2d, to2d, to4d, to4d, to4d, x, x, x, y, y, y, z, z, z`

- - ### Field Detail

    - #### surface

          public ISurfaceI surface

    - #### uvpos

          public IVec2 uvpos

    - #### uvvel

          public IVec2 uvvel

    - #### uvfrc

          public IVec2 uvfrc

    - #### utan

          public IVec utan

    - #### vtan

          public IVec vtan

    - #### ufixed

          public boolean ufixed

    - #### vfixed

          public boolean vfixed

  - ### Constructor Detail

    - #### IParticleOnSurfaceGeo

          public IParticleOnSurfaceGeo(ISurfaceI srf)

    - #### IParticleOnSurfaceGeo

          public IParticleOnSurfaceGeo(ISurfaceI srf,
                               double u,
                               double v)

    - #### IParticleOnSurfaceGeo

          public IParticleOnSurfaceGeo(ISurfaceI srf,
                               double u,
                               double v,
                               double uvel,
                               double vvel)

    - #### IParticleOnSurfaceGeo

          public IParticleOnSurfaceGeo(ISurfaceI srf,
                               IVec pos)

    - #### IParticleOnSurfaceGeo

          public IParticleOnSurfaceGeo(ISurfaceI srf,
                               double u,
                               double v,
                               IVec pos)

    - #### IParticleOnSurfaceGeo

          public IParticleOnSurfaceGeo(ISurfaceI srf,
                               double u,
                               double v,
                               double uvel,
                               double vvel,
                               IVec pos)

    - #### IParticleOnSurfaceGeo

          public IParticleOnSurfaceGeo(ISurfaceI srf,
                               IObject parent)

    - #### IParticleOnSurfaceGeo

          public IParticleOnSurfaceGeo(ISurfaceI srf,
                               double u,
                               double v,
                               IObject parent)

    - #### IParticleOnSurfaceGeo

          public IParticleOnSurfaceGeo(ISurfaceI srf,
                               double u,
                               double v,
                               double uvel,
                               double vvel,
                               IObject parent)

    - #### IParticleOnSurfaceGeo

          public IParticleOnSurfaceGeo(ISurfaceI srf,
                               IVec pos,
                               IObject parent)

    - #### IParticleOnSurfaceGeo

          public IParticleOnSurfaceGeo(ISurfaceI srf,
                               double u,
                               double v,
                               IVec pos,
                               IObject parent)

    - #### IParticleOnSurfaceGeo

          public IParticleOnSurfaceGeo(ISurfaceI srf,
                               double u,
                               double v,
                               double uvel,
                               double vvel,
                               IVec pos,
                               IObject parent)

    - #### IParticleOnSurfaceGeo

          public IParticleOnSurfaceGeo(ISurfaceI srf,
                               double u,
                               double v,
                               IPoint pt)

    - #### IParticleOnSurfaceGeo

          public IParticleOnSurfaceGeo(ISurfaceI srf,
                               double u,
                               double v,
                               double uvel,
                               double vvel,
                               IPoint pt)

    - #### IParticleOnSurfaceGeo

          public IParticleOnSurfaceGeo(ISurfaceI srf,
                               IPoint pt)

    - #### IParticleOnSurfaceGeo

          public IParticleOnSurfaceGeo(ISurfaceI srf,
                               IPointR pt)

    - #### IParticleOnSurfaceGeo

          public IParticleOnSurfaceGeo(ISurfaceI srf,
                               double u,
                               double v,
                               IPointR pt)

    - #### IParticleOnSurfaceGeo

          public IParticleOnSurfaceGeo(ISurfaceI srf,
                               double u,
                               double v,
                               double uvel,
                               double vvel,
                               IPointR pt)

    - #### IParticleOnSurfaceGeo

          public IParticleOnSurfaceGeo(ISurface srf)

    - #### IParticleOnSurfaceGeo

          public IParticleOnSurfaceGeo(ISurface srf,
                               double u,
                               double v)

    - #### IParticleOnSurfaceGeo

          public IParticleOnSurfaceGeo(ISurface srf,
                               double u,
                               double v,
                               double uvel,
                               double vvel)

    - #### IParticleOnSurfaceGeo

          public IParticleOnSurfaceGeo(ISurface srf,
                               IVec pos)

    - #### IParticleOnSurfaceGeo

          public IParticleOnSurfaceGeo(ISurface srf,
                               double u,
                               double v,
                               IVec pos)

    - #### IParticleOnSurfaceGeo

          public IParticleOnSurfaceGeo(ISurface srf,
                               double u,
                               double v,
                               double uvel,
                               double vvel,
                               IVec pos)

    - #### IParticleOnSurfaceGeo

          public IParticleOnSurfaceGeo(IParticleOnSurfaceGeo p)

    - #### IParticleOnSurfaceGeo

          public IParticleOnSurfaceGeo(IParticleOnSurfaceGeo p,
                               IVec pos)

    - #### IParticleOnSurfaceGeo

          public IParticleOnSurfaceGeo(IParticleOnSurfaceGeo p,
                               IObject parent)

    - #### IParticleOnSurfaceGeo

          public IParticleOnSurfaceGeo(IParticleOnSurfaceGeo p,
                               IVec pos,
                               IObject parent)

  - ### Method Detail

    - #### dup

          public IParticleOnSurfaceGeo dup()

      Description copied from interface: `ITransformable`
      duplicate the instance
      Specified by:
        `dup` in interface `IArithmeticVal<IVecI,IDoubleI>`
      Specified by:
        `dup` in interface `ITransformable`
      Specified by:
        `dup` in interface `IVecI`
      Overrides:
        `dup` in class `IParticleGeo`

    - #### surface

          public ISurfaceI surface()

      Specified by:
        `surface` in interface `IParticleOnSurfaceI`

    - #### fix

          public IParticleOnSurfaceGeo fix()

      Description copied from interface: `IParticleI`
      fix movement
      Specified by:
        `fix` in interface `IParticleI`
      Overrides:
        `fix` in class `IParticleGeo`

    - #### unfix

          public IParticleOnSurfaceGeo unfix()

      Description copied from interface: `IParticleI`
      unfix movement
      Specified by:
        `unfix` in interface `IParticleI`
      Overrides:
        `unfix` in class `IParticleGeo`

    - #### skipUpdateOnce

          public IParticleOnSurfaceGeo skipUpdateOnce(boolean f)

      Description copied from class: `IParticleGeo`
      for other agent to control particle
      Specified by:
        `skipUpdateOnce` in interface `IParticleI`
      Overrides:
        `skipUpdateOnce` in class `IParticleGeo`

    - #### mass

          public IParticleOnSurfaceGeo mass(double mass)

      Description copied from interface: `IParticleI`
      set mass
      Specified by:
        `mass` in interface `IParticleI`
      Overrides:
        `mass` in class `IParticleGeo`

    - #### position

          public IParticleOnSurfaceGeo position(IVecI v)

      Description copied from interface: `IParticleI`
      set position
      Specified by:
        `position` in interface `IParticleI`
      Overrides:
        `position` in class `IParticleGeo`

    - #### pos

          public IParticleOnSurfaceGeo pos(IVecI v)

      Description copied from interface: `IParticleI`
      set position
      Specified by:
        `pos` in interface `IParticleI`
      Overrides:
        `pos` in class `IParticleGeo`

    - #### velocity

          public IParticleOnSurfaceGeo velocity(IVecI v)

      Description copied from interface: `IParticleI`
      set velocity
      Specified by:
        `velocity` in interface `IParticleI`
      Overrides:
        `velocity` in class `IParticleGeo`

    - #### vel

          public IParticleOnSurfaceGeo vel(IVecI v)

      Description copied from interface: `IParticleI`
      set velocity
      Specified by:
        `vel` in interface `IParticleI`
      Overrides:
        `vel` in class `IParticleGeo`

    - #### force

          public IParticleOnSurfaceGeo force(IVecI v)

      Description copied from interface: `IParticleI`
      set force
      Specified by:
        `force` in interface `IParticleI`
      Overrides:
        `force` in class `IParticleGeo`

    - #### frc

          public IParticleOnSurfaceGeo frc(IVecI v)

      Description copied from interface: `IParticleI`
      set force
      Specified by:
        `frc` in interface `IParticleI`
      Overrides:
        `frc` in class `IParticleGeo`

    - #### friction

          public IParticleOnSurfaceGeo friction(double friction)

      Description copied from interface: `IParticleI`
      set friction
      Specified by:
        `friction` in interface `IParticleI`
      Overrides:
        `friction` in class `IParticleGeo`

    - #### fric

          public IParticleOnSurfaceGeo fric(double friction)

      Description copied from interface: `IParticleI`
      set friction
      Specified by:
        `fric` in interface `IParticleI`
      Overrides:
        `fric` in class `IParticleGeo`

    - #### decay

          public IParticleOnSurfaceGeo decay(double d)

      Specified by:
        `decay` in interface `IParticleI`
      Overrides:
        `decay` in class `IParticleGeo`

    - #### push

          public IParticleOnSurfaceGeo push(IVecI f)

      Description copied from class: `IParticleGeo`
      adding force
      Specified by:
        `push` in interface `IParticleI`
      Overrides:
        `push` in class `IParticleGeo`

    - #### pull

          public IParticleOnSurfaceGeo pull(IVecI f)

      Description copied from class: `IParticleGeo`
      adding negative force
      Specified by:
        `pull` in interface `IParticleI`
      Overrides:
        `pull` in class `IParticleGeo`

    - #### addForce

          public IParticleOnSurfaceGeo addForce(IVecI f)

      Description copied from class: `IParticleGeo`
      adding force (alias of push)
      Specified by:
        `addForce` in interface `IParticleI`
      Overrides:
        `addForce` in class `IParticleGeo`

    - #### reset

          public IParticleOnSurfaceGeo reset()

      Description copied from class: `IParticleGeo`
      setting force zero
      Specified by:
        `reset` in interface `IParticleI`
      Overrides:
        `reset` in class `IParticleGeo`

    - #### resetForce

          public IParticleOnSurfaceGeo resetForce()

      Description copied from class: `IParticleGeo`
      setting force zero (alias of reset())
      Specified by:
        `resetForce` in interface `IParticleI`
      Overrides:
        `resetForce` in class `IParticleGeo`

    - #### uv

          public IParticleOnSurfaceGeo uv(double u,
                                 double v)

      Specified by:
        `uv` in interface `IParticleOnSurfaceI`

    - #### uv

          public IVec2 uv()

      Specified by:
        `uv` in interface `IParticleOnSurfaceI`

    - #### uvvel

          public IParticleOnSurfaceGeo uvvel(double uvel,
                                    double vvel)

      Specified by:
        `uvvel` in interface `IParticleOnSurfaceI`

    - #### uvvel

          public IVec2 uvvel()

      Specified by:
        `uvvel` in interface `IParticleOnSurfaceI`

    - #### uvfrc

          public IParticleOnSurfaceGeo uvfrc(double ufrc,
                                    double vfrc)

      Specified by:
        `uvfrc` in interface `IParticleOnSurfaceI`

    - #### uvfrc

          public IVec2 uvfrc()

      Specified by:
        `uvfrc` in interface `IParticleOnSurfaceI`

    - #### addUVForce

          public IParticleOnSurfaceGeo addUVForce(double ufrc,
                                         double vfrc)

      Specified by:
        `addUVForce` in interface `IParticleOnSurfaceI`

    - #### resetUVForce

          public IParticleOnSurfaceGeo resetUVForce()

      Specified by:
        `resetUVForce` in interface `IParticleOnSurfaceI`

    - #### uvpush

          public IParticleOnSurfaceGeo uvpush(double ufrc,
                                     double vfrc)

      Specified by:
        `uvpush` in interface `IParticleOnSurfaceI`

    - #### uvpull

          public IParticleOnSurfaceGeo uvpull(double ufrc,
                                     double vfrc)

      Specified by:
        `uvpull` in interface `IParticleOnSurfaceI`

    - #### uvreset

          public IParticleOnSurfaceGeo uvreset()

      Specified by:
        `uvreset` in interface `IParticleOnSurfaceI`

    - #### fixU

          public IParticleOnSurfaceGeo fixU()

      Specified by:
        `fixU` in interface `IParticleOnSurfaceI`

    - #### fixV

          public IParticleOnSurfaceGeo fixV()

      Specified by:
        `fixV` in interface `IParticleOnSurfaceI`

    - #### unfixU

          public IParticleOnSurfaceGeo unfixU()

      Specified by:
        `unfixU` in interface `IParticleOnSurfaceI`

    - #### unfixV

          public IParticleOnSurfaceGeo unfixV()

      Specified by:
        `unfixV` in interface `IParticleOnSurfaceI`

    - #### uFixed

          public boolean uFixed()

      Specified by:
        `uFixed` in interface `IParticleOnSurfaceI`

    - #### vFixed

          public boolean vFixed()

      Specified by:
        `vFixed` in interface `IParticleOnSurfaceI`

    - #### interact

          public void interact(java.util.ArrayList<IDynamics> dynamics)

      Description copied from class: `IDynamicsBase`
      behavior definition of interaction with other dynamic objects. The server puts all dynamic objects including itself.
      Specified by:
        `interact` in interface `IDynamics`
      Overrides:
        `interact` in class `IDynamicsBase`

    - #### preupdate

          public void preupdate()

      update of velocity is done in preupdate (updated 2012/08/26)
      Specified by:
        `preupdate` in interface `IDynamics`
      Overrides:
        `preupdate` in class `IParticleGeo`

    - #### update

          public void update()

      update of velocity is done in preupdate and update of position is done in update() (updated 2012/08/26)
      Specified by:
        `update` in interface `IDynamics`
      Overrides:
        `update` in class `IParticleGeo`

    - #### postupdate

          public void postupdate()

      Description copied from class: `IParticleGeo`
      this is changed again because force in update cannot be reflected (updated 2014/03/10)
      Specified by:
        `postupdate` in interface `IDynamics`
      Overrides:
        `postupdate` in class `IParticleGeo`

    - #### x

          public IParticleOnSurfaceGeo x(double vx)

      implementation of IVecI
      Specified by:
        `x` in interface `IVecI`
      Overrides:
        `x` in class `IParticleGeo`

    - #### y

          public IParticleOnSurfaceGeo y(double vy)

      Description copied from interface: `IVecI`
      setting y component
      Specified by:
        `y` in interface `IVecI`
      Overrides:
        `y` in class `IParticleGeo`

    - #### z

          public IParticleOnSurfaceGeo z(double vz)

      Description copied from interface: `IVecI`
      setting z component
      Specified by:
        `z` in interface `IVecI`
      Overrides:
        `z` in class `IParticleGeo`

    - #### x

          public IParticleOnSurfaceGeo x(IDoubleI vx)

      Description copied from interface: `IVecI`
      setting x component
      Specified by:
        `x` in interface `IVecI`
      Overrides:
        `x` in class `IParticleGeo`

    - #### y

          public IParticleOnSurfaceGeo y(IDoubleI vy)

      Description copied from interface: `IVecI`
      setting y component
      Specified by:
        `y` in interface `IVecI`
      Overrides:
        `y` in class `IParticleGeo`

    - #### z

          public IParticleOnSurfaceGeo z(IDoubleI vz)

      Description copied from interface: `IVecI`
      setting z component
      Specified by:
        `z` in interface `IVecI`
      Overrides:
        `z` in class `IParticleGeo`

    - #### x

          public IParticleOnSurfaceGeo x(IVecI vx)

      Description copied from class: `IParticleGeo`
      setting x component by x component of input vector
      Specified by:
        `x` in interface `IVecI`
      Overrides:
        `x` in class `IParticleGeo`

    - #### y

          public IParticleOnSurfaceGeo y(IVecI vy)

      Description copied from class: `IParticleGeo`
      setting y component by y component of input vector
      Specified by:
        `y` in interface `IVecI`
      Overrides:
        `y` in class `IParticleGeo`

    - #### z

          public IParticleOnSurfaceGeo z(IVecI vz)

      Description copied from class: `IParticleGeo`
      setting z component by z component of input vector
      Specified by:
        `z` in interface `IVecI`
      Overrides:
        `z` in class `IParticleGeo`

    - #### x

          public IParticleOnSurfaceGeo x(IVec2I vx)

      Description copied from class: `IParticleGeo`
      setting x component by x component of input vector
      Specified by:
        `x` in interface `IVecI`
      Overrides:
        `x` in class `IParticleGeo`

    - #### y

          public IParticleOnSurfaceGeo y(IVec2I vy)

      Description copied from class: `IParticleGeo`
      setting y component by y component of input vector
      Specified by:
        `y` in interface `IVecI`
      Overrides:
        `y` in class `IParticleGeo`

    - #### set

          public IParticleOnSurfaceGeo set(IVecI v)

      Specified by:
        `set` in interface `IArithmeticVal<IVecI,IDoubleI>`
      Specified by:
        `set` in interface `IVecI`
      Overrides:
        `set` in class `IParticleGeo`

    - #### set

          public IParticleOnSurfaceGeo set(double x,
                                  double y,
                                  double z)

      Specified by:
        `set` in interface `IVecI`
      Overrides:
        `set` in class `IParticleGeo`

    - #### set

          public IParticleOnSurfaceGeo set(IDoubleI x,
                                  IDoubleI y,
                                  IDoubleI z)

      Specified by:
        `set` in interface `IVecI`
      Overrides:
        `set` in class `IParticleGeo`

    - #### add

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

      Specified by:
        `add` in interface `ITransformable`
      Specified by:
        `add` in interface `IVecI`
      Overrides:
        `add` in class `IParticleGeo`

    - #### add

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

      Specified by:
        `add` in interface `ITransformable`
      Specified by:
        `add` in interface `IVecI`
      Overrides:
        `add` in class `IParticleGeo`

    - #### add

          public IParticleOnSurfaceGeo add(IVecI v)

      Specified by:
        `add` in interface `IArithmeticVal<IVecI,IDoubleI>`
      Specified by:
        `add` in interface `ITransformable`
      Specified by:
        `add` in interface `IVecI`
      Overrides:
        `add` in class `IParticleGeo`

    - #### sub

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

      Specified by:
        `sub` in interface `ITransformable`
      Specified by:
        `sub` in interface `IVecI`
      Overrides:
        `sub` in class `IParticleGeo`

    - #### sub

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

      Specified by:
        `sub` in interface `ITransformable`
      Specified by:
        `sub` in interface `IVecI`
      Overrides:
        `sub` in class `IParticleGeo`

    - #### sub

          public IParticleOnSurfaceGeo sub(IVecI v)

      Specified by:
        `sub` in interface `IArithmeticVal<IVecI,IDoubleI>`
      Specified by:
        `sub` in interface `ITransformable`
      Specified by:
        `sub` in interface `IVecI`
      Overrides:
        `sub` in class `IParticleGeo`

    - #### mul

          public IParticleOnSurfaceGeo mul(IDoubleI v)

      Specified by:
        `mul` in interface `IArithmeticVal<IVecI,IDoubleI>`
      Specified by:
        `mul` in interface `ITransformable`
      Specified by:
        `mul` in interface `IVecI`
      Overrides:
        `mul` in class `IParticleGeo`

    - #### mul

          public IParticleOnSurfaceGeo mul(double v)

      Specified by:
        `mul` in interface `ITransformable`
      Specified by:
        `mul` in interface `IVecI`
      Overrides:
        `mul` in class `IParticleGeo`

    - #### div

          public IParticleOnSurfaceGeo div(IDoubleI v)

      Specified by:
        `div` in interface `IArithmeticVal<IVecI,IDoubleI>`
      Specified by:
        `div` in interface `ITransformable`
      Specified by:
        `div` in interface `IVecI`
      Overrides:
        `div` in class `IParticleGeo`

    - #### div

          public IParticleOnSurfaceGeo div(double v)

      Specified by:
        `div` in interface `ITransformable`
      Specified by:
        `div` in interface `IVecI`
      Overrides:
        `div` in class `IParticleGeo`

    - #### neg

          public IParticleOnSurfaceGeo neg()

      Specified by:
        `neg` in interface `ITransformable`
      Specified by:
        `neg` in interface `IVecI`
      Overrides:
        `neg` in class `IParticleGeo`

    - #### rev

          public IParticleOnSurfaceGeo rev()

      Description copied from interface: `IVecI`
      alias of neg()
      Specified by:
        `rev` in interface `IVecI`
      Overrides:
        `rev` in class `IParticleGeo`

    - #### flip

          public IParticleOnSurfaceGeo flip()

      Description copied from interface: `IVecI`
      alias of neg()
      Specified by:
        `flip` in interface `ITransformable`
      Specified by:
        `flip` in interface `IVecI`
      Overrides:
        `flip` in class `IParticleGeo`

    - #### zero

          public IParticleOnSurfaceGeo zero()

      Description copied from interface: `IVecI`
      setting all zero
      Specified by:
        `zero` in interface `IArithmeticVal<IVecI,IDoubleI>`
      Specified by:
        `zero` in interface `IVecI`
      Overrides:
        `zero` in class `IParticleGeo`

    - #### add

          public IParticleOnSurfaceGeo add(IVecI v,
                                  double f)

      Description copied from interface: `IVecI`
      scale add
      Specified by:
        `add` in interface `ITransformable`
      Specified by:
        `add` in interface `IVecI`
      Overrides:
        `add` in class `IParticleGeo`

    - #### add

          public IParticleOnSurfaceGeo add(IVecI v,
                                  IDoubleI f)

      Description copied from interface: `IVecI`
      scale add
      Specified by:
        `add` in interface `ITransformable`
      Specified by:
        `add` in interface `IVecI`
      Overrides:
        `add` in class `IParticleGeo`

    - #### add

          public IParticleOnSurfaceGeo add(double f,
                                  IVecI v)

      Description copied from interface: `IVecI`
      scale add
      Specified by:
        `add` in interface `ITransformable`
      Specified by:
        `add` in interface `IVecI`
      Overrides:
        `add` in class `IParticleGeo`

    - #### add

          public IParticleOnSurfaceGeo add(IDoubleI f,
                                  IVecI v)

      Description copied from interface: `IVecI`
      scale add
      Specified by:
        `add` in interface `ITransformable`
      Specified by:
        `add` in interface `IVecI`
      Overrides:
        `add` in class `IParticleGeo`

    - #### unit

          public IParticleOnSurfaceGeo unit()

      Description copied from interface: `IVecI`
      unitize
      Specified by:
        `unit` in interface `IVecI`
      Overrides:
        `unit` in class `IParticleGeo`

    - #### rot

          public IParticleOnSurfaceGeo rot(IDoubleI angle)

      Description copied from interface: `IVecI`
      rotation on XY plane
      Specified by:
        `rot` in interface `ITransformable`
      Specified by:
        `rot` in interface `IVecI`
      Overrides:
        `rot` in class `IParticleGeo`

    - #### rot

          public IParticleOnSurfaceGeo rot(double angle)

      Description copied from interface: `IVecI`
      rotation on XY plane
      Specified by:
        `rot` in interface `ITransformable`
      Specified by:
        `rot` in interface `IVecI`
      Overrides:
        `rot` in class `IParticleGeo`

    - #### rot

          public IParticleOnSurfaceGeo rot(IVecI axis,
                                  IDoubleI angle)

      Description copied from interface: `IVecI`
      rotation around axis vector
      Specified by:
        `rot` in interface `ITransformable`
      Specified by:
        `rot` in interface `IVecI`
      Overrides:
        `rot` in class `IParticleGeo`

    - #### rot

          public IParticleOnSurfaceGeo rot(IVecI axis,
                                  double angle)

      Description copied from interface: `IVecI`
      rotation around axis vector
      Specified by:
        `rot` in interface `ITransformable`
      Specified by:
        `rot` in interface `IVecI`
      Overrides:
        `rot` in class `IParticleGeo`

    - #### rot

          public IParticleOnSurfaceGeo rot(double axisX,
                                  double axisY,
                                  double axisZ,
                                  double angle)

      Description copied from interface: `IVecI`
      rotation around axis vector
      Specified by:
        `rot` in interface `IVecI`
      Overrides:
        `rot` in class `IParticleGeo`

    - #### rot

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

      Description copied from interface: `IVecI`
      rotation around axis vector and center point
      Specified by:
        `rot` in interface `ITransformable`
      Specified by:
        `rot` in interface `IVecI`
      Overrides:
        `rot` in class `IParticleGeo`

    - #### rot

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

      Description copied from interface: `IVecI`
      rotation around axis vector and center point
      Specified by:
        `rot` in interface `ITransformable`
      Specified by:
        `rot` in interface `IVecI`
      Overrides:
        `rot` in class `IParticleGeo`

    - #### rot

          public IParticleOnSurfaceGeo rot(double centerX,
                                  double centerY,
                                  double centerZ,
                                  double axisX,
                                  double axisY,
                                  double axisZ,
                                  double angle)

      Description copied from interface: `IVecI`
      rotation around axis vector and center point
      Specified by:
        `rot` in interface `IVecI`
      Overrides:
        `rot` in class `IParticleGeo`

    - #### rot

          public IParticleOnSurfaceGeo rot(IVecI axis,
                                  IVecI destDir)

      Rotate to destination direction vector.
      Specified by:
        `rot` in interface `ITransformable`
      Specified by:
        `rot` in interface `IVecI`
      Overrides:
        `rot` in class `IParticleGeo`

    - #### rot

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

      Rotate to destination point location.
      Specified by:
        `rot` in interface `ITransformable`
      Specified by:
        `rot` in interface `IVecI`
      Overrides:
        `rot` in class `IParticleGeo`

    - #### rot2

          public IParticleOnSurfaceGeo rot2(double angle)

      rotation on xy-plane; alias of rot(double)
      Specified by:
        `rot2` in interface `ITransformable`
      Specified by:
        `rot2` in interface `IVecI`
      Overrides:
        `rot2` in class `IParticleGeo`

    - #### rot2

          public IParticleOnSurfaceGeo rot2(IDoubleI angle)

      rotation on xy-plane; alias of rot(IDoubleI)
      Specified by:
        `rot2` in interface `ITransformable`
      Specified by:
        `rot2` in interface `IVecI`
      Overrides:
        `rot2` in class `IParticleGeo`

    - #### rot2

          public IParticleOnSurfaceGeo rot2(IVecI center,
                                   double angle)

      rotation on xy-plane
      Specified by:
        `rot2` in interface `ITransformable`
      Specified by:
        `rot2` in interface `IVecI`
      Overrides:
        `rot2` in class `IParticleGeo`

    - #### rot2

          public IParticleOnSurfaceGeo rot2(IVecI center,
                                   IDoubleI angle)

      rotation on xy-plane
      Specified by:
        `rot2` in interface `ITransformable`
      Specified by:
        `rot2` in interface `IVecI`
      Overrides:
        `rot2` in class `IParticleGeo`

    - #### rot2

          public IParticleOnSurfaceGeo rot2(double centerX,
                                   double centerY,
                                   double angle)

      rotation on xy-plane
      Specified by:
        `rot2` in interface `IVecI`
      Overrides:
        `rot2` in class `IParticleGeo`

    - #### rot2

          public IParticleOnSurfaceGeo rot2(IVecI destDir)

      rotation on xy-plane towards destDir
      Specified by:
        `rot2` in interface `ITransformable`
      Specified by:
        `rot2` in interface `IVecI`
      Overrides:
        `rot2` in class `IParticleGeo`

    - #### rot2

          public IParticleOnSurfaceGeo rot2(IVecI center,
                                   IVecI destPt)

      rotation on xy-plane towards destPt
      Specified by:
        `rot2` in interface `ITransformable`
      Specified by:
        `rot2` in interface `IVecI`
      Overrides:
        `rot2` in class `IParticleGeo`

    - #### scale

          public IParticleOnSurfaceGeo scale(IDoubleI f)

      alias of mul
      Specified by:
        `scale` in interface `ITransformable`
      Specified by:
        `scale` in interface `IVecI`
      Overrides:
        `scale` in class `IParticleGeo`

    - #### scale

          public IParticleOnSurfaceGeo scale(double f)

      alias of mul
      Specified by:
        `scale` in interface `ITransformable`
      Specified by:
        `scale` in interface `IVecI`
      Overrides:
        `scale` in class `IParticleGeo`

    - #### scale

          public IParticleOnSurfaceGeo scale(IVecI center,
                                    IDoubleI f)

      Description copied from interface: `IVecI`
      scale from a center
      Specified by:
        `scale` in interface `ITransformable`
      Specified by:
        `scale` in interface `IVecI`
      Overrides:
        `scale` in class `IParticleGeo`

    - #### scale

          public IParticleOnSurfaceGeo scale(IVecI center,
                                    double f)

      Description copied from interface: `IVecI`
      scale from a center
      Specified by:
        `scale` in interface `ITransformable`
      Specified by:
        `scale` in interface `IVecI`
      Overrides:
        `scale` in class `IParticleGeo`

    - #### scale

          public IParticleOnSurfaceGeo scale(double centerX,
                                    double centerY,
                                    double centerZ,
                                    double f)

      Description copied from interface: `IVecI`
      scale from a center
      Specified by:
        `scale` in interface `IVecI`
      Overrides:
        `scale` in class `IParticleGeo`

    - #### scale1d

          public IParticleOnSurfaceGeo scale1d(IVecI axis,
                                      double f)

      scale only in 1 direction
      Specified by:
        `scale1d` in interface `ITransformable`
      Specified by:
        `scale1d` in interface `IVecI`
      Overrides:
        `scale1d` in class `IParticleGeo`

    - #### scale1d

          public IParticleOnSurfaceGeo scale1d(IVecI axis,
                                      IDoubleI f)

      Description copied from interface: `IVecI`
      scale only in 1 direction
      Specified by:
        `scale1d` in interface `ITransformable`
      Specified by:
        `scale1d` in interface `IVecI`
      Overrides:
        `scale1d` in class `IParticleGeo`

    - #### scale1d

          public IParticleOnSurfaceGeo scale1d(double axisX,
                                      double axisY,
                                      double axisZ,
                                      double f)

      Description copied from interface: `IVecI`
      scale only in 1 direction
      Specified by:
        `scale1d` in interface `IVecI`
      Overrides:
        `scale1d` in class `IParticleGeo`

    - #### scale1d

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

      Description copied from interface: `IVecI`
      scale only in 1 direction from a center
      Specified by:
        `scale1d` in interface `ITransformable`
      Specified by:
        `scale1d` in interface `IVecI`
      Overrides:
        `scale1d` in class `IParticleGeo`

    - #### scale1d

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

      Description copied from interface: `IVecI`
      scale only in 1 direction from a center
      Specified by:
        `scale1d` in interface `ITransformable`
      Specified by:
        `scale1d` in interface `IVecI`
      Overrides:
        `scale1d` in class `IParticleGeo`

    - #### scale1d

          public IParticleOnSurfaceGeo scale1d(double centerX,
                                      double centerY,
                                      double centerZ,
                                      double axisX,
                                      double axisY,
                                      double axisZ,
                                      double f)

      Description copied from interface: `IVecI`
      scale only in 1 direction from a center
      Specified by:
        `scale1d` in interface `IVecI`
      Overrides:
        `scale1d` in class `IParticleGeo`

    - #### ref

          public IParticleOnSurfaceGeo ref(IVecI planeDir)

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

    - #### ref

          public IParticleOnSurfaceGeo ref(double planeX,
                                  double planeY,
                                  double planeZ)

      reflect (mirror) 3 dimensionally to the other side of the plane
      Specified by:
        `ref` in interface `IVecI`
      Overrides:
        `ref` in class `IParticleGeo`

    - #### ref

          public IParticleOnSurfaceGeo ref(IVecI center,
                                  IVecI planeDir)

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

    - #### ref

          public IParticleOnSurfaceGeo ref(double centerX,
                                  double centerY,
                                  double centerZ,
                                  double planeX,
                                  double planeY,
                                  double planeZ)

      reflect (mirror) 3 dimensionally to the other side of the plane
      Specified by:
        `ref` in interface `IVecI`
      Overrides:
        `ref` in class `IParticleGeo`

    - #### mirror

          public IParticleOnSurfaceGeo mirror(IVecI planeDir)

      reflect (mirror) 3 dimensionally to the other side of the plane
      Specified by:
        `mirror` in interface `ITransformable`
      Specified by:
        `mirror` in interface `IVecI`
      Overrides:
        `mirror` in class `IParticleGeo`

    - #### mirror

          public IParticleOnSurfaceGeo mirror(double planeX,
                                     double planeY,
                                     double planeZ)

      reflect (mirror) 3 dimensionally to the other side of the plane
      Specified by:
        `mirror` in interface `IVecI`
      Overrides:
        `mirror` in class `IParticleGeo`

    - #### mirror

          public IParticleOnSurfaceGeo mirror(IVecI center,
                                     IVecI planeDir)

      reflect (mirror) 3 dimensionally to the other side of the plane
      Specified by:
        `mirror` in interface `ITransformable`
      Specified by:
        `mirror` in interface `IVecI`
      Overrides:
        `mirror` in class `IParticleGeo`

    - #### mirror

          public IParticleOnSurfaceGeo mirror(double centerX,
                                     double centerY,
                                     double centerZ,
                                     double planeX,
                                     double planeY,
                                     double planeZ)

      reflect (mirror) 3 dimensionally to the other side of the plane
      Specified by:
        `mirror` in interface `IVecI`
      Overrides:
        `mirror` in class `IParticleGeo`

    - #### shear

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

      shear operation
      Specified by:
        `shear` in interface `ITransformable`
      Specified by:
        `shear` in interface `IVecI`
      Overrides:
        `shear` in class `IParticleGeo`

    - #### shear

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

      Description copied from interface: `IVecI`
      shear operation
      Specified by:
        `shear` in interface `ITransformable`
      Specified by:
        `shear` in interface `IVecI`
      Overrides:
        `shear` in class `IParticleGeo`

    - #### shear

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

      Description copied from interface: `IVecI`
      shear operation
      Specified by:
        `shear` in interface `ITransformable`
      Specified by:
        `shear` in interface `IVecI`
      Overrides:
        `shear` in class `IParticleGeo`

    - #### shear

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

      Description copied from interface: `IVecI`
      shear operation
      Specified by:
        `shear` in interface `ITransformable`
      Specified by:
        `shear` in interface `IVecI`
      Overrides:
        `shear` in class `IParticleGeo`

    - #### shearXY

          public IParticleOnSurfaceGeo shearXY(double sxy,
                                      double syx)

      Description copied from interface: `IVecI`
      shear operation on XY
      Specified by:
        `shearXY` in interface `ITransformable`
      Specified by:
        `shearXY` in interface `IVecI`
      Overrides:
        `shearXY` in class `IParticleGeo`

    - #### shearXY

          public IParticleOnSurfaceGeo shearXY(IDoubleI sxy,
                                      IDoubleI syx)

      Description copied from interface: `IVecI`
      shear operation on XY
      Specified by:
        `shearXY` in interface `ITransformable`
      Specified by:
        `shearXY` in interface `IVecI`
      Overrides:
        `shearXY` in class `IParticleGeo`

    - #### shearXY

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

      Description copied from interface: `IVecI`
      shear operation on XY
      Specified by:
        `shearXY` in interface `ITransformable`
      Specified by:
        `shearXY` in interface `IVecI`
      Overrides:
        `shearXY` in class `IParticleGeo`

    - #### shearXY

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

      Description copied from interface: `IVecI`
      shear operation on XY
      Specified by:
        `shearXY` in interface `ITransformable`
      Specified by:
        `shearXY` in interface `IVecI`
      Overrides:
        `shearXY` in class `IParticleGeo`

    - #### shearYZ

          public IParticleOnSurfaceGeo shearYZ(double syz,
                                      double szy)

      Description copied from interface: `IVecI`
      shear operation on YZ
      Specified by:
        `shearYZ` in interface `ITransformable`
      Specified by:
        `shearYZ` in interface `IVecI`
      Overrides:
        `shearYZ` in class `IParticleGeo`

    - #### shearYZ

          public IParticleOnSurfaceGeo shearYZ(IDoubleI syz,
                                      IDoubleI szy)

      Description copied from interface: `IVecI`
      shear operation on YZ
      Specified by:
        `shearYZ` in interface `ITransformable`
      Specified by:
        `shearYZ` in interface `IVecI`
      Overrides:
        `shearYZ` in class `IParticleGeo`

    - #### shearYZ

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

      Description copied from interface: `IVecI`
      shear operation on YZ
      Specified by:
        `shearYZ` in interface `ITransformable`
      Specified by:
        `shearYZ` in interface `IVecI`
      Overrides:
        `shearYZ` in class `IParticleGeo`

    - #### shearYZ

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

      Description copied from interface: `IVecI`
      shear operation on YZ
      Specified by:
        `shearYZ` in interface `ITransformable`
      Specified by:
        `shearYZ` in interface `IVecI`
      Overrides:
        `shearYZ` in class `IParticleGeo`

    - #### shearZX

          public IParticleOnSurfaceGeo shearZX(double szx,
                                      double sxz)

      Description copied from interface: `IVecI`
      shear operation on ZX
      Specified by:
        `shearZX` in interface `ITransformable`
      Specified by:
        `shearZX` in interface `IVecI`
      Overrides:
        `shearZX` in class `IParticleGeo`

    - #### shearZX

          public IParticleOnSurfaceGeo shearZX(IDoubleI szx,
                                      IDoubleI sxz)

      Description copied from interface: `IVecI`
      shear operation on ZX
      Specified by:
        `shearZX` in interface `ITransformable`
      Specified by:
        `shearZX` in interface `IVecI`
      Overrides:
        `shearZX` in class `IParticleGeo`

    - #### shearZX

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

      Description copied from interface: `IVecI`
      shear operation on ZX
      Specified by:
        `shearZX` in interface `ITransformable`
      Specified by:
        `shearZX` in interface `IVecI`
      Overrides:
        `shearZX` in class `IParticleGeo`

    - #### shearZX

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

      Description copied from interface: `IVecI`
      shear operation on ZX
      Specified by:
        `shearZX` in interface `ITransformable`
      Specified by:
        `shearZX` in interface `IVecI`
      Overrides:
        `shearZX` in class `IParticleGeo`

    - #### translate

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

      translate is alias of add()
      Specified by:
        `translate` in interface `ITransformable`
      Specified by:
        `translate` in interface `IVecI`
      Overrides:
        `translate` in class `IParticleGeo`

    - #### translate

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

      Description copied from interface: `IVecI`
      alias of add()
      Specified by:
        `translate` in interface `ITransformable`
      Specified by:
        `translate` in interface `IVecI`
      Overrides:
        `translate` in class `IParticleGeo`

    - #### translate

          public IParticleOnSurfaceGeo translate(IVecI v)

      Description copied from interface: `IVecI`
      alias of add()
      Specified by:
        `translate` in interface `ITransformable`
      Specified by:
        `translate` in interface `IVecI`
      Overrides:
        `translate` in class `IParticleGeo`

    - #### transform

          public IParticleOnSurfaceGeo transform(IMatrix3I mat)

      Description copied from interface: `IVecI`
      transform with a transformation matrix
      Specified by:
        `transform` in interface `ITransformable`
      Specified by:
        `transform` in interface `IVecI`
      Overrides:
        `transform` in class `IParticleGeo`

    - #### transform

          public IParticleOnSurfaceGeo transform(IMatrix4I mat)

      Description copied from interface: `IVecI`
      transform with a transformation matrix
      Specified by:
        `transform` in interface `ITransformable`
      Specified by:
        `transform` in interface `IVecI`
      Overrides:
        `transform` in class `IParticleGeo`

    - #### transform

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

      Description copied from interface: `IVecI`
      transform with a transformation vectors
      Specified by:
        `transform` in interface `ITransformable`
      Specified by:
        `transform` in interface `IVecI`
      Overrides:
        `transform` in class `IParticleGeo`

    - #### transform

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

      Description copied from interface: `IVecI`
      transform with a transformation vectors
      Specified by:
        `transform` in interface `ITransformable`
      Specified by:
        `transform` in interface `IVecI`
      Overrides:
        `transform` in class `IParticleGeo`

    - #### mv

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

      mv() is alias of add()
      Specified by:
        `mv` in interface `ITransformable`
      Specified by:
        `mv` in interface `IVecI`
      Overrides:
        `mv` in class `IParticleGeo`

    - #### mv

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

      Description copied from interface: `IVecI`
      mv() is alias of add()
      Specified by:
        `mv` in interface `ITransformable`
      Specified by:
        `mv` in interface `IVecI`
      Overrides:
        `mv` in class `IParticleGeo`

    - #### mv

          public IParticleOnSurfaceGeo mv(IVecI v)

      Description copied from interface: `IVecI`
      mv() is alias of add()
      Specified by:
        `mv` in interface `ITransformable`
      Specified by:
        `mv` in interface `IVecI`
      Overrides:
        `mv` in class `IParticleGeo`

    - #### cp

          public IParticleOnSurfaceGeo cp()

      cp() is alias of dup()
      Specified by:
        `cp` in interface `IArithmeticVal<IVecI,IDoubleI>`
      Specified by:
        `cp` in interface `ITransformable`
      Specified by:
        `cp` in interface `IVecI`
      Overrides:
        `cp` in class `IParticleGeo`

    - #### cp

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

      cp() is alias of dup().add()
      Specified by:
        `cp` in interface `ITransformable`
      Specified by:
        `cp` in interface `IVecI`
      Overrides:
        `cp` in class `IParticleGeo`

    - #### cp

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

      Description copied from interface: `IVecI`
      cp() is alias of dup().add()
      Specified by:
        `cp` in interface `ITransformable`
      Specified by:
        `cp` in interface `IVecI`
      Overrides:
        `cp` in class `IParticleGeo`

    - #### cp

          public IParticleOnSurfaceGeo cp(IVecI v)

      Description copied from interface: `IVecI`
      cp() is alias of dup().add()
      Specified by:
        `cp` in interface `ITransformable`
      Specified by:
        `cp` in interface `IVecI`
      Overrides:
        `cp` in class `IParticleGeo`