igeo

## Interface IVec4I

- All Superinterfaces:
    IArithmeticVal<IVecI,IDoubleI>, IParameter, ITransformable, IVal, IVec4Op, IVecI, IVecOp
  All Known Implementing Classes:
    IVec4, IVec4R

      public interface IVec4I
      extends IVec4Op, IVecI

  Abstract interface of 4 dimensional vector. 4 dimensional vector is mainly used for control points of NURBS geometry to include weights
  Author:
    Satoru Sugihara

- - ### Method Summary

    All Methods Instance Methods Abstract Methods
    Modifier and Type | Method and Description
    --- | ---
    `IVec4I` | `add(double f, IVecI v)` scale add alias
    `IVec4I` | `add(IDoubleI f, IVecI v)` scale add alias
    `IVec4I` | `add(IVecI v)`
    `IVec4I` | `add(IVecI v, double f)` scale add
    `IVec4I` | `add(IVecI v, IDoubleI f)` scale add
    `IVec4I` | `bisect(double vx, double vy, double vz)` create a new instance of bisector
    `IVec4I` | `bisect(IVecI v)` create a new instance of bisector
    `IVec4I` | `cp()` cp() is alias of dup()
    `IVec4I` | `cp(double x, double y, double z)` cp() is alias of dup().add()
    `IVec4I` | `cp(IDoubleI x, IDoubleI y, IDoubleI z)` cp() is alias of dup().add()
    `IVec4I` | `cp(IVecI v)` cp() is alias of dup().add()
    `IVec4I` | `cross(double vx, double vy, double vz)` cross product, creating a new instance
    `IVec4I` | `cross(IVecI v)` cross product, creating a new instance
    `IVec4I` | `dif(double vx, double vy, double vz)` create a new instance of difference
    `IVec4I` | `dif(IVecI v)` create a new instance of difference
    `IVec4I` | `diff(double vx, double vy, double vz)` alias of dif
    `IVec4I` | `diff(IVecI v)` alias of dif
    `IVec4I` | `div(double v)`
    `IVec4I` | `div(IDoubleI v)`
    `IVec4I` | `dup()` duplicate the instance
    `boolean` | `eqW(double vw)`
    `boolean` | `eqW(double vw, double tolerance)`
    `boolean` | `eqW(ISwitchE e, IVec4I v)`
    `boolean` | `eqW(ISwitchE e, IVec4I v, double tolerance)`
    `IBoolI` | `eqW(ISwitchR r, IVec4I v)`
    `IBoolI` | `eqW(ISwitchR r, IVec4I v, IDoubleI tolerance)`
    `boolean` | `eqW(IVec4I v)`
    `boolean` | `eqW(IVec4I v, double tolerance)`
    `IVec4I` | `flip()` alias of neg()
    `IVec4` | `get()`
    `IDoubleI` | `getW()`
    `IDoubleI` | `getX()`
    `IDoubleI` | `getY()`
    `IDoubleI` | `getZ()`
    `IVec4I` | `len(double l)` setting length
    `IVec4I` | `len(IDoubleI l)` setting length
    `IVec4I` | `mid(double vx, double vy, double vz)` create a new instance of midpoint
    `IVec4I` | `mid(IVecI v)` create a new instance of midpoint
    `IVec4I` | `mirror(double planeX, double planeY, double planeZ)` alias of ref
    `IVec4I` | `mirror(double centerX, double centerY, double centerZ, double planeX, double planeY, double planeZ)` alias of ref
    `IVec4I` | `mirror(IVecI planeDir)` alias of ref
    `IVec4I` | `mirror(IVecI center, IVecI planeDir)` alias of ref
    `IVec4I` | `mul(double v)`
    `IVec4I` | `mul(IDoubleI v)`
    `IVec4I` | `mv(double x, double y, double z)` mv() is alias of add()
    `IVec4I` | `mv(IDoubleI x, IDoubleI y, IDoubleI z)` mv() is alias of add()
    `IVec4I` | `mv(IVecI v)` mv() is alias of add()
    `IVec4I` | `neg()`
    `IVec4I` | `nml(double vx, double vy, double vz)` alias of cross
    `IVec4I` | `nml(double vx1, double vy1, double vz1, double vx2, double vy2, double vz2)` create normal vector from 3 points of self, pt1 and pt2
    `IVec4I` | `nml(IVecI v)` alias of cross
    `IVec4I` | `nml(IVecI pt1, IVecI pt2)` create normal vector from 3 points of self, pt1 and pt2
    `IVec4I` | `ref(double planeX, double planeY, double planeZ)` reflect(mirror) 3 dimensionally to the other side of the plane
    `IVec4I` | `ref(double centerX, double centerY, double centerZ, double planeX, double planeY, double planeZ)` reflect(mirror) 3 dimensionally to the other side of the plane
    `IVec4I` | `ref(IVecI planeDir)` reflect(mirror) 3 dimensionally to the other side of the plane
    `IVec4I` | `ref(IVecI center, IVecI planeDir)` reflect(mirror) 3 dimensionally to the other side of the plane
    `IVec4I` | `rev()` alias of neg()
    `IVec4I` | `rot(double angle)` rotation on xy-plane
    `IVec4I` | `rot(double vx, double vy, double vz, double angle)` rotation around axis
    `IVec4I` | `rot(double centerX, double centerY, double centerZ, double axisX, double axisY, double axisZ, double angle)` rotation around axis and center
    `IVec4I` | `rot(IDoubleI angle)` rotation on xy-plane
    `IVec4I` | `rot(IVecI axis, double angle)` rotation around axis
    `IVec4I` | `rot(IVecI axis, IDoubleI angle)` rotation around axis
    `IVec4I` | `rot(IVecI axis, IVecI destDir)` rotation around axis towards destination direction
    `IVec4I` | `rot(IVecI center, IVecI axis, double angle)` rotation around axis and center
    `IVec4I` | `rot(IVecI center, IVecI axis, IDoubleI angle)` rotation around axis and center
    `IVec4I` | `rot(IVecI center, IVecI axis, IVecI destPt)` rotation around axis and center towards destination point
    `IVec4I` | `rot2(double angle)` rotation on xy-plane; alias of rot(double)
    `IVec4I` | `rot2(double centerX, double centerY, double angle)` rotation on xy-plane at center
    `IVec4I` | `rot2(IDoubleI angle)` rotation on xy-plane; alias of rot(IDoubleI)
    `IVec4I` | `rot2(IVecI destDir)` rotation on xy-plane towards destination direction
    `IVec4I` | `rot2(IVecI center, double angle)` rotation on xy-plane at center
    `IVec4I` | `rot2(IVecI center, IDoubleI angle)` rotation on xy-plane at center
    `IVec4I` | `rot2(IVecI center, IVecI destPt)` rotation on xy-plane at center towards destination point
    `IVec4I` | `scale(double f)` alias of mul
    `IVec4I` | `scale(double centerX, double centerY, double centerZ, double f)` scale around center
    `IVec4I` | `scale(IDoubleI f)` alias of mul
    `IVec4I` | `scale(IVecI center, double f)` scale around center
    `IVec4I` | `scale(IVecI center, IDoubleI f)` scale around center
    `IVec4I` | `scale1d(double axisX, double axisY, double axisZ, double f)` scale only in 1 direction
    `IVec4I` | `scale1d(double centerX, double centerY, double centerZ, double axisX, double axisY, double axisZ, double f)` scale only in 1 direction from a center
    `IVec4I` | `scale1d(IVecI axis, double f)` scale only in 1 direction
    `IVec4I` | `scale1d(IVecI axis, IDoubleI f)` scale only in 1 direction
    `IVec4I` | `scale1d(IVecI center, IVecI axis, double f)` scale only in 1 direction from a center
    `IVec4I` | `scale1d(IVecI center, IVecI axis, IDoubleI f)` scale only in 1 direction from a center
    `IVec4I` | `set(double x, double y, double z)`
    `IVec4I` | `set(double x, double y, double z, double w)`
    `IVec4I` | `set(IDoubleI x, IDoubleI y, IDoubleI z)`
    `IVec4I` | `set(IDoubleI x, IDoubleI y, IDoubleI z, IDoubleI w)`
    `IVec4I` | `set(IVec4I v)`
    `IVec4I` | `set(IVecI v)`
    `IVec4I` | `set(IVecI v, double w)`
    `IVec4I` | `set(IVecI v, IDoubleI w)`
    `IVec4I` | `shear(double sxy, double syx, double syz, double szy, double szx, double sxz)` shear operation
    `IVec4I` | `shear(IDoubleI sxy, IDoubleI syx, IDoubleI syz, IDoubleI szy, IDoubleI szx, IDoubleI sxz)` shear operation
    `IVec4I` | `shear(IVecI center, double sxy, double syx, double syz, double szy, double szx, double sxz)` shear operation
    `IVec4I` | `shear(IVecI center, IDoubleI sxy, IDoubleI syx, IDoubleI syz, IDoubleI szy, IDoubleI szx, IDoubleI sxz)` shear operation
    `IVec4I` | `shearXY(double sxy, double syx)` shear operation on XY
    `IVec4I` | `shearXY(IDoubleI sxy, IDoubleI syx)` shear operation on XY
    `IVec4I` | `shearXY(IVecI center, double sxy, double syx)` shear operation on XY
    `IVec4I` | `shearXY(IVecI center, IDoubleI sxy, IDoubleI syx)` shear operation on XY
    `IVec4I` | `shearYZ(double syz, double szy)` shear operation on YZ
    `IVec4I` | `shearYZ(IDoubleI syz, IDoubleI szy)` shear operation on YZ
    `IVec4I` | `shearYZ(IVecI center, double syz, double szy)` shear operation on YZ
    `IVec4I` | `shearYZ(IVecI center, IDoubleI syz, IDoubleI szy)` shear operation on YZ
    `IVec4I` | `shearZX(double szx, double sxz)` shear operation on ZX
    `IVec4I` | `shearZX(IDoubleI szx, IDoubleI sxz)` shear operation on ZX
    `IVec4I` | `shearZX(IVecI center, double szx, double sxz)` shear operation on ZX
    `IVec4I` | `shearZX(IVecI center, IDoubleI szx, IDoubleI sxz)` shear operation on ZX
    `IVec4I` | `sub(IVecI v)`
    `IVec4I` | `sum(double vx, double vy, double vz)` create a new instance of total summation
    `IVec4I` | `sum(IVecI... v)` create a new instance of total summation
    `IVec4I` | `sum(IVecI v)` create a new instance of total summation
    `IVec4I` | `sum(IVecI v2, double w2)` create a new instance of weighted sum
    `IVec4I` | `sum(IVecI v2, double w1, double w2)` create a new instance of weighted sum
    `IVec4I` | `sum(IVecI v2, IDoubleI w2)` create a new instance of weighted sum
    `IVec4I` | `sum(IVecI v2, IDoubleI w1, IDoubleI w2)` create a new instance of weighted sum
    `IVec2I` | `to2d()`
    `IVecI` | `to3d()`
    `IVec4I` | `transform(IMatrix3I mat)` transform with a transformation matrix
    `IVec4I` | `transform(IMatrix4I mat)` transform with a transformation matrix
    `IVec4I` | `transform(IVecI xvec, IVecI yvec, IVecI zvec)` transform with a transformation vectors
    `IVec4I` | `transform(IVecI xvec, IVecI yvec, IVecI zvec, IVecI translate)` transform with a transformation vectors
    `IVec4I` | `translate(double x, double y, double z)` alias of add()
    `IVec4I` | `translate(IDoubleI x, IDoubleI y, IDoubleI z)` alias of add()
    `IVec4I` | `translate(IVecI v)` alias of add()
    `IVec4I` | `unit()` unitize
    `double` | `w()` getting w component
    `IVec4I` | `w(double vz)` setting w component
    `IVec4I` | `w(IDoubleI vz)` setting w component
    `double` | `w(ISwitchE e)` getting z component
    `IDoubleI` | `w(ISwitchR r)` getting z component
    `IVec4I` | `w(IVec4I v)` setting w component by w component of input vector
    `double` | `x()` getting x component
    `IVec4I` | `x(double vx)` setting x component
    `IVec4I` | `x(IDoubleI vx)` setting x component
    `double` | `x(ISwitchE e)` getting x component
    `IDoubleI` | `x(ISwitchR r)` getting x component
    `IVec4I` | `x(IVec2I v)` setting x component by x component of input vector
    `IVec4I` | `x(IVecI v)` setting x component by x component of input vector
    `double` | `y()` getting y component
    `IVec4I` | `y(double vy)` setting y component
    `IVec4I` | `y(IDoubleI vy)` setting y component
    `double` | `y(ISwitchE e)` getting y component
    `IDoubleI` | `y(ISwitchR r)` getting y component
    `IVec4I` | `y(IVec2I v)` setting y component by y component of input vector
    `IVec4I` | `y(IVecI v)` setting y component by y component of input vector
    `double` | `z()` getting z component
    `IVec4I` | `z(double vz)` setting z component
    `IVec4I` | `z(IDoubleI vz)` setting z component
    `double` | `z(ISwitchE e)` getting z component
    `IDoubleI` | `z(ISwitchR r)` getting z component
    `IVec4I` | `z(IVecI v)` setting z component by z component of input vector
    `IVec4I` | `zero()` setting all zero

    - ### Methods inherited from interface igeo.IVecI

      `add, add, angle, angle, angle, angle, angle, angle, angle, angle, 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, isValid, len, len, len, len2, len2, len2, sub, sub, to2d, to2d, to2d, to4d, to4d, to4d`

