igeo

## Class IVec4R

- java.lang.Object
- - igeo.IParameterObject
  - - igeo.IVec4R

- All Implemented Interfaces:
    IArithmeticVal<IVecI,IDoubleI>, IParameter, IReferenceParameter, ISubobject, ITransformable, IVal, IVec4I, IVec4Op, IVecI, IVecOp

      public class IVec4R
      extends IParameterObject
      implements IVec4I, IVecI, IReferenceParameter

  Reference class of 4 dimensional vector to be used as IParameterObject.
  Author:
    Satoru Sugihara

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Class and Description
    --- | ---
    `static class` | `IVec4R.Add`
    `static class` | `IVec4R.Cross`
    `static class` | `IVec4R.Dist`
    `static class` | `IVec4R.Dist2`
    `static class` | `IVec4R.Div`
    `static class` | `IVec4R.Eq`
    `static class` | `IVec4R.EqW`
    `static class` | `IVec4R.EqX`
    `static class` | `IVec4R.EqY`
    `static class` | `IVec4R.EqZ`
    `static class` | `IVec4R.FromVec`
    `static class` | `IVec4R.FromVecAndW`
    `static class` | `IVec4R.FromW`
    `static class` | `IVec4R.FromX`
    `static class` | `IVec4R.FromXYZ`
    `static class` | `IVec4R.FromXYZW`
    `static class` | `IVec4R.FromY`
    `static class` | `IVec4R.FromZ`
    `static class` | `IVec4R.Mul`
    `static class` | `IVec4R.Neg`
    `static class` | `IVec4R.Ref`
    `static class` | `IVec4R.Rot`
    `static class` | `IVec4R.Rot2`
    `static class` | `IVec4R.Scale1d`
    `static class` | `IVec4R.SetLen`
    `static class` | `IVec4R.Shear`
    `static class` | `IVec4R.Sub`
    `static class` | `IVec4R.ToVec`
    `static class` | `IVec4R.ToVec2`
    `static class` | `IVec4R.ToVec2WithAxis`
    `static class` | `IVec4R.ToVec2WithAxisAndOrigin`
    `static class` | `IVec4R.ToVec2WithProjection`
    `static class` | `IVec4R.Transform3`
    `static class` | `IVec4R.Transform4`
    `static class` | `IVec4R.TransformVec3`
    `static class` | `IVec4R.TransformVec4`
    `static class` | `IVec4R.Unit`
    `static class` | `IVec4R.W`
    `static class` | `IVec4R.X`
    `static class` | `IVec4R.Y`
    `static class` | `IVec4R.Z`

  - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `protected IVec4Op` | `op`

    - ### Fields inherited from class igeo.IParameterObject

      `parent`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `IVec4R(double x, double y, double z)`
    `IVec4R(double x, double y, double z, double w)`
    `IVec4R(IDoubleI x, IDoubleI y, IDoubleI z)`
    `IVec4R(IDoubleI x, IDoubleI y, IDoubleI z, IDoubleI w)`
    `IVec4R(IServerI s, double x, double y, double z)`
    `IVec4R(IServerI s, double x, double y, double z, double w)`
    `IVec4R(IServerI s, IDoubleI x, IDoubleI y, IDoubleI z)`
    `IVec4R(IServerI s, IDoubleI x, IDoubleI y, IDoubleI z, IDoubleI w)`
    `IVec4R(IServerI s, IVec4Op v)`
    `IVec4R(IServerI s, IVecI v)`
    `IVec4R(IServerI s, IVecI v, double w)`
    `IVec4R(IServerI s, IVecI v, IDoubleI w)`
    `IVec4R(IVec4Op v)`
    `IVec4R(IVecI v)`
    `IVec4R(IVecI v, double w)`
    `IVec4R(IVecI v, IDoubleI w)`

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `IVec4R` | `add(double x, double y, double z)`
    `IVec4R` | `add(double f, IVecI v)` scale add alias
    `IVec4R` | `add(IDoubleI x, IDoubleI y, IDoubleI z)`
    `IVec4R` | `add(IDoubleI f, IVecI v)` scale add alias
    `IVec4R` | `add(IVecI u)`
    `IVec4R` | `add(IVecI v, double f)` scale add
    `IVec4R` | `add(IVecI v, IDoubleI f)` scale add
    `double` | `angle(double ux, double uy, double uz)` get angle between two vector from 0 to Pi
    `double` | `angle(double ux, double uy, double uz, double axisX, double axisY, double axisZ)`
    `double` | `angle(ISwitchE e, IVecI u)` get angle between two vector from 0 to Pi
    `double` | `angle(ISwitchE e, IVecI u, IVecI axis)`
    `IDoubleR` | `angle(ISwitchR r, IVecI u)` get angle between two vector from 0 to Pi
    `IDoubleR` | `angle(ISwitchR r, IVecI u, IVecI axis)`
    `double` | `angle(IVecI u)` get angle between two vector from 0 to Pi
    `double` | `angle(IVecI u, IVecI axis)`
    `IVec4R` | `bisect(double vx, double vy, double vz)` create a new instance of bisector
    `IVec4R` | `bisect(IVecI v)` create a new instance of bisector
    `IVec4R` | `cp()` cp() is alias of dup()
    `IVec4R` | `cp(double x, double y, double z)` cp() is alias of dup().add()
    `IVec4R` | `cp(IDoubleI x, IDoubleI y, IDoubleI z)` cp() is alias of dup().add()
    `IVec4R` | `cp(IVecI v)` cp() is alias of dup().add()
    `IVec4R` | `cross(double ux, double uy, double uz)` cross product, creating a new instance
    `IVec4R` | `cross(IVecI u)` cross now returns a new instance 2011/08/03
    `IVec4R` | `dif(double vx, double vy, double vz)` create a new instance of difference
    `IVec4R` | `dif(IVecI v)` create a new instance of difference
    `IVec4R` | `diff(double vx, double vy, double vz)` alias of dif
    `IVec4R` | `diff(IVecI v)` alias of dif
    `double` | `dist(double vx, double vy, double vz)` distance of two vectors
    `double` | `dist(ISwitchE e, IVecI v)` distance of two vectors
    `IDoubleR` | `dist(ISwitchR r, IVecI v)` distance of two vectors
    `double` | `dist(IVecI v)` distance of two vectors
    `double` | `dist2(double vx, double vy, double vz)` squared distance of two vectors
    `double` | `dist2(ISwitchE e, IVecI v)` squared distance of two vectors
    `IDoubleR` | `dist2(ISwitchR r, IVecI v)` squared distance of two vectors
    `double` | `dist2(IVecI v)` squared distance of two vectors
    `IVec4R` | `div(double u)`
    `IVec4R` | `div(IDoubleI u)`
    `double` | `dot(double ux, double uy, double uz)` dot product
    `double` | `dot(ISwitchE e, IVecI u)` dot product
    `IDoubleR` | `dot(ISwitchR r, IVecI u)` dot product
    `double` | `dot(IVecI u)` dot product
    `IVec4R` | `dup()` duplicate the instance
    `boolean` | `eq(double vx, double vy, double vz)` check whether location is same or not
    `boolean` | `eq(double vx, double vy, double vz, double tolerance)` check whether location is same or not with tolerance
    `boolean` | `eq(ISwitchE e, IVecI v)` check whether location is same or not
    `boolean` | `eq(ISwitchE e, IVecI v, double tolerance)` check whether location is same or not with tolerance
    `IBoolR` | `eq(ISwitchR r, IVecI v)` check whether location is same or not
    `IBoolR` | `eq(ISwitchR r, IVecI v, IDoubleI tolerance)` check whether location is same or not with tolerance
    `boolean` | `eq(IVecI v)` check whether location is same or not
    `boolean` | `eq(IVecI v, double tolerance)` check whether location is same or not with tolerance
    `boolean` | `eqW(double vw)`
    `boolean` | `eqW(double vw, double tolerance)`
    `boolean` | `eqW(ISwitchE e, IVec4I v)`
    `boolean` | `eqW(ISwitchE e, IVec4I v, double tolerance)`
    `IBoolR` | `eqW(ISwitchR r, IVec4I v)`
    `IBoolR` | `eqW(ISwitchR r, IVec4I v, IDoubleI tolerance)`
    `boolean` | `eqW(IVec4I v)`
    `boolean` | `eqW(IVec4I v, double tolerance)`
    `boolean` | `eqX(double vx)` check if same in X
    `boolean` | `eqX(double vx, double tolerance)` check if same in X with tolerance
    `boolean` | `eqX(ISwitchE e, IVecI v)` check if same in X
    `boolean` | `eqX(ISwitchE e, IVecI v, double tolerance)` check if same in X with tolerance
    `IBoolR` | `eqX(ISwitchR r, IVecI v)` check if same in X
    `IBoolR` | `eqX(ISwitchR r, IVecI v, IDoubleI tolerance)` check if same in X with tolerance
    `boolean` | `eqX(IVecI v)` check if same in X
    `boolean` | `eqX(IVecI v, double tolerance)` check if same in X with tolerance
    `boolean` | `eqY(double vy)` check if same in Y
    `boolean` | `eqY(double vy, double tolerance)` check if same in Y with tolerance
    `boolean` | `eqY(ISwitchE e, IVecI v)` check if same in Y
    `boolean` | `eqY(ISwitchE e, IVecI v, double tolerance)` check if same in Y with tolerance
    `IBoolR` | `eqY(ISwitchR r, IVecI v)` check if same in Y
    `IBoolR` | `eqY(ISwitchR r, IVecI v, IDoubleI tolerance)` check if same in Y with tolerance
    `boolean` | `eqY(IVecI v)` check if same in Y
    `boolean` | `eqY(IVecI v, double tolerance)` check if same in Y with tolerance
    `boolean` | `eqZ(double vz)` check if same in Z
    `boolean` | `eqZ(double vz, double tolerance)` check if same in Z with tolerance
    `boolean` | `eqZ(ISwitchE e, IVecI v)` check if same in Z
    `boolean` | `eqZ(ISwitchE e, IVecI v, double tolerance)` check if same in Z with tolerance
    `IBoolR` | `eqZ(ISwitchR r, IVecI v)` check if same in Z
    `IBoolR` | `eqZ(ISwitchR r, IVecI v, IDoubleI tolerance)` check if same in Z with tolerance
    `boolean` | `eqZ(IVecI v)` check if same in Z
    `boolean` | `eqZ(IVecI v, double tolerance)` check if same in Z with tolerance
    `IVec4R` | `flip()` alias of neg()
    `IVec4` | `get()`
    `IDoubleR` | `getW()`
    `IDoubleR` | `getX()`
    `IDoubleR` | `getY()`
    `IDoubleR` | `getZ()`
    `boolean` | `isValid()` checking x, y, and z is valid number (not Infinite, nor NaN).
    `double` | `len()` getting length of the vector
    `IVec4R` | `len(double l)` setting length
    `IVec4R` | `len(IDoubleI l)` setting length
    `double` | `len(ISwitchE e)` getting length of the vector
    `IDoubleR` | `len(ISwitchR r)` getting length of the vector
    `double` | `len2()` getting squared length of the vector
    `double` | `len2(ISwitchE e)` getting squared length of the vector
    `IDoubleR` | `len2(ISwitchR r)` getting squared length of the vector
    `IVec4R` | `mid(double vx, double vy, double vz)` create a new instance of midpoint
    `IVec4R` | `mid(IVecI v)` create a new instance of midpoint
    `IVec4R` | `mirror(double planeX, double planeY, double planeZ)` alias of ref
    `IVec4R` | `mirror(double centerX, double centerY, double centerZ, double planeX, double planeY, double planeZ)` alias of ref
    `IVec4R` | `mirror(IVecI planeDir)` alias of ref
    `IVec4R` | `mirror(IVecI center, IVecI planeDir)` alias of ref
    `IVec4R` | `mul(double u)`
    `IVec4R` | `mul(IDoubleI u)`
    `IVec4R` | `mv(double x, double y, double z)` mv() is alias of add()
    `IVec4R` | `mv(IDoubleI x, IDoubleI y, IDoubleI z)` mv() is alias of add()
    `IVec4R` | `mv(IVecI v)` mv() is alias of add()
    `IVec4R` | `neg()`
    `IVec4R` | `nml(double vx, double vy, double vz)` alias of cross.
    `IVec4R` | `nml(double vx1, double vy1, double vz1, double vx2, double vy2, double vz2)` create normal vector from 3 points of self, pt1 and pt2, not unitized
    `IVec4R` | `nml(IVecI v)` alias of cross.
    `IVec4R` | `nml(IVecI pt1, IVecI pt2)` create normal vector from 3 points of self, pt1 and pt2, not unitized
    `IVec4Op` | `operator()`
    `IVec4R` | `ref(double planeX, double planeY, double planeZ)` reflect(mirror) 3 dimensionally to the other side of the plane
    `IVec4R` | `ref(double centerX, double centerY, double centerZ, double planeX, double planeY, double planeZ)` reflect(mirror) 3 dimensionally to the other side of the plane
    `IVec4R` | `ref(IVecI planeDir)` reflect(mirror) 3 dimensionally to the other side of the plane
    `IVec4R` | `ref(IVecI center, IVecI planeDir)` reflect(mirror) 3 dimensionally to the other side of the plane
    `IVec4R` | `rev()` alias of neg()
    `IVec4R` | `rot(double angle)` rotation on xy-plane
    `IVec4R` | `rot(double axisX, double axisY, double axisZ, double angle)` rotation around axis
    `IVec4R` | `rot(double centerX, double centerY, double centerZ, double axisX, double axisY, double axisZ, double angle)` rotation around axis and center
    `IVec4R` | `rot(IDoubleI angle)` rotation on xy-plane
    `IVec4R` | `rot(IVecI axis, double angle)` rotation around axis
    `IVec4R` | `rot(IVecI axis, IDoubleI angle)` rotation around axis
    `IVec4R` | `rot(IVecI axis, IVecI destDir)` rotation around axis towards destination direction
    `IVec4R` | `rot(IVecI center, IVecI axis, double angle)` rotation around axis and center
    `IVec4R` | `rot(IVecI center, IVecI axis, IDoubleI angle)` rotation around axis and center
    `IVec4R` | `rot(IVecI center, IVecI axis, IVecI destPt)` rotation around axis and center towards destination point
    `IVec4R` | `rot2(double angle)` alias of rot(double)
    `IVec4R` | `rot2(double centerX, double centerY, double angle)` rotation on xy-plane at center
    `IVec4R` | `rot2(IDoubleI angle)` alias of rot(IDoubleI)
    `IVec4R` | `rot2(IVecI destDir)` rotation on xy-plane towards destination direction
    `IVec4R` | `rot2(IVecI center, double angle)` rotation on xy-plane at center
    `IVec4R` | `rot2(IVecI center, IDoubleI angle)` rotation on xy-plane at center
    `IVec4R` | `rot2(IVecI center, IVecI destPt)` rotation on xy-plane at center towards destination point
    `IVec4R` | `scale(double f)` alias of mul
    `IVec4R` | `scale(double centerX, double centerY, double centerZ, double f)` scale around center
    `IVec4R` | `scale(IDoubleI f)` alias of mul
    `IVec4R` | `scale(IVecI center, double f)` scale around center
    `IVec4R` | `scale(IVecI center, IDoubleI f)` scale around center
    `IVec4R` | `scale1d(double axisX, double axisY, double axisZ, double f)` scale only in 1 direction
    `IVec4R` | `scale1d(double centerX, double centerY, double centerZ, double axisX, double axisY, double axisZ, double f)` scale only in 1 direction from a center
    `IVec4R` | `scale1d(IVecI axis, double f)` scale only in 1 direction
    `IVec4R` | `scale1d(IVecI axis, IDoubleI f)` scale only in 1 direction
    `IVec4R` | `scale1d(IVecI center, IVecI axis, double f)` scale only in 1 direction from a center
    `IVec4R` | `scale1d(IVecI center, IVecI axis, IDoubleI f)` scale only in 1 direction from a center
    `IVec4R` | `set(double x, double y, double z)`
    `IVec4R` | `set(double x, double y, double z, double w)`
    `IVec4R` | `set(IDoubleI x, IDoubleI y, IDoubleI z)`
    `IVec4R` | `set(IDoubleI x, IDoubleI y, IDoubleI z, IDoubleI w)`
    `IVec4R` | `set(IVec4I u)`
    `IVec4R` | `set(IVecI u)`
    `IVec4R` | `set(IVecI v, double w)`
    `IVec4R` | `set(IVecI v, IDoubleI w)`
    `IVec4R` | `shear(double sxy, double syx, double syz, double szy, double szx, double sxz)` shear operation
    `IVec4R` | `shear(IDoubleI sxy, IDoubleI syx, IDoubleI syz, IDoubleI szy, IDoubleI szx, IDoubleI sxz)` shear operation
    `IVec4R` | `shear(IVecI center, double sxy, double syx, double syz, double szy, double szx, double sxz)` shear operation
    `IVec4R` | `shear(IVecI center, IDoubleI sxy, IDoubleI syx, IDoubleI syz, IDoubleI szy, IDoubleI szx, IDoubleI sxz)` shear operation
    `IVec4R` | `shearXY(double sxy, double syx)` shear operation on XY
    `IVec4R` | `shearXY(IDoubleI sxy, IDoubleI syx)` shear operation on XY
    `IVec4R` | `shearXY(IVecI center, double sxy, double syx)` shear operation on XY
    `IVec4R` | `shearXY(IVecI center, IDoubleI sxy, IDoubleI syx)` shear operation on XY
    `IVec4R` | `shearYZ(double syz, double szy)` shear operation on YZ
    `IVec4R` | `shearYZ(IDoubleI syz, IDoubleI szy)` shear operation on YZ
    `IVec4R` | `shearYZ(IVecI center, double syz, double szy)` shear operation on YZ
    `IVec4R` | `shearYZ(IVecI center, IDoubleI syz, IDoubleI szy)` shear operation on YZ
    `IVec4R` | `shearZX(double szx, double sxz)` shear operation on ZX
    `IVec4R` | `shearZX(IDoubleI szx, IDoubleI sxz)` shear operation on ZX
    `IVec4R` | `shearZX(IVecI center, double szx, double sxz)` shear operation on ZX
    `IVec4R` | `shearZX(IVecI center, IDoubleI szx, IDoubleI sxz)` shear operation on ZX
    `IVec4R` | `sub(double x, double y, double z)`
    `IVec4R` | `sub(IDoubleI x, IDoubleI y, IDoubleI z)`
    `IVec4R` | `sub(IVecI u)`
    `IVec4R` | `sum(double vx, double vy, double vz)` create a new instance of total summation
    `IVec4R` | `sum(IVecI... v)` create a new instance of total summation
    `IVec4R` | `sum(IVecI v)` create a new instance of total summation
    `IVec4R` | `sum(IVecI v2, double w2)` create a new instance of weighted sum
    `IVec4R` | `sum(IVecI v2, double w1, double w2)` create a new instance of weighted sum
    `IVec4R` | `sum(IVecI v2, IDoubleI w2)` create a new instance of weighted sum
    `IVec4R` | `sum(IVecI v2, IDoubleI w1, IDoubleI w2)` weighted sum, creating a new instance
    `IVec2R` | `to2d()`
    `IVec2R` | `to2d(IVecI projectionDir)`
    `IVec2R` | `to2d(IVecI xaxis, IVecI yaxis)`
    `IVec2R` | `to2d(IVecI xaxis, IVecI yaxis, IVecI origin)`
    `IVecR` | `to3d()`
    `IVec4R` | `to4d()`
    `IVec4R` | `to4d(double w)`
    `IVec4R` | `to4d(IDoubleI w)`
    `IVec4R` | `transform(IMatrix3I mat)` transform with a transformation matrix
    `IVec4R` | `transform(IMatrix4I mat)` transform with a transformation matrix
    `IVec4R` | `transform(IVecI xvec, IVecI yvec, IVecI zvec)` transform with a transformation vectors
    `IVec4R` | `transform(IVecI xvec, IVecI yvec, IVecI zvec, IVecI translate)` transform with a transformation vectors
    `IVec4R` | `translate(double x, double y, double z)` translate is alias of add()
    `IVec4R` | `translate(IDoubleI x, IDoubleI y, IDoubleI z)` alias of add()
    `IVec4R` | `translate(IVecI v)` alias of add()
    `IVec4R` | `unit()` unitize
    `double` | `w()` getting w component
    `IVec4R` | `w(double vw)` setting w component
    `IVec4R` | `w(IDoubleI vw)` setting w component
    `double` | `w(ISwitchE e)` getting w component
    `IDoubleR` | `w(ISwitchR r)` getting w component
    `IVec4R` | `w(IVec4I v)` setting w component by w component of input vector
    `double` | `x()` getting x component
    `IVec4R` | `x(double vx)` setting x component
    `IVec4R` | `x(IDoubleI vx)` setting x component
    `double` | `x(ISwitchE e)` getting x component
    `IDoubleR` | `x(ISwitchR r)` getting x component
    `IVec4R` | `x(IVec2I v)` setting x component by x component of input vector
    `IVec4R` | `x(IVecI v)` setting x component by x component of input vector
    `double` | `y()` getting y component
    `IVec4R` | `y(double vy)` setting y component
    `IVec4R` | `y(IDoubleI vy)` setting y component
    `double` | `y(ISwitchE e)` getting y component
    `IDoubleR` | `y(ISwitchR r)` getting y component
    `IVec4R` | `y(IVec2I v)` setting y component by y component of input vector
    `IVec4R` | `y(IVecI v)` setting y component by y component of input vector
    `double` | `z()` getting z component
    `IVec4R` | `z(double vz)` setting z component
    `IVec4R` | `z(IDoubleI vz)` setting z component
    `double` | `z(ISwitchE e)` getting z component
    `IDoubleR` | `z(ISwitchR r)` getting z component
    `IVec4R` | `z(IVecI v)` setting z component by z component of input vector
    `IVec4R` | `zero()` setting x,y,z zero (not w)

    - ### Methods inherited from class igeo.IParameterObject

      `createObject, parent, parent`

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

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

