igeo

## Interface IParticleI

- All Superinterfaces:
    IArithmeticVal<IVecI,IDoubleI>, IParameter, ITransformable, IVal, IVecI, IVecOp
  All Known Subinterfaces:
    IBoidI, IParticleOnCurveI, IParticleOnSurfaceI
  All Known Implementing Classes:
    IBoid, IBoidGeo, IBoidTrajectory, IParticle, IParticleAgent, IParticleGeo, IParticleOnCurve, IParticleOnCurveAgent, IParticleOnCurveGeo, IParticleOnMeshGeo, IParticleOnPlane, IParticleOnPlaneGeo, IParticleOnSurface, IParticleOnSurfaceGeo, IParticleTrajectory

      public interface IParticleI
      extends IVecI

  Class of an implementation of IDynamicObject to have physical attributes of point. It has attributes of position, velocity, acceleration, force, and mass. Position is provided from outside to be linked.
  Author:
    Satoru Sugihara

- - ### Method Summary

    All Methods Instance Methods Abstract Methods
    Modifier and Type | Method and Description
    --- | ---
    `IVec` | `acc()` get acceleration.
    `IVec` | `acceleration()` get acceleration.
    `IParticleI` | `addForce(double fx, double fy, double fz)` alias of push
    `IParticleI` | `addForce(IVecI f)` alias of push
    `double` | `decay()`
    `IParticleI` | `decay(double d)`
    `IParticleI` | `fix()` fix movement
    `boolean` | `fixed()` check if it's fixed
    `IVec` | `force()` get force
    `IParticleI` | `force(IVecI v)` set force
    `IVec` | `frc()` get force
    `IParticleI` | `frc(IVecI v)` set force
    `double` | `fric()` get friction
    `IParticleI` | `fric(double f)` set friction
    `double` | `friction()` get friction
    `IParticleI` | `friction(double f)` set friction
    `double` | `mass()` get mass
    `IParticleI` | `mass(double m)` set mass
    `IVec` | `pos()` get position
    `IParticleI` | `pos(IVecI v)` set position
    `IVec` | `position()` get position
    `IParticleI` | `position(IVecI v)` set position
    `IParticleI` | `pull(double fx, double fy, double fz)` equivalent to push(f.dup().neg())
    `IParticleI` | `pull(IVecI f)` equivalent to push(f.dup().neg())
    `IParticleI` | `push(double fx, double fy, double fz)` adding force to particle
    `IParticleI` | `push(IVecI f)` adding force to particle
    `IParticleI` | `removeTarget(int i)` remove target object.
    `IParticleI` | `removeTarget(IObject obj)` remove target object.
    `IParticleI` | `reset()` setting force zero
    `IParticleI` | `resetForce()` alias of reset
    `boolean` | `skipUpdateOnce()` for other agent to control particle
    `IParticleI` | `skipUpdateOnce(boolean f)` for other agent to control particle
    `IObject` | `target(int i)` get target object.
    `IParticleI` | `target(IObject targetObj)` add terget object to be updated by this dynamic object.
    `int` | `targetNum()` get total target number.
    `java.util.ArrayList<IObject>` | `targets()` get all target objects.
    `IParticleI` | `unfix()` unfix movement
    `void` | `updateTarget()` update all terget objects (should be called when the dynamic object is updated).
    `IVec` | `vel()` get velocity
    `IParticleI` | `vel(IVecI v)` set velocity
    `IVec` | `velocity()` get velocity
    `IParticleI` | `velocity(IVecI v)` set velocity

    - ### Methods inherited from interface igeo.IVecI

      `add, add, add, add, add, add, add, angle, angle, angle, angle, angle, angle, angle, angle, bisect, bisect, cp, cp, cp, cp, cross, cross, dif, dif, diff, diff, dist, dist, dist, dist, dist2, dist2, dist2, dist2, div, div, dot, dot, dot, dot, dup, 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, flip, get, getX, getY, getZ, isValid, len, len, len, len, len, len2, len2, len2, mid, mid, mirror, mirror, mirror, mirror, mul, mul, mv, mv, mv, neg, nml, nml, nml, nml, ref, ref, ref, ref, rev, rot, rot, rot, rot, rot, rot, rot, rot, rot, rot, rot2, rot2, rot2, rot2, rot2, rot2, rot2, scale, scale, scale, scale, scale, scale1d, scale1d, scale1d, scale1d, scale1d, scale1d, set, set, set, shear, shear, shear, shear, shearXY, shearXY, shearXY, shearXY, shearYZ, shearYZ, shearYZ, shearYZ, shearZX, shearZX, shearZX, shearZX, sub, sub, sub, sum, sum, sum, sum, sum, sum, sum, to2d, to2d, to2d, to2d, to4d, to4d, to4d, transform, transform, transform, transform, translate, translate, translate, unit, x, x, x, x, x, x, x, y, y, y, y, y, y, y, z, z, z, z, z, z, zero`