- - ### Method Detail

    - #### x

          double x()

      getting x component
      Specified by:
        `x` in interface `IVecI`

    - #### y

          double y()

      getting y component
      Specified by:
        `y` in interface `IVecI`

    - #### z

          double z()

      getting z component
      Specified by:
        `z` in interface `IVecI`

    - #### w

          double w()

      getting w component

    - #### x

          IVec4I x(double vx)

      setting x component
      Specified by:
        `x` in interface `IVecI`

    - #### y

          IVec4I y(double vy)

      setting y component
      Specified by:
        `y` in interface `IVecI`

    - #### z

          IVec4I z(double vz)

      setting z component
      Specified by:
        `z` in interface `IVecI`

    - #### w

          IVec4I w(double vz)

      setting w component

    - #### x

          IVec4I x(IDoubleI vx)

      setting x component
      Specified by:
        `x` in interface `IVecI`

    - #### y

          IVec4I y(IDoubleI vy)

      setting y component
      Specified by:
        `y` in interface `IVecI`

    - #### z

          IVec4I z(IDoubleI vz)

      setting z component
      Specified by:
        `z` in interface `IVecI`

    - #### w

          IVec4I w(IDoubleI vz)

      setting w component

    - #### x

          IVec4I x(IVecI v)

      setting x component by x component of input vector
      Specified by:
        `x` in interface `IVecI`

    - #### y

          IVec4I y(IVecI v)

      setting y component by y component of input vector
      Specified by:
        `y` in interface `IVecI`

    - #### z

          IVec4I z(IVecI v)

      setting z component by z component of input vector
      Specified by:
        `z` in interface `IVecI`

    - #### w

          IVec4I w(IVec4I v)

      setting w component by w component of input vector

    - #### x

          IVec4I x(IVec2I v)

      setting x component by x component of input vector
      Specified by:
        `x` in interface `IVecI`

    - #### y

          IVec4I y(IVec2I v)

      setting y component by y component of input vector
      Specified by:
        `y` in interface `IVecI`

    - #### x

          double x(ISwitchE e)

      getting x component
      Specified by:
        `x` in interface `IVecI`

    - #### y

          double y(ISwitchE e)

      getting y component
      Specified by:
        `y` in interface `IVecI`

    - #### z

          double z(ISwitchE e)

      getting z component
      Specified by:
        `z` in interface `IVecI`

    - #### w

          double w(ISwitchE e)

      getting z component

    - #### x

          IDoubleI x(ISwitchR r)

      getting x component
      Specified by:
        `x` in interface `IVecI`

    - #### y

          IDoubleI y(ISwitchR r)

      getting y component
      Specified by:
        `y` in interface `IVecI`

    - #### z

          IDoubleI z(ISwitchR r)

      getting z component
      Specified by:
        `z` in interface `IVecI`

    - #### w

          IDoubleI w(ISwitchR r)

      getting z component

    - #### get

          IVec4 get()

      Specified by:
        `get` in interface `IParameter`
      Specified by:
        `get` in interface `IVec4Op`
      Specified by:
        `get` in interface `IVecI`
      Specified by:
        `get` in interface `IVecOp`

    - #### dup

          IVec4I 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`

    - #### to2d

          IVec2I to2d()

      Specified by:
        `to2d` in interface `IVecI`

    - #### to3d

          IVecI to3d()

    - #### getX

          IDoubleI getX()

      Specified by:
        `getX` in interface `IVecI`

    - #### getY

          IDoubleI getY()

      Specified by:
        `getY` in interface `IVecI`

    - #### getZ

          IDoubleI getZ()

      Specified by:
        `getZ` in interface `IVecI`

    - #### getW

          IDoubleI getW()

    - #### set

          IVec4I set(double x,
                     double y,
                     double z,
                     double w)

    - #### set

          IVec4I set(IDoubleI x,
                     IDoubleI y,
                     IDoubleI z,
                     IDoubleI w)

    - #### set

          IVec4I set(IVecI v,
                     double w)

    - #### set

          IVec4I set(IVecI v,
                     IDoubleI w)

    - #### set

          IVec4I set(IVec4I v)

    - #### set

          IVec4I set(IVecI v)

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

    - #### set

          IVec4I set(double x,
                     double y,
                     double z)

      Specified by:
        `set` in interface `IVecI`

    - #### set

          IVec4I set(IDoubleI x,
                     IDoubleI y,
                     IDoubleI z)

      Specified by:
        `set` in interface `IVecI`

    - #### add

          IVec4I add(IVecI v)

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

    - #### sub

          IVec4I sub(IVecI v)

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

    - #### mul

          IVec4I mul(IDoubleI v)

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

    - #### mul

          IVec4I mul(double v)

      Specified by:
        `mul` in interface `ITransformable`
      Specified by:
        `mul` in interface `IVecI`

    - #### div

          IVec4I div(IDoubleI v)

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

    - #### div

          IVec4I div(double v)

      Specified by:
        `div` in interface `ITransformable`
      Specified by:
        `div` in interface `IVecI`

    - #### neg

          IVec4I neg()

      Specified by:
        `neg` in interface `ITransformable`
      Specified by:
        `neg` in interface `IVecI`

    - #### rev

          IVec4I rev()

      alias of neg()
      Specified by:
        `rev` in interface `IVecI`

    - #### flip

          IVec4I flip()

      alias of neg()
      Specified by:
        `flip` in interface `ITransformable`
      Specified by:
        `flip` in interface `IVecI`

    - #### zero

          IVec4I zero()

      setting all zero
      Specified by:
        `zero` in interface `IArithmeticVal<IVecI,IDoubleI>`
      Specified by:
        `zero` in interface `IVecI`

    - #### add

          IVec4I add(IVecI v,
                     double f)

      scale add
      Specified by:
        `add` in interface `ITransformable`
      Specified by:
        `add` in interface `IVecI`

    - #### add

          IVec4I add(IVecI v,
                     IDoubleI f)

      scale add
      Specified by:
        `add` in interface `ITransformable`
      Specified by:
        `add` in interface `IVecI`

    - #### add

          IVec4I add(double f,
                     IVecI v)

      scale add alias
      Specified by:
        `add` in interface `ITransformable`
      Specified by:
        `add` in interface `IVecI`

    - #### add

          IVec4I add(IDoubleI f,
                     IVecI v)

      scale add alias
      Specified by:
        `add` in interface `ITransformable`
      Specified by:
        `add` in interface `IVecI`

    - #### len

          IVec4I len(IDoubleI l)

      setting length
      Specified by:
        `len` in interface `IVecI`

    - #### len

          IVec4I len(double l)

      setting length
      Specified by:
        `len` in interface `IVecI`

    - #### unit

          IVec4I unit()

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

    - #### cross

          IVec4I cross(IVecI v)

      Description copied from interface: `IVecI`
      cross product, creating a new instance
      Specified by:
        `cross` in interface `IVecI`

    - #### cross

          IVec4I cross(double vx,
                       double vy,
                       double vz)

      Description copied from interface: `IVecI`
      cross product, creating a new instance
      Specified by:
        `cross` in interface `IVecI`

    - #### eqW

          boolean eqW(IVec4I v)

    - #### eqW

          boolean eqW(double vw)

    - #### eqW

          boolean eqW(ISwitchE e,
                      IVec4I v)

    - #### eqW

          IBoolI eqW(ISwitchR r,
                     IVec4I v)

    - #### eqW

          boolean eqW(IVec4I v,
                      double tolerance)

    - #### eqW

          boolean eqW(double vw,
                      double tolerance)

    - #### eqW

          boolean eqW(ISwitchE e,
                      IVec4I v,
                      double tolerance)

    - #### eqW

          IBoolI eqW(ISwitchR r,
                     IVec4I v,
                     IDoubleI tolerance)

    - #### rot

          IVec4I rot(IDoubleI angle)

      rotation on xy-plane
      Specified by:
        `rot` in interface `ITransformable`
      Specified by:
        `rot` in interface `IVecI`

    - #### rot

          IVec4I rot(double angle)

      rotation on xy-plane
      Specified by:
        `rot` in interface `ITransformable`
      Specified by:
        `rot` in interface `IVecI`

    - #### rot

          IVec4I rot(IVecI axis,
                     IDoubleI angle)

      rotation around axis
      Specified by:
        `rot` in interface `ITransformable`
      Specified by:
        `rot` in interface `IVecI`

    - #### rot

          IVec4I rot(IVecI axis,
                     double angle)

      rotation around axis
      Specified by:
        `rot` in interface `ITransformable`
      Specified by:
        `rot` in interface `IVecI`

    - #### rot

          IVec4I rot(double vx,
                     double vy,
                     double vz,
                     double angle)

      rotation around axis
      Specified by:
        `rot` in interface `IVecI`

    - #### rot

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

      rotation around axis and center
      Specified by:
        `rot` in interface `ITransformable`
      Specified by:
        `rot` in interface `IVecI`

    - #### rot

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

      rotation around axis and center
      Specified by:
        `rot` in interface `ITransformable`
      Specified by:
        `rot` in interface `IVecI`

    - #### rot

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

      rotation around axis and center
      Specified by:
        `rot` in interface `IVecI`

    - #### rot

          IVec4I rot(IVecI axis,
                     IVecI destDir)

      rotation around axis towards destination direction
      Specified by:
        `rot` in interface `ITransformable`
      Specified by:
        `rot` in interface `IVecI`

    - #### rot

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

      rotation around axis and center towards destination point
      Specified by:
        `rot` in interface `ITransformable`
      Specified by:
        `rot` in interface `IVecI`

    - #### rot2

          IVec4I rot2(IDoubleI angle)

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

    - #### rot2

          IVec4I rot2(double angle)

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

    - #### rot2

          IVec4I rot2(IVecI center,
                      IDoubleI angle)

      rotation on xy-plane at center
      Specified by:
        `rot2` in interface `ITransformable`
      Specified by:
        `rot2` in interface `IVecI`

    - #### rot2

          IVec4I rot2(IVecI center,
                      double angle)

      rotation on xy-plane at center
      Specified by:
        `rot2` in interface `ITransformable`
      Specified by:
        `rot2` in interface `IVecI`

    - #### rot2

          IVec4I rot2(double centerX,
                      double centerY,
                      double angle)

      rotation on xy-plane at center
      Specified by:
        `rot2` in interface `IVecI`

    - #### rot2

          IVec4I rot2(IVecI destDir)

      rotation on xy-plane towards destination direction
      Specified by:
        `rot2` in interface `ITransformable`
      Specified by:
        `rot2` in interface `IVecI`

    - #### rot2

          IVec4I rot2(IVecI center,
                      IVecI destPt)

      rotation on xy-plane at center towards destination point
      Specified by:
        `rot2` in interface `ITransformable`
      Specified by:
        `rot2` in interface `IVecI`

    - #### scale

          IVec4I scale(IDoubleI f)

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

    - #### scale

          IVec4I scale(double f)

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

    - #### scale

          IVec4I scale(IVecI center,
                       IDoubleI f)

      scale around center
      Specified by:
        `scale` in interface `ITransformable`
      Specified by:
        `scale` in interface `IVecI`

    - #### scale

          IVec4I scale(IVecI center,
                       double f)

      scale around center
      Specified by:
        `scale` in interface `ITransformable`
      Specified by:
        `scale` in interface `IVecI`

    - #### scale

          IVec4I scale(double centerX,
                       double centerY,
                       double centerZ,
                       double f)

      scale around center
      Specified by:
        `scale` in interface `IVecI`

    - #### scale1d

          IVec4I scale1d(IVecI axis,
                         double f)

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

    - #### scale1d

          IVec4I scale1d(IVecI axis,
                         IDoubleI f)

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

    - #### scale1d

          IVec4I scale1d(double axisX,
                         double axisY,
                         double axisZ,
                         double f)

      scale only in 1 direction
      Specified by:
        `scale1d` in interface `IVecI`

    - #### scale1d

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

      scale only in 1 direction from a center
      Specified by:
        `scale1d` in interface `ITransformable`
      Specified by:
        `scale1d` in interface `IVecI`

    - #### scale1d

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

      scale only in 1 direction from a center
      Specified by:
        `scale1d` in interface `ITransformable`
      Specified by:
        `scale1d` in interface `IVecI`

    - #### scale1d

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

      scale only in 1 direction from a center
      Specified by:
        `scale1d` in interface `IVecI`

    - #### ref

          IVec4I 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`

    - #### ref

          IVec4I ref(double planeX,
                     double planeY,
                     double planeZ)

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

    - #### ref

          IVec4I 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`

    - #### ref

          IVec4I 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`

    - #### mirror

          IVec4I mirror(IVecI planeDir)

      alias of ref
      Specified by:
        `mirror` in interface `ITransformable`
      Specified by:
        `mirror` in interface `IVecI`

    - #### mirror

          IVec4I mirror(double planeX,
                        double planeY,
                        double planeZ)

      alias of ref
      Specified by:
        `mirror` in interface `IVecI`

    - #### mirror

          IVec4I mirror(IVecI center,
                        IVecI planeDir)

      alias of ref
      Specified by:
        `mirror` in interface `ITransformable`
      Specified by:
        `mirror` in interface `IVecI`

    - #### mirror

          IVec4I mirror(double centerX,
                        double centerY,
                        double centerZ,
                        double planeX,
                        double planeY,
                        double planeZ)

      alias of ref
      Specified by:
        `mirror` in interface `IVecI`

    - #### shear

          IVec4I 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`

    - #### shear

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

      shear operation
      Specified by:
        `shear` in interface `ITransformable`
      Specified by:
        `shear` in interface `IVecI`

    - #### shear

          IVec4I shear(IVecI center,
                       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`

    - #### shear

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

      shear operation
      Specified by:
        `shear` in interface `ITransformable`
      Specified by:
        `shear` in interface `IVecI`

    - #### shearXY

          IVec4I shearXY(double sxy,
                         double syx)

      shear operation on XY
      Specified by:
        `shearXY` in interface `ITransformable`
      Specified by:
        `shearXY` in interface `IVecI`

    - #### shearXY

          IVec4I shearXY(IDoubleI sxy,
                         IDoubleI syx)

      shear operation on XY
      Specified by:
        `shearXY` in interface `ITransformable`
      Specified by:
        `shearXY` in interface `IVecI`

    - #### shearXY

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

      shear operation on XY
      Specified by:
        `shearXY` in interface `ITransformable`
      Specified by:
        `shearXY` in interface `IVecI`

    - #### shearXY

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

      shear operation on XY
      Specified by:
        `shearXY` in interface `ITransformable`
      Specified by:
        `shearXY` in interface `IVecI`

    - #### shearYZ

          IVec4I shearYZ(double syz,
                         double szy)

      shear operation on YZ
      Specified by:
        `shearYZ` in interface `ITransformable`
      Specified by:
        `shearYZ` in interface `IVecI`

    - #### shearYZ

          IVec4I shearYZ(IDoubleI syz,
                         IDoubleI szy)

      shear operation on YZ
      Specified by:
        `shearYZ` in interface `ITransformable`
      Specified by:
        `shearYZ` in interface `IVecI`

    - #### shearYZ

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

      shear operation on YZ
      Specified by:
        `shearYZ` in interface `ITransformable`
      Specified by:
        `shearYZ` in interface `IVecI`

    - #### shearYZ

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

      shear operation on YZ
      Specified by:
        `shearYZ` in interface `ITransformable`
      Specified by:
        `shearYZ` in interface `IVecI`

    - #### shearZX

          IVec4I shearZX(double szx,
                         double sxz)

      shear operation on ZX
      Specified by:
        `shearZX` in interface `ITransformable`
      Specified by:
        `shearZX` in interface `IVecI`

    - #### shearZX

          IVec4I shearZX(IDoubleI szx,
                         IDoubleI sxz)

      shear operation on ZX
      Specified by:
        `shearZX` in interface `ITransformable`
      Specified by:
        `shearZX` in interface `IVecI`

    - #### shearZX

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

      shear operation on ZX
      Specified by:
        `shearZX` in interface `ITransformable`
      Specified by:
        `shearZX` in interface `IVecI`

    - #### shearZX

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

      shear operation on ZX
      Specified by:
        `shearZX` in interface `ITransformable`
      Specified by:
        `shearZX` in interface `IVecI`

    - #### translate

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

      alias of add()
      Specified by:
        `translate` in interface `ITransformable`
      Specified by:
        `translate` in interface `IVecI`

    - #### translate

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

      alias of add()
      Specified by:
        `translate` in interface `ITransformable`
      Specified by:
        `translate` in interface `IVecI`

    - #### translate

          IVec4I translate(IVecI v)

      alias of add()
      Specified by:
        `translate` in interface `ITransformable`
      Specified by:
        `translate` in interface `IVecI`

    - #### transform

          IVec4I transform(IMatrix3I mat)

      transform with a transformation matrix
      Specified by:
        `transform` in interface `ITransformable`
      Specified by:
        `transform` in interface `IVecI`

    - #### transform

          IVec4I transform(IMatrix4I mat)

      transform with a transformation matrix
      Specified by:
        `transform` in interface `ITransformable`
      Specified by:
        `transform` in interface `IVecI`

    - #### transform

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

      transform with a transformation vectors
      Specified by:
        `transform` in interface `ITransformable`
      Specified by:
        `transform` in interface `IVecI`

    - #### transform

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

      transform with a transformation vectors
      Specified by:
        `transform` in interface `ITransformable`
      Specified by:
        `transform` in interface `IVecI`

    - #### mv

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

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

    - #### mv

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

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

    - #### mv

          IVec4I mv(IVecI v)

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

    - #### cp

          IVec4I 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`

    - #### cp

          IVec4I 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`

    - #### cp

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

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

    - #### cp

          IVec4I cp(IVecI v)

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

    - #### dif

          IVec4I dif(IVecI v)

      create a new instance of difference
      Specified by:
        `dif` in interface `IVecI`

    - #### dif

          IVec4I dif(double vx,
                     double vy,
                     double vz)

      create a new instance of difference
      Specified by:
        `dif` in interface `IVecI`

    - #### diff

          IVec4I diff(IVecI v)

      alias of dif
      Specified by:
        `diff` in interface `IVecI`

    - #### diff

          IVec4I diff(double vx,
                      double vy,
                      double vz)

      alias of dif
      Specified by:
        `diff` in interface `IVecI`

    - #### mid

          IVec4I mid(IVecI v)

      create a new instance of midpoint
      Specified by:
        `mid` in interface `IVecI`

    - #### mid

          IVec4I mid(double vx,
                     double vy,
                     double vz)

      create a new instance of midpoint
      Specified by:
        `mid` in interface `IVecI`

    - #### sum

          IVec4I sum(IVecI v)

      create a new instance of total summation
      Specified by:
        `sum` in interface `IVecI`

    - #### sum

          IVec4I sum(double vx,
                     double vy,
                     double vz)

      create a new instance of total summation
      Specified by:
        `sum` in interface `IVecI`

    - #### sum

          IVec4I sum(IVecI... v)

      create a new instance of total summation
      Specified by:
        `sum` in interface `IVecI`

    - #### bisect

          IVec4I bisect(IVecI v)

      create a new instance of bisector
      Specified by:
        `bisect` in interface `IVecI`

    - #### bisect

          IVec4I bisect(double vx,
                        double vy,
                        double vz)

      create a new instance of bisector
      Specified by:
        `bisect` in interface `IVecI`

    - #### sum

          IVec4I sum(IVecI v2,
                     double w1,
                     double w2)

      create a new instance of weighted sum
      Specified by:
        `sum` in interface `IVecI`

    - #### sum

          IVec4I sum(IVecI v2,
                     double w2)

      create a new instance of weighted sum
      Specified by:
        `sum` in interface `IVecI`

    - #### sum

          IVec4I sum(IVecI v2,
                     IDoubleI w1,
                     IDoubleI w2)

      create a new instance of weighted sum
      Specified by:
        `sum` in interface `IVecI`

    - #### sum

          IVec4I sum(IVecI v2,
                     IDoubleI w2)

      create a new instance of weighted sum
      Specified by:
        `sum` in interface `IVecI`

    - #### nml

          IVec4I nml(IVecI v)

      alias of cross
      Specified by:
        `nml` in interface `IVecI`

    - #### nml

          IVec4I nml(double vx,
                     double vy,
                     double vz)

      alias of cross
      Specified by:
        `nml` in interface `IVecI`

    - #### nml

          IVec4I nml(IVecI pt1,
                     IVecI pt2)

      create normal vector from 3 points of self, pt1 and pt2
      Specified by:
        `nml` in interface `IVecI`

    - #### nml

          IVec4I nml(double vx1,
                     double vy1,
                     double vz1,
                     double vx2,
                     double vy2,
                     double vz2)

      create normal vector from 3 points of self, pt1 and pt2
      Specified by:
        `nml` in interface `IVecI`