- - ### Field Detail

    - #### op

          protected IVec4Op op

  - ### Constructor Detail

    - #### IVec4R

          public IVec4R(IVec4Op v)

    - #### IVec4R

          public IVec4R(IVecI v)

    - #### IVec4R

          public IVec4R(IVecI v,
                double w)

    - #### IVec4R

          public IVec4R(IVecI v,
                IDoubleI w)

    - #### IVec4R

          public IVec4R(double x,
                double y,
                double z,
                double w)

    - #### IVec4R

          public IVec4R(double x,
                double y,
                double z)

    - #### IVec4R

          public IVec4R(IDoubleI x,
                IDoubleI y,
                IDoubleI z,
                IDoubleI w)

    - #### IVec4R

          public IVec4R(IDoubleI x,
                IDoubleI y,
                IDoubleI z)

    - #### IVec4R

          public IVec4R(IServerI s,
                IVec4Op v)

    - #### IVec4R

          public IVec4R(IServerI s,
                IVecI v)

    - #### IVec4R

          public IVec4R(IServerI s,
                IVecI v,
                double w)

    - #### IVec4R

          public IVec4R(IServerI s,
                IVecI v,
                IDoubleI w)

    - #### IVec4R

          public IVec4R(IServerI s,
                double x,
                double y,
                double z,
                double w)

    - #### IVec4R

          public IVec4R(IServerI s,
                double x,
                double y,
                double z)

    - #### IVec4R

          public IVec4R(IServerI s,
                IDoubleI x,
                IDoubleI y,
                IDoubleI z,
                IDoubleI w)

    - #### IVec4R

          public IVec4R(IServerI s,
                IDoubleI x,
                IDoubleI y,
                IDoubleI z)

  - ### Method Detail

    - #### x

          public double x()

      Description copied from interface: `IVec4I`
      getting x component
      Specified by:
        `x` in interface `IVec4I`
      Specified by:
        `x` in interface `IVecI`

    - #### y

          public double y()

      Description copied from interface: `IVec4I`
      getting y component
      Specified by:
        `y` in interface `IVec4I`
      Specified by:
        `y` in interface `IVecI`

    - #### z

          public double z()

      Description copied from interface: `IVec4I`
      getting z component
      Specified by:
        `z` in interface `IVec4I`
      Specified by:
        `z` in interface `IVecI`

    - #### w

          public double w()

      Description copied from interface: `IVec4I`
      getting w component
      Specified by:
        `w` in interface `IVec4I`

    - #### x

          public IVec4R x(double vx)

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

    - #### y

          public IVec4R y(double vy)

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

    - #### z

          public IVec4R z(double vz)

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

    - #### w

          public IVec4R w(double vw)

      setting w component
      Specified by:
        `w` in interface `IVec4I`

    - #### x

          public IVec4R x(IDoubleI vx)

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

    - #### y

          public IVec4R y(IDoubleI vy)

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

    - #### z

          public IVec4R z(IDoubleI vz)

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

    - #### w

          public IVec4R w(IDoubleI vw)

      setting w component
      Specified by:
        `w` in interface `IVec4I`

    - #### x

          public IVec4R x(IVecI v)

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

    - #### y

          public IVec4R y(IVecI v)

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

    - #### z

          public IVec4R z(IVecI v)

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

    - #### w

          public IVec4R w(IVec4I v)

      setting w component by w component of input vector
      Specified by:
        `w` in interface `IVec4I`

    - #### x

          public IVec4R x(IVec2I v)

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

    - #### y

          public IVec4R y(IVec2I v)

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

    - #### x

          public double x(ISwitchE e)

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

    - #### y

          public double y(ISwitchE e)

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

    - #### z

          public double z(ISwitchE e)

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

    - #### w

          public double w(ISwitchE e)

      getting w component
      Specified by:
        `w` in interface `IVec4I`

    - #### x

          public IDoubleR x(ISwitchR r)

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

    - #### y

          public IDoubleR y(ISwitchR r)

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

    - #### z

          public IDoubleR z(ISwitchR r)

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

    - #### w

          public IDoubleR w(ISwitchR r)

      getting w component
      Specified by:
        `w` in interface `IVec4I`

    - #### get

          public IVec4 get()

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

    - #### dup

          public IVec4R 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 `IVec4I`
      Specified by:
        `dup` in interface `IVecI`

    - #### to2d

          public IVec2R to2d()

      Specified by:
        `to2d` in interface `IVec4I`
      Specified by:
        `to2d` in interface `IVecI`

    - #### to2d

          public IVec2R to2d(IVecI projectionDir)

      Specified by:
        `to2d` in interface `IVecI`

    - #### to2d

          public IVec2R to2d(IVecI xaxis,
                    IVecI yaxis)

      Specified by:
        `to2d` in interface `IVecI`

    - #### to2d

          public IVec2R to2d(IVecI xaxis,
                    IVecI yaxis,
                    IVecI origin)

      Specified by:
        `to2d` in interface `IVecI`

    - #### to3d

          public IVecR to3d()

      Specified by:
        `to3d` in interface `IVec4I`

    - #### to4d

          public IVec4R to4d()

      Specified by:
        `to4d` in interface `IVecI`

    - #### to4d

          public IVec4R to4d(double w)

      Specified by:
        `to4d` in interface `IVecI`

    - #### to4d

          public IVec4R to4d(IDoubleI w)

      Specified by:
        `to4d` in interface `IVecI`

    - #### getX

          public IDoubleR getX()

      Specified by:
        `getX` in interface `IVec4I`
      Specified by:
        `getX` in interface `IVecI`

    - #### getY

          public IDoubleR getY()

      Specified by:
        `getY` in interface `IVec4I`
      Specified by:
        `getY` in interface `IVecI`

    - #### getZ

          public IDoubleR getZ()

      Specified by:
        `getZ` in interface `IVec4I`
      Specified by:
        `getZ` in interface `IVecI`

    - #### getW

          public IDoubleR getW()

      Specified by:
        `getW` in interface `IVec4I`

    - #### operator

          public IVec4Op operator()

      Specified by:
        `operator` in interface `IReferenceParameter`

    - #### set

          public IVec4R set(double x,
                   double y,
                   double z,
                   double w)

      Specified by:
        `set` in interface `IVec4I`

    - #### set

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

      Specified by:
        `set` in interface `IVec4I`
      Specified by:
        `set` in interface `IVecI`

    - #### set

          public IVec4R set(IVec4I u)

      Specified by:
        `set` in interface `IVec4I`

    - #### set

          public IVec4R set(IVecI u)

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

    - #### set

          public IVec4R set(IDoubleI x,
                   IDoubleI y,
                   IDoubleI z,
                   IDoubleI w)

      Specified by:
        `set` in interface `IVec4I`

    - #### set

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

      Specified by:
        `set` in interface `IVec4I`
      Specified by:
        `set` in interface `IVecI`

    - #### set

          public IVec4R set(IVecI v,
                   double w)

      Specified by:
        `set` in interface `IVec4I`

    - #### set

          public IVec4R set(IVecI v,
                   IDoubleI w)

      Specified by:
        `set` in interface `IVec4I`

    - #### add

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

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

    - #### add

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

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

    - #### add

          public IVec4R add(IVecI u)

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

    - #### sub

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

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

    - #### sub

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

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

    - #### sub

          public IVec4R sub(IVecI u)

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

    - #### mul

          public IVec4R mul(IDoubleI u)

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

    - #### mul

          public IVec4R mul(double u)

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

    - #### div

          public IVec4R div(IDoubleI u)

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

    - #### div

          public IVec4R div(double u)

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

    - #### neg

          public IVec4R neg()

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

    - #### rev

          public IVec4R rev()

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

    - #### flip

          public IVec4R flip()

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

    - #### zero

          public IVec4R zero()

      setting x,y,z zero (not w)
      Specified by:
        `zero` in interface `IArithmeticVal<IVecI,IDoubleI>`
      Specified by:
        `zero` in interface `IVec4I`
      Specified by:
        `zero` in interface `IVecI`

    - #### add

          public IVec4R add(IVecI v,
                   double f)

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

    - #### add

          public IVec4R add(IVecI v,
                   IDoubleI f)

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

    - #### add

          public IVec4R add(double f,
                   IVecI v)

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

    - #### add

          public IVec4R add(IDoubleI f,
                   IVecI v)

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

    - #### dot

          public double dot(IVecI u)

      Description copied from interface: `IVecI`
      dot product
      Specified by:
        `dot` in interface `IVecI`

    - #### dot

          public double dot(double ux,
                   double uy,
                   double uz)

      Description copied from interface: `IVecI`
      dot product
      Specified by:
        `dot` in interface `IVecI`

    - #### dot

          public double dot(ISwitchE e,
                   IVecI u)

      Description copied from interface: `IVecI`
      dot product
      Specified by:
        `dot` in interface `IVecI`

    - #### dot

          public IDoubleR dot(ISwitchR r,
                     IVecI u)

      Description copied from interface: `IVecI`
      dot product
      Specified by:
        `dot` in interface `IVecI`

    - #### cross

          public IVec4R cross(IVecI u)

      cross now returns a new instance 2011/08/03
      Specified by:
        `cross` in interface `IVec4I`
      Specified by:
        `cross` in interface `IVecI`

    - #### cross

          public IVec4R cross(double ux,
                     double uy,
                     double uz)

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

    - #### len

          public double len()

      Description copied from interface: `IVecI`
      getting length of the vector
      Specified by:
        `len` in interface `IVecI`

    - #### len

          public double len(ISwitchE e)

      Description copied from interface: `IVecI`
      getting length of the vector
      Specified by:
        `len` in interface `IVecI`

    - #### len

          public IDoubleR len(ISwitchR r)

      Description copied from interface: `IVecI`
      getting length of the vector
      Specified by:
        `len` in interface `IVecI`

    - #### len2

          public double len2()

      Description copied from interface: `IVecI`
      getting squared length of the vector
      Specified by:
        `len2` in interface `IVecI`

    - #### len2

          public double len2(ISwitchE e)

      Description copied from interface: `IVecI`
      getting squared length of the vector
      Specified by:
        `len2` in interface `IVecI`

    - #### len2

          public IDoubleR len2(ISwitchR r)

      Description copied from interface: `IVecI`
      getting squared length of the vector
      Specified by:
        `len2` in interface `IVecI`

    - #### len

          public IVec4R len(IDoubleI l)

      Description copied from interface: `IVec4I`
      setting length
      Specified by:
        `len` in interface `IVec4I`
      Specified by:
        `len` in interface `IVecI`

    - #### len

          public IVec4R len(double l)

      Description copied from interface: `IVec4I`
      setting length
      Specified by:
        `len` in interface `IVec4I`
      Specified by:
        `len` in interface `IVecI`

    - #### unit

          public IVec4R unit()

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

    - #### dist

          public double dist(IVecI v)

      Description copied from interface: `IVecI`
      distance of two vectors
      Specified by:
        `dist` in interface `IVecI`

    - #### dist

          public double dist(double vx,
                    double vy,
                    double vz)

      Description copied from interface: `IVecI`
      distance of two vectors
      Specified by:
        `dist` in interface `IVecI`

    - #### dist

          public double dist(ISwitchE e,
                    IVecI v)

      Description copied from interface: `IVecI`
      distance of two vectors
      Specified by:
        `dist` in interface `IVecI`

    - #### dist

          public IDoubleR dist(ISwitchR r,
                      IVecI v)

      Description copied from interface: `IVecI`
      distance of two vectors
      Specified by:
        `dist` in interface `IVecI`

    - #### dist2

          public double dist2(IVecI v)

      Description copied from interface: `IVecI`
      squared distance of two vectors
      Specified by:
        `dist2` in interface `IVecI`

    - #### dist2

          public double dist2(double vx,
                     double vy,
                     double vz)

      Description copied from interface: `IVecI`
      squared distance of two vectors
      Specified by:
        `dist2` in interface `IVecI`

    - #### dist2

          public double dist2(ISwitchE e,
                     IVecI v)

      Description copied from interface: `IVecI`
      squared distance of two vectors
      Specified by:
        `dist2` in interface `IVecI`

    - #### dist2

          public IDoubleR dist2(ISwitchR r,
                       IVecI v)

      Description copied from interface: `IVecI`
      squared distance of two vectors
      Specified by:
        `dist2` in interface `IVecI`

    - #### eq

          public boolean eq(IVecI v)

      Description copied from interface: `IVecI`
      check whether location is same or not
      Specified by:
        `eq` in interface `IVecI`

    - #### eq

          public boolean eq(double vx,
                   double vy,
                   double vz)

      Description copied from interface: `IVecI`
      check whether location is same or not
      Specified by:
        `eq` in interface `IVecI`

    - #### eq

          public boolean eq(ISwitchE e,
                   IVecI v)

      Description copied from interface: `IVecI`
      check whether location is same or not
      Specified by:
        `eq` in interface `IVecI`

    - #### eq

          public IBoolR eq(ISwitchR r,
                  IVecI v)

      Description copied from interface: `IVecI`
      check whether location is same or not
      Specified by:
        `eq` in interface `IVecI`

    - #### eqX

          public boolean eqX(IVecI v)

      Description copied from interface: `IVecI`
      check if same in X
      Specified by:
        `eqX` in interface `IVecI`

    - #### eqY

          public boolean eqY(IVecI v)

      Description copied from interface: `IVecI`
      check if same in Y
      Specified by:
        `eqY` in interface `IVecI`

    - #### eqZ

          public boolean eqZ(IVecI v)

      Description copied from interface: `IVecI`
      check if same in Z
      Specified by:
        `eqZ` in interface `IVecI`

    - #### eqW

          public boolean eqW(IVec4I v)

      Specified by:
        `eqW` in interface `IVec4I`

    - #### eqX

          public boolean eqX(double vx)

      Description copied from interface: `IVecI`
      check if same in X
      Specified by:
        `eqX` in interface `IVecI`

    - #### eqY

          public boolean eqY(double vy)

      Description copied from interface: `IVecI`
      check if same in Y
      Specified by:
        `eqY` in interface `IVecI`

    - #### eqZ

          public boolean eqZ(double vz)

      Description copied from interface: `IVecI`
      check if same in Z
      Specified by:
        `eqZ` in interface `IVecI`

    - #### eqW

          public boolean eqW(double vw)

      Specified by:
        `eqW` in interface `IVec4I`

    - #### eqX

          public boolean eqX(ISwitchE e,
                    IVecI v)

      Description copied from interface: `IVecI`
      check if same in X
      Specified by:
        `eqX` in interface `IVecI`

    - #### eqY

          public boolean eqY(ISwitchE e,
                    IVecI v)

      Description copied from interface: `IVecI`
      check if same in Y
      Specified by:
        `eqY` in interface `IVecI`

    - #### eqZ

          public boolean eqZ(ISwitchE e,
                    IVecI v)

      Description copied from interface: `IVecI`
      check if same in Z
      Specified by:
        `eqZ` in interface `IVecI`

    - #### eqW

          public boolean eqW(ISwitchE e,
                    IVec4I v)

      Specified by:
        `eqW` in interface `IVec4I`

    - #### eqX

          public IBoolR eqX(ISwitchR r,
                   IVecI v)

      Description copied from interface: `IVecI`
      check if same in X
      Specified by:
        `eqX` in interface `IVecI`

    - #### eqY

          public IBoolR eqY(ISwitchR r,
                   IVecI v)

      Description copied from interface: `IVecI`
      check if same in Y
      Specified by:
        `eqY` in interface `IVecI`

    - #### eqZ

          public IBoolR eqZ(ISwitchR r,
                   IVecI v)

      Description copied from interface: `IVecI`
      check if same in Z
      Specified by:
        `eqZ` in interface `IVecI`

    - #### eqW

          public IBoolR eqW(ISwitchR r,
                   IVec4I v)

      Specified by:
        `eqW` in interface `IVec4I`

    - #### eq

          public boolean eq(IVecI v,
                   double tolerance)

      Description copied from interface: `IVecI`
      check whether location is same or not with tolerance
      Specified by:
        `eq` in interface `IVecI`

    - #### eq

          public boolean eq(double vx,
                   double vy,
                   double vz,
                   double tolerance)

      Description copied from interface: `IVecI`
      check whether location is same or not with tolerance
      Specified by:
        `eq` in interface `IVecI`

    - #### eq

          public boolean eq(ISwitchE e,
                   IVecI v,
                   double tolerance)

      Description copied from interface: `IVecI`
      check whether location is same or not with tolerance
      Specified by:
        `eq` in interface `IVecI`

    - #### eq

          public IBoolR eq(ISwitchR r,
                  IVecI v,
                  IDoubleI tolerance)

      Description copied from interface: `IVecI`
      check whether location is same or not with tolerance
      Specified by:
        `eq` in interface `IVecI`

    - #### eqX

          public boolean eqX(IVecI v,
                    double tolerance)

      Description copied from interface: `IVecI`
      check if same in X with tolerance
      Specified by:
        `eqX` in interface `IVecI`

    - #### eqY

          public boolean eqY(IVecI v,
                    double tolerance)

      Description copied from interface: `IVecI`
      check if same in Y with tolerance
      Specified by:
        `eqY` in interface `IVecI`

    - #### eqZ

          public boolean eqZ(IVecI v,
                    double tolerance)

      Description copied from interface: `IVecI`
      check if same in Z with tolerance
      Specified by:
        `eqZ` in interface `IVecI`

    - #### eqW

          public boolean eqW(IVec4I v,
                    double tolerance)

      Specified by:
        `eqW` in interface `IVec4I`

    - #### eqX

          public boolean eqX(double vx,
                    double tolerance)

      Description copied from interface: `IVecI`
      check if same in X with tolerance
      Specified by:
        `eqX` in interface `IVecI`

    - #### eqY

          public boolean eqY(double vy,
                    double tolerance)

      Description copied from interface: `IVecI`
      check if same in Y with tolerance
      Specified by:
        `eqY` in interface `IVecI`

    - #### eqZ

          public boolean eqZ(double vz,
                    double tolerance)

      Description copied from interface: `IVecI`
      check if same in Z with tolerance
      Specified by:
        `eqZ` in interface `IVecI`

    - #### eqW

          public boolean eqW(double vw,
                    double tolerance)

      Specified by:
        `eqW` in interface `IVec4I`

    - #### eqX

          public boolean eqX(ISwitchE e,
                    IVecI v,
                    double tolerance)

      Description copied from interface: `IVecI`
      check if same in X with tolerance
      Specified by:
        `eqX` in interface `IVecI`

    - #### eqY

          public boolean eqY(ISwitchE e,
                    IVecI v,
                    double tolerance)

      Description copied from interface: `IVecI`
      check if same in Y with tolerance
      Specified by:
        `eqY` in interface `IVecI`

    - #### eqZ

          public boolean eqZ(ISwitchE e,
                    IVecI v,
                    double tolerance)

      Description copied from interface: `IVecI`
      check if same in Z with tolerance
      Specified by:
        `eqZ` in interface `IVecI`

    - #### eqW

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

      Specified by:
        `eqW` in interface `IVec4I`

    - #### eqX

          public IBoolR eqX(ISwitchR r,
                   IVecI v,
                   IDoubleI tolerance)

      Description copied from interface: `IVecI`
      check if same in X with tolerance
      Specified by:
        `eqX` in interface `IVecI`

    - #### eqY

          public IBoolR eqY(ISwitchR r,
                   IVecI v,
                   IDoubleI tolerance)

      Description copied from interface: `IVecI`
      check if same in Y with tolerance
      Specified by:
        `eqY` in interface `IVecI`

    - #### eqZ

          public IBoolR eqZ(ISwitchR r,
                   IVecI v,
                   IDoubleI tolerance)

      Description copied from interface: `IVecI`
      check if same in Z with tolerance
      Specified by:
        `eqZ` in interface `IVecI`

    - #### eqW

          public IBoolR eqW(ISwitchR r,
                   IVec4I v,
                   IDoubleI tolerance)

      Specified by:
        `eqW` in interface `IVec4I`

    - #### angle

          public double angle(IVecI u)

      Description copied from interface: `IVecI`
      get angle between two vector from 0 to Pi
      Specified by:
        `angle` in interface `IVecI`

    - #### angle

          public double angle(double ux,
                     double uy,
                     double uz)

      Description copied from interface: `IVecI`
      get angle between two vector from 0 to Pi
      Specified by:
        `angle` in interface `IVecI`

    - #### angle

          public double angle(ISwitchE e,
                     IVecI u)

      Description copied from interface: `IVecI`
      get angle between two vector from 0 to Pi
      Specified by:
        `angle` in interface `IVecI`

    - #### angle

          public IDoubleR angle(ISwitchR r,
                       IVecI u)

      Description copied from interface: `IVecI`
      get angle between two vector from 0 to Pi
      Specified by:
        `angle` in interface `IVecI`

    - #### angle

          public double angle(IVecI u,
                     IVecI axis)

      Specified by:
        `angle` in interface `IVecI`
        `axis` - axis to determin sign of angle following right-handed screw rule.
      Returns:
        angle between two vector from -Pi to Pi. Sign follows right-handed screw rule along axis

    - #### angle

          public double angle(double ux,
                     double uy,
                     double uz,
                     double axisX,
                     double axisY,
                     double axisZ)

      Specified by:
        `angle` in interface `IVecI`
      Returns:
        angle between two vector from -Pi to Pi. Sign follows right-handed screw rule along axis

    - #### angle

          public double angle(ISwitchE e,
                     IVecI u,
                     IVecI axis)

      Specified by:
        `angle` in interface `IVecI`
        `axis` - axis to determin sign of angle following right-handed screw rule.
      Returns:
        angle between two vector from -Pi to Pi. Sign follows right-handed screw rule along axis

    - #### angle

          public IDoubleR angle(ISwitchR r,
                       IVecI u,
                       IVecI axis)

      Specified by:
        `angle` in interface `IVecI`
        `axis` - axis to determin sign of angle following right-handed screw rule.
      Returns:
        angle between two vector from -Pi to Pi. Sign follows right-handed screw rule along axis

    - #### rot

          public IVec4R rot(IDoubleI angle)

      Description copied from interface: `IVec4I`
      rotation on xy-plane
      Specified by:
        `rot` in interface `ITransformable`
      Specified by:
        `rot` in interface `IVec4I`
      Specified by:
        `rot` in interface `IVecI`

    - #### rot

          public IVec4R rot(double angle)

      Description copied from interface: `IVec4I`
      rotation on xy-plane
      Specified by:
        `rot` in interface `ITransformable`
      Specified by:
        `rot` in interface `IVec4I`
      Specified by:
        `rot` in interface `IVecI`

    - #### rot

          public IVec4R rot(IVecI axis,
                   IDoubleI angle)

      Description copied from interface: `IVec4I`
      rotation around axis
      Specified by:
        `rot` in interface `ITransformable`
      Specified by:
        `rot` in interface `IVec4I`
      Specified by:
        `rot` in interface `IVecI`

    - #### rot

          public IVec4R rot(IVecI axis,
                   double angle)

      Description copied from interface: `IVec4I`
      rotation around axis
      Specified by:
        `rot` in interface `ITransformable`
      Specified by:
        `rot` in interface `IVec4I`
      Specified by:
        `rot` in interface `IVecI`

    - #### rot

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

      Description copied from interface: `IVec4I`
      rotation around axis
      Specified by:
        `rot` in interface `IVec4I`
      Specified by:
        `rot` in interface `IVecI`

    - #### rot

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

      Description copied from interface: `IVec4I`
      rotation around axis and center
      Specified by:
        `rot` in interface `ITransformable`
      Specified by:
        `rot` in interface `IVec4I`
      Specified by:
        `rot` in interface `IVecI`

    - #### rot

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

      Description copied from interface: `IVec4I`
      rotation around axis and center
      Specified by:
        `rot` in interface `ITransformable`
      Specified by:
        `rot` in interface `IVec4I`
      Specified by:
        `rot` in interface `IVecI`

    - #### rot

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

      Description copied from interface: `IVec4I`
      rotation around axis and center
      Specified by:
        `rot` in interface `IVec4I`
      Specified by:
        `rot` in interface `IVecI`

    - #### rot

          public IVec4R rot(IVecI axis,
                   IVecI destDir)

      Description copied from interface: `IVec4I`
      rotation around axis towards destination direction
      Specified by:
        `rot` in interface `ITransformable`
      Specified by:
        `rot` in interface `IVec4I`
      Specified by:
        `rot` in interface `IVecI`

    - #### rot

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

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

    - #### rot2

          public IVec4R rot2(IDoubleI angle)

      alias of rot(IDoubleI)
      Specified by:
        `rot2` in interface `ITransformable`
      Specified by:
        `rot2` in interface `IVec4I`
      Specified by:
        `rot2` in interface `IVecI`

    - #### rot2

          public IVec4R rot2(double angle)

      alias of rot(double)
      Specified by:
        `rot2` in interface `ITransformable`
      Specified by:
        `rot2` in interface `IVec4I`
      Specified by:
        `rot2` in interface `IVecI`

    - #### rot2

          public IVec4R rot2(IVecI center,
                    IDoubleI angle)

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

    - #### rot2

          public IVec4R rot2(IVecI center,
                    double angle)

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

    - #### rot2

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

      Description copied from interface: `IVec4I`
      rotation on xy-plane at center
      Specified by:
        `rot2` in interface `IVec4I`
      Specified by:
        `rot2` in interface `IVecI`

    - #### rot2

          public IVec4R rot2(IVecI destDir)

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

    - #### rot2

          public IVec4R rot2(IVecI center,
                    IVecI destPt)

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

    - #### scale

          public IVec4R scale(IDoubleI f)

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

    - #### scale

          public IVec4R scale(double f)

      Description copied from interface: `IVec4I`
      alias of mul
      Specified by:
        `scale` in interface `ITransformable`
      Specified by:
        `scale` in interface `IVec4I`
      Specified by:
        `scale` in interface `IVecI`

    - #### scale

          public IVec4R scale(IVecI center,
                     IDoubleI f)

      Description copied from interface: `IVec4I`
      scale around center
      Specified by:
        `scale` in interface `ITransformable`
      Specified by:
        `scale` in interface `IVec4I`
      Specified by:
        `scale` in interface `IVecI`

    - #### scale

          public IVec4R scale(IVecI center,
                     double f)

      Description copied from interface: `IVec4I`
      scale around center
      Specified by:
        `scale` in interface `ITransformable`
      Specified by:
        `scale` in interface `IVec4I`
      Specified by:
        `scale` in interface `IVecI`

    - #### scale

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

      Description copied from interface: `IVec4I`
      scale around center
      Specified by:
        `scale` in interface `IVec4I`
      Specified by:
        `scale` in interface `IVecI`

    - #### scale1d

          public IVec4R scale1d(IVecI axis,
                       double f)

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

    - #### scale1d

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

      Description copied from interface: `IVec4I`
      scale only in 1 direction
      Specified by:
        `scale1d` in interface `IVec4I`
      Specified by:
        `scale1d` in interface `IVecI`

    - #### scale1d

          public IVec4R scale1d(IVecI axis,
                       IDoubleI f)

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

    - #### scale1d

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

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

    - #### scale1d

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

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

    - #### scale1d

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

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

    - #### ref

          public IVec4R ref(IVecI planeDir)

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

    - #### ref

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

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

    - #### ref

          public IVec4R ref(IVecI center,
                   IVecI planeDir)

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

    - #### ref

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

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

    - #### mirror

          public IVec4R mirror(IVecI planeDir)

      Description copied from interface: `IVec4I`
      alias of ref
      Specified by:
        `mirror` in interface `ITransformable`
      Specified by:
        `mirror` in interface `IVec4I`
      Specified by:
        `mirror` in interface `IVecI`

    - #### mirror

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

      Description copied from interface: `IVec4I`
      alias of ref
      Specified by:
        `mirror` in interface `IVec4I`
      Specified by:
        `mirror` in interface `IVecI`

    - #### mirror

          public IVec4R mirror(IVecI center,
                      IVecI planeDir)

      Description copied from interface: `IVec4I`
      alias of ref
      Specified by:
        `mirror` in interface `ITransformable`
      Specified by:
        `mirror` in interface `IVec4I`
      Specified by:
        `mirror` in interface `IVecI`

    - #### mirror

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

      Description copied from interface: `IVec4I`
      alias of ref
      Specified by:
        `mirror` in interface `IVec4I`
      Specified by:
        `mirror` in interface `IVecI`

    - #### shear

          public IVec4R 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 `IVec4I`
      Specified by:
        `shear` in interface `IVecI`

    - #### shear

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

      Description copied from interface: `IVec4I`
      shear operation
      Specified by:
        `shear` in interface `ITransformable`
      Specified by:
        `shear` in interface `IVec4I`
      Specified by:
        `shear` in interface `IVecI`

    - #### shear

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

      Description copied from interface: `IVec4I`
      shear operation
      Specified by:
        `shear` in interface `ITransformable`
      Specified by:
        `shear` in interface `IVec4I`
      Specified by:
        `shear` in interface `IVecI`

    - #### shear

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

      Description copied from interface: `IVec4I`
      shear operation
      Specified by:
        `shear` in interface `ITransformable`
      Specified by:
        `shear` in interface `IVec4I`
      Specified by:
        `shear` in interface `IVecI`

    - #### shearXY

          public IVec4R shearXY(double sxy,
                       double syx)

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

    - #### shearXY

          public IVec4R shearXY(IDoubleI sxy,
                       IDoubleI syx)

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

    - #### shearXY

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

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

    - #### shearXY

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

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

    - #### shearYZ

          public IVec4R shearYZ(double syz,
                       double szy)

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

    - #### shearYZ

          public IVec4R shearYZ(IDoubleI syz,
                       IDoubleI szy)

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

    - #### shearYZ

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

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

    - #### shearYZ

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

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

    - #### shearZX

          public IVec4R shearZX(double szx,
                       double sxz)

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

    - #### shearZX

          public IVec4R shearZX(IDoubleI szx,
                       IDoubleI sxz)

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

    - #### shearZX

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

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

    - #### shearZX

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

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

    - #### translate

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

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

    - #### translate

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

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

    - #### translate

          public IVec4R translate(IVecI v)

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

    - #### transform

          public IVec4R transform(IMatrix3I mat)

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

    - #### transform

          public IVec4R transform(IMatrix4I mat)

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

    - #### transform

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

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

    - #### transform

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

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

    - #### mv

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

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

    - #### mv

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

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

    - #### mv

          public IVec4R mv(IVecI v)

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

    - #### cp

          public IVec4R 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 `IVec4I`
      Specified by:
        `cp` in interface `IVecI`

    - #### cp

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

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

    - #### cp

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

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

    - #### cp

          public IVec4R cp(IVecI v)

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

    - #### dif

          public IVec4R dif(IVecI v)

      Description copied from interface: `IVec4I`
      create a new instance of difference
      Specified by:
        `dif` in interface `IVec4I`
      Specified by:
        `dif` in interface `IVecI`

    - #### dif

          public IVec4R dif(double vx,
                   double vy,
                   double vz)

      Description copied from interface: `IVec4I`
      create a new instance of difference
      Specified by:
        `dif` in interface `IVec4I`
      Specified by:
        `dif` in interface `IVecI`

    - #### diff

          public IVec4R diff(IVecI v)

      Description copied from interface: `IVec4I`
      alias of dif
      Specified by:
        `diff` in interface `IVec4I`
      Specified by:
        `diff` in interface `IVecI`

    - #### diff

          public IVec4R diff(double vx,
                    double vy,
                    double vz)

      Description copied from interface: `IVec4I`
      alias of dif
      Specified by:
        `diff` in interface `IVec4I`
      Specified by:
        `diff` in interface `IVecI`

    - #### mid

          public IVec4R mid(IVecI v)

      Description copied from interface: `IVec4I`
      create a new instance of midpoint
      Specified by:
        `mid` in interface `IVec4I`
      Specified by:
        `mid` in interface `IVecI`

    - #### mid

          public IVec4R mid(double vx,
                   double vy,
                   double vz)

      Description copied from interface: `IVec4I`
      create a new instance of midpoint
      Specified by:
        `mid` in interface `IVec4I`
      Specified by:
        `mid` in interface `IVecI`

    - #### sum

          public IVec4R sum(IVecI v)

      Description copied from interface: `IVec4I`
      create a new instance of total summation
      Specified by:
        `sum` in interface `IVec4I`
      Specified by:
        `sum` in interface `IVecI`

    - #### sum

          public IVec4R sum(double vx,
                   double vy,
                   double vz)

      Description copied from interface: `IVec4I`
      create a new instance of total summation
      Specified by:
        `sum` in interface `IVec4I`
      Specified by:
        `sum` in interface `IVecI`

    - #### sum

          public IVec4R sum(IVecI... v)

      Description copied from interface: `IVec4I`
      create a new instance of total summation
      Specified by:
        `sum` in interface `IVec4I`
      Specified by:
        `sum` in interface `IVecI`

    - #### bisect

          public IVec4R bisect(IVecI v)

      Description copied from interface: `IVec4I`
      create a new instance of bisector
      Specified by:
        `bisect` in interface `IVec4I`
      Specified by:
        `bisect` in interface `IVecI`

    - #### bisect

          public IVec4R bisect(double vx,
                      double vy,
                      double vz)

      Description copied from interface: `IVec4I`
      create a new instance of bisector
      Specified by:
        `bisect` in interface `IVec4I`
      Specified by:
        `bisect` in interface `IVecI`

    - #### sum

          public IVec4R sum(IVecI v2,
                   IDoubleI w1,
                   IDoubleI w2)

      weighted sum, creating a new instance
      Specified by:
        `sum` in interface `IVec4I`
      Specified by:
        `sum` in interface `IVecI`

    - #### sum

          public IVec4R sum(IVecI v2,
                   IDoubleI w2)

      Description copied from interface: `IVec4I`
      create a new instance of weighted sum
      Specified by:
        `sum` in interface `IVec4I`
      Specified by:
        `sum` in interface `IVecI`

    - #### sum

          public IVec4R sum(IVecI v2,
                   double w1,
                   double w2)

      Description copied from interface: `IVec4I`
      create a new instance of weighted sum
      Specified by:
        `sum` in interface `IVec4I`
      Specified by:
        `sum` in interface `IVecI`

    - #### sum

          public IVec4R sum(IVecI v2,
                   double w2)

      Description copied from interface: `IVec4I`
      create a new instance of weighted sum
      Specified by:
        `sum` in interface `IVec4I`
      Specified by:
        `sum` in interface `IVecI`

    - #### nml

          public IVec4R nml(IVecI v)

      alias of cross. (not unitized ... )
      Specified by:
        `nml` in interface `IVec4I`
      Specified by:
        `nml` in interface `IVecI`

    - #### nml

          public IVec4R nml(double vx,
                   double vy,
                   double vz)

      alias of cross. (not unitized ... )
      Specified by:
        `nml` in interface `IVec4I`
      Specified by:
        `nml` in interface `IVecI`

    - #### nml

          public IVec4R nml(IVecI pt1,
                   IVecI pt2)

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

    - #### nml

          public IVec4R nml(double vx1,
                   double vy1,
                   double vz1,
                   double vx2,
                   double vy2,
                   double vz2)

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

    - #### isValid

          public boolean isValid()

      checking x, y, and z is valid number (not Infinite, nor NaN).
      Specified by:
        `isValid` in interface `IVecI`