- - ### Method Detail

    - #### mass

          double mass()

      get mass

    - #### mass

          IParticleI mass(double m)

      set mass

    - #### position

          IVec position()

      get position

    - #### pos

          IVec pos()

      get position

    - #### position

          IParticleI position(IVecI v)

      set position

    - #### pos

          IParticleI pos(IVecI v)

      set position

    - #### velocity

          IVec velocity()

      get velocity

    - #### vel

          IVec vel()

      get velocity

    - #### velocity

          IParticleI velocity(IVecI v)

      set velocity

    - #### vel

          IParticleI vel(IVecI v)

      set velocity

    - #### acceleration

          IVec acceleration()

      get acceleration. no method to set acceleration. set force instead

    - #### acc

          IVec acc()

      get acceleration. no method to set acceleration. set force instead

    - #### force

          IVec force()

      get force

    - #### frc

          IVec frc()

      get force

    - #### force

          IParticleI force(IVecI v)

      set force

    - #### frc

          IParticleI frc(IVecI v)

      set force

    - #### friction

          double friction()

      get friction

    - #### fric

          double fric()

      get friction

    - #### friction

          IParticleI friction(double f)

      set friction

    - #### fric

          IParticleI fric(double f)

      set friction

    - #### decay

          double decay()

    - #### decay

          IParticleI decay(double d)

    - #### push

          IParticleI push(IVecI f)

      adding force to particle

    - #### push

          IParticleI push(double fx,
                          double fy,
                          double fz)

      adding force to particle

    - #### pull

          IParticleI pull(IVecI f)

      equivalent to push(f.dup().neg())

    - #### pull

          IParticleI pull(double fx,
                          double fy,
                          double fz)

      equivalent to push(f.dup().neg())

    - #### addForce

          IParticleI addForce(IVecI f)

      alias of push

    - #### addForce

          IParticleI addForce(double fx,
                              double fy,
                              double fz)

      alias of push

    - #### reset

          IParticleI reset()

      setting force zero

    - #### resetForce

          IParticleI resetForce()

      alias of reset

    - #### fix

          IParticleI fix()

      fix movement

    - #### unfix

          IParticleI unfix()

      unfix movement

    - #### fixed

          boolean fixed()

      check if it's fixed

    - #### skipUpdateOnce

          IParticleI skipUpdateOnce(boolean f)

      for other agent to control particle

    - #### skipUpdateOnce

          boolean skipUpdateOnce()

      for other agent to control particle

    - #### target

          IParticleI target(IObject targetObj)

      add terget object to be updated by this dynamic object.

    - #### targetNum

          int targetNum()

      get total target number.

    - #### target

          IObject target(int i)

      get target object.

    - #### targets

          java.util.ArrayList<IObject> targets()

      get all target objects.

    - #### removeTarget

          IParticleI removeTarget(int i)

      remove target object.

    - #### removeTarget

          IParticleI removeTarget(IObject obj)

      remove target object.

    - #### updateTarget

          void updateTarget()

      update all terget objects (should be called when the dynamic object is updated).