Package | Class | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

## igeo
Class IVec

    java.lang.Object
      igeo.IParameterObject
          igeo.IVec

All Implemented Interfaces:
  IArithmeticVal<IVecI,IDoubleI>, IEntityParameter, IParameter, ISubobject, ITransformable, IVal, IVecI, IVecOp

Direct Known Subclasses:
  IVec4

    public class IVec

extends IParameterObject
implements IVecI, IEntityParameter

Class of 3 dimensional vector.

Author:
  Satoru Sugihara

Field Summary
`static IVec` | `origin`
`double` | `x`
`static IVec` | `xaxis`
`double` | `y`
`static IVec` | `yaxis`
`double` | `z`
`static IVec` | `zaxis`

Fields inherited from class igeo.IParameterObject
`parent`

Constructor Summary
`IVec()`
`IVec(double x, double y)`
`IVec(double x, double y, double z)`
`IVec(IDoubleI x, IDoubleI y, IDoubleI z)`
`IVec(IServerI s)`
`IVec(IServerI s, double x, double y)`
`IVec(IServerI s, double x, double y, double z)`
`IVec(IServerI s, IDoubleI x, IDoubleI y, IDoubleI z)`
`IVec(IServerI s, IVec v)`
`IVec(IServerI s, IVec2I v)`
`IVec(IServerI s, IVecI v)`
`IVec(IVec v)`
`IVec(IVec2I v)`
`IVec(IVecI v)`

Method Summary
`IVec` | `add(double x, double y, double z)`
`IVec` | `add(double f, IVec v)` scale add; alias of add(IVec,double)
`IVec` | `add(double f, IVecI v)` scale add; alias of add(IVecI,double)
`IVec` | `add(IDoubleI x, IDoubleI y, IDoubleI z)`
`IVec` | `add(IDoubleI f, IVecI v)` scale add; alias of add(IVec,IDouble)
`IVec` | `add(IVec v)`
`IVec` | `add(IVec v, double f)` scale add
`IVec` | `add(IVecI v)`
`IVec` | `add(IVecI v, double f)` scale add
`IVec` | `add(IVecI v, IDoubleI f)` scale add
`double` | `angle(double vx, double vy, double vz)` angle in radian, ranging from 0 to Pi
`double` | `angle(double vx, double vy, double vz, double axisX, double axisY, double axisZ)` angle in radian, with reference axis to decide which is negative direction, ranging from -Pi to Pi angle is not measured on the plane of axis.
`double` | `angle(ISwitchE e, IVecI v)` angle in radian, ranging from 0 to Pi
`double` | `angle(ISwitchE e, IVecI v, IVecI axis)` angle in radian, with reference axis to decide which is negative direction, ranging from -Pi to Pi angle is not measured on the plane of axis.
`IDouble` | `angle(ISwitchR r, IVecI v)` angle in radian, ranging from 0 to Pi
`IDouble` | `angle(ISwitchR r, IVecI v, IVecI axis)` angle in radian, with reference axis to decide which is negative direction, ranging from -Pi to Pi angle is not measured on the plane of axis.
`double` | `angle(IVec v)` angle in radian, ranging from 0 to Pi
`double` | `angle(IVecI v)` angle in radian, ranging from 0 to Pi
`double` | `angle(IVecI v, IVecI axis)` angle in radian, with reference axis to decide which is negative direction, ranging from -Pi to Pi angle is not measured on the plane of axis.
`static double` | `angle(IVecI pt1, IVecI pt2, IVecI pt3)` measure angle of polyline of pt1, pt2 and pt3 at pt2, which is equivalent to measure angle between vectors from pt2 to pt1 and pt2 to pt3.
`double` | `angle(IVec v, IVec axis)` angle in radian, with reference axis to decide which is negative direction, ranging from -Pi to Pi angle is not measured on the plane of axis.
`double` | `angleOnPlane(ISwitchE e, IVecI v, IVecI planeDir)` angle of two vector on a specified plane
`double` | `angleOnPlane(ISwitchE e, IVecI pt, IVecI planeCenter, IVecI planeDir)` angle of two points on a specified plane around the center
`IDouble` | `angleOnPlane(ISwitchR r, IVecI v, IVecI planeDir)` angle of two vector on a specified plane
`IDouble` | `angleOnPlane(ISwitchR r, IVecI pt, IVecI planeCenter, IVecI planeDir)` angle of two points on a specified plane around the center
`double` | `angleOnPlane(IVecI v, IVecI planeDir)` angle of two vector on a specified plane
`double` | `angleOnPlane(IVecI pt, IVecI planeCenter, IVecI planeDir)` angle of two points on a specified plane around the center
`double` | `angleOnPlane(IVec v, IVec planeDir)` angle of two vector on a specified plane
`double` | `angleOnPlane(IVec pt, IVec planeCenter, IVec planeDir)` angle of two points on a specified plane around the center
`static double` | `area(IVecI pt1, IVecI pt2, IVecI pt3)` area of a triangle
`static IVec` | `averageNormal(IVecI[] pts)` average normal of point array in form of a polyline.
`static IVec` | `averageNormal(IVecI[][] pts)` average normal of point array in form of a matrix.
`IVec` | `bisect(double vx, double vy, double vz)` create a new instance of bisector
`IVec` | `bisect(IVec v)` create a new instance of bisector
`IVec` | `bisect(IVecI v)` create a new instance of bisector
`static IVec[]` | `bisectPlane(IVec planeDir1, IVec planePt1, IVec planeDir2, IVec planePt2)` bisector plane of two planes
`static IVec` | `center(IVecI... v)` calculating centetr of multiple points
`static IVec` | `circumcenter(IVecI pt1, IVecI pt2, IVecI pt3)` calculate circumcenter; center of circumcircle
`static IVec[]` | `closestPointsOn2Lines(IVecI lineDir1, IVecI linePt1, IVecI lineDir2, IVecI linePt2)` find two closest points on two infinete lines in a skew relationship, which makes a segment perpendicular to two lines
`IVec` | `cp()` cp() is alias of dup()
`IVec` | `cp(double vx, double vy, double vz)` cp() is alias of dup().add()
`IVec` | `cp(IDoubleI vx, IDoubleI vy, IDoubleI vz)` cp() is alias of dup().add()
`IVec` | `cp(IVec v)` cp() is alias of dup().add()
`IVec` | `cp(IVecI v)` cp() is alias of dup().add()
`IVec` | `cross(double vx, double vy, double vz)` cross product.
`IVec` | `cross(IVec v)` cross product.
`IVec` | `cross(IVecI v)` cross product, creating a new instance
`IVec[]` | `decompose(IVecI uaxis, IVecI vaxis)` decompose the vector to two input vectors and another perpendicular vector of those two and returns three decomposed vector.
`IVec` | `dif(double vx, double vy, double vz)` create a new instance of difference
`IVec` | `dif(IVec v)` create a new instance of difference
`IVec` | `dif(IVecI v)` create a new instance of difference
`IVec` | `diff(double vx, double vy, double vz)` create a new instance of difference
`IVec` | `diff(IVec v)` create a new instance of difference
`IVec` | `diff(IVecI v)` create a new instance of difference
`double` | `dist(double vx, double vy, double vz)` get distance between two vectors
`double` | `dist(ISwitchE e, IVecI v)` get distance between two vectors
`IDouble` | `dist(ISwitchR r, IVecI v)` get distance between two vectors
`double` | `dist(IVec v)` get distance between two vectors
`double` | `dist(IVecI v)` get distance between two vectors
`double` | `dist2(double vx, double vy, double vz)` get squared distance between two vectors
`double` | `dist2(ISwitchE e, IVecI v)` get squared distance between two vectors
`IDouble` | `dist2(ISwitchR r, IVecI v)` get squared distance between two vectors
`double` | `dist2(IVec v)` get squared distance between two vectors
`double` | `dist2(IVecI v)` get squared distance between two vectors
`static double` | `distBetween2Lines(IVecI lineDir1, IVecI linePt1, IVecI lineDir2, IVecI linePt2)`
`double` | `distToLine(IVecI lineDir)` distance to a line dir
`double` | `distToLine(IVecI lineDir, IVecI linePt)` distance to an infinite line
`double` | `distToPlane(IVecI planeDir, IVecI planePt)` distance to a plane
`double` | `distToSegment(IVecI linePt1, IVecI linePt2)` distance to a line segment
`double` | `distToTriangle(IVecI pt1, IVecI pt2, IVecI pt3)` distance to a triangle
`IVec` | `div(double v)`
`IVec` | `div(IDouble v)`
`IVec` | `div(IDoubleI v)`
`double` | `dot(double vx, double vy, double vz)` dot product in double
`double` | `dot(ISwitchE e, IVecI v)` dot product in double
`IDouble` | `dot(ISwitchR r, IVecI v)` dot product in IDouble
`double` | `dot(IVec v)` dot product in double
`double` | `dot(IVecI v)` dot product in double
`IVec` | `dup()` duplicate the instance
`boolean` | `eq(double vx, double vy, double vz)` check if 2 vectors are same by distance
`boolean` | `eq(double vx, double vy, double vz, double tolerance)` check if 2 vectors are same by distance with tolerace
`boolean` | `eq(ISwitchE e, IVecI v)` check if 2 vectors are same by distance
`boolean` | `eq(ISwitchE e, IVecI v, double tolerance)` check if 2 vectors are same by distance with tolerace
`IBool` | `eq(ISwitchR r, IVecI v)` check if 2 vectors are same by distance
`IBool` | `eq(ISwitchR r, IVecI v, IDoubleI tolerance)` check if 2 vectors are same by distance with tolerace
`boolean` | `eq(IVec v)` check if 2 vectors are same by distance
`boolean` | `eq(IVec v, double tolerance)` check if 2 vectors are same by distance with tolerace
`boolean` | `eq(IVecI v)` check if 2 vectors are same by distance
`boolean` | `eq(IVecI v, double tolerance)` check if 2 vectors are same by distance with tolerace
`boolean` | `eqX(double vx)` check if 2 vectors are same in X
`boolean` | `eqX(double vx, double tolerance)` check if same in X with tolerance
`boolean` | `eqX(ISwitchE e, IVecI v)` check if 2 vectors are same in X
`boolean` | `eqX(ISwitchE e, IVecI v, double tolerance)` check if same in X with tolerance
`IBool` | `eqX(ISwitchR r, IVecI v)` check if 2 vectors are same in X
`IBool` | `eqX(ISwitchR r, IVecI v, IDoubleI tolerance)` check if same in X with tolerance
`boolean` | `eqX(IVec v)` check if 2 vectors are same in X
`boolean` | `eqX(IVec v, double tolerance)`
`boolean` | `eqX(IVecI v)` check if 2 vectors are same in X
`boolean` | `eqX(IVecI v, double tolerance)` check if same in X with tolerance
`boolean` | `eqY(double vy)` check if 2 vectors are same in Y
`boolean` | `eqY(double vy, double tolerance)` check if same in Y with tolerance
`boolean` | `eqY(ISwitchE e, IVecI v)` check if 2 vectors are same in Y
`boolean` | `eqY(ISwitchE e, IVecI v, double tolerance)` check if same in Y with tolerance
`IBool` | `eqY(ISwitchR r, IVecI v)` check if 2 vectors are same in Y
`IBool` | `eqY(ISwitchR r, IVecI v, IDoubleI tolerance)` check if same in Y with tolerance
`boolean` | `eqY(IVec v)` check if 2 vectors are same in Y
`boolean` | `eqY(IVec v, double tolerance)`
`boolean` | `eqY(IVecI v)` check if 2 vectors are same in Y
`boolean` | `eqY(IVecI v, double tolerance)` check if same in Y with tolerance
`boolean` | `eqZ(double vz)` check if 2 vectors are same in Z
`boolean` | `eqZ(double vz, double tolerance)` check if same in Z with tolerance
`boolean` | `eqZ(ISwitchE e, IVecI v)` check if 2 vectors are same in Z
`boolean` | `eqZ(ISwitchE e, IVecI v, double tolerance)` check if same in Z with tolerance
`IBool` | `eqZ(ISwitchR r, IVecI v)` check if 2 vectors are same in Z
`IBool` | `eqZ(ISwitchR r, IVecI v, IDoubleI tolerance)` check if same in Z with tolerance
`boolean` | `eqZ(IVec v)` check if 2 vectors are same in Z
`boolean` | `eqZ(IVec v, double tolerance)`
`boolean` | `eqZ(IVecI v)` check if 2 vectors are same in Z
`boolean` | `eqZ(IVecI v, double tolerance)` check if same in Z with tolerance
`IVec` | `flip()` alias of neg()
`IVec` | `get()`
`static IVec` | `getNormal(double vx1, double vy1, double vz1, double vx2, double vy2, double vz2, double vx3, double vy3, double vz3)`
`IVecI` | `getNormal(IVecI pt2, IVecI pt3)` alias of nml
`static IVecI` | `getNormal(IVecI pt1, IVecI pt2, IVecI pt3)` create normal vector from 3 points
`IVec` | `getNormal(IVec pt2, IVec pt3)` alias of nml
`static IVec` | `getNormal(IVec pt1, IVec pt2, IVec pt3)` create normal vector from 3 points
`IDouble` | `getX()`
`IDouble` | `getY()`
`IDouble` | `getZ()`
`IVec` | `icross(double vx, double vy, double vz)` cross product, changing its values by itself.
`IVec` | `icross(IVec v)` cross product, changing its values by itself.
`IVec` | `icross(IVecI v)` cross product, changing its values by itself.
`static IVec` | `intersect(IVecI line1Pt1, IVecI line1Pt2, IVecI line2Pt1, IVecI line2Pt2)` intersection of two infinite lines.
`static IVec` | `intersect(IVecI line1Pt1, IVecI line1Pt2, IVecI line2Pt1, IVecI line2Pt2, double tolerance)` intersection of two infinite lines.
`static IVec` | `intersect(IVec line1Pt1, IVec line1Pt2, IVec line2Pt1, IVec line2Pt2)` intersection of two infinite lines.
`static IVec` | `intersect(IVec line1Pt1, IVec line1Pt2, IVec line2Pt1, IVec line2Pt2, double tolerance)` intersection of two infinite lines.
`static IVec[]` | `intersectCircle(IVec circleNormal1, IVec circleCenter1, double radius1, IVec circleNormal2, IVec circleCenter2, double radius2)`
`static IVec[]` | `intersectCircleAndSphere(IVec circleNormal, IVec circleCenter, double circleRadius, IVec sphereCenter, double sphereRadius)`
`static IVec` | `intersectInfiniteLine(IVecI line1Pt1, IVecI line1Pt2, IVecI line2Pt1, IVecI line2Pt2)` intersect infinite lines; alias of intersect()
`static IVec` | `intersectInfiniteLine(IVecI line1Pt1, IVecI line1Pt2, IVecI line2Pt1, IVecI line2Pt2, double tolerance)` intersect infinite lines; alias of intersect()
`static IVec` | `intersectInfiniteLine(IVec line1Pt1, IVec line1Pt2, IVec line2Pt1, IVec line2Pt2)` intersect infinite lines; alias of intersect()
`static IVec` | `intersectInfiniteLine(IVec line1Pt1, IVec line1Pt2, IVec line2Pt1, IVec line2Pt2, double tolerance)` intersect infinite lines; alias of intersect()
`static IVec` | `intersectInfiniteLines(IVecI line1Pt1, IVecI line1Pt2, IVecI line2Pt1, IVecI line2Pt2)` intersect infinite lines; alias of intersect()
`static IVec` | `intersectInfiniteLines(IVecI line1Pt1, IVecI line1Pt2, IVecI line2Pt1, IVecI line2Pt2, double tolerance)` intersect infinite lines; alias of intersect()
`static IVec` | `intersectInfiniteLines(IVec line1Pt1, IVec line1Pt2, IVec line2Pt1, IVec line2Pt2)` intersect infinite lines; alias of intersect()
`static IVec` | `intersectInfiniteLines(IVec line1Pt1, IVec line1Pt2, IVec line2Pt1, IVec line2Pt2, double tolerance)` intersect infinite lines; alias of intersect()
`static IVec` | `intersectInfLine(IVecI line1Pt1, IVecI line1Pt2, IVecI line2Pt1, IVecI line2Pt2)` intersect infinite lines; alias of intersect()
`static IVec` | `intersectInfLine(IVecI line1Pt1, IVecI line1Pt2, IVecI line2Pt1, IVecI line2Pt2, double tolerance)` intersect infinite lines; alias of intersect()
`static IVec` | `intersectInfLine(IVec line1Pt1, IVec line1Pt2, IVec line2Pt1, IVec line2Pt2)` intersect infinite lines; alias of intersect()
`static IVec` | `intersectInfLine(IVec line1Pt1, IVec line1Pt2, IVec line2Pt1, IVec line2Pt2, double tolerance)` intersect infinite lines; alias of intersect()
`static IVec` | `intersectInfLines(IVecI line1Pt1, IVecI line1Pt2, IVecI line2Pt1, IVecI line2Pt2)` intersect infinite lines; alias of intersect()
`static IVec` | `intersectInfLines(IVecI line1Pt1, IVecI line1Pt2, IVecI line2Pt1, IVecI line2Pt2, double tolerance)` intersect infinite lines; alias of intersect()
`static IVec` | `intersectInfLines(IVec line1Pt1, IVec line1Pt2, IVec line2Pt1, IVec line2Pt2)` intersect infinite lines; alias of intersect()
`static IVec` | `intersectInfLines(IVec line1Pt1, IVec line1Pt2, IVec line2Pt1, IVec line2Pt2, double tolerance)` intersect infinite lines; alias of intersect()
`static IVec` | `intersectLine(IVecI line1Pt1, IVecI line1Pt2, IVecI line2Pt1, IVecI line2Pt2)` intersection of line segments; alias of intersectSegment
`static IVec` | `intersectLine(IVecI line1Pt1, IVecI line1Pt2, IVecI line2Pt1, IVecI line2Pt2, double tolerance)`
`static IVec` | `intersectLine(IVec line1Pt1, IVec line1Pt2, IVec line2Pt1, IVec line2Pt2)`
`static IVec` | `intersectLine(IVec line1Pt1, IVec line1Pt2, IVec line2Pt1, IVec line2Pt2, double tolerance)`
`static IVec[]` | `intersectLineAndSphere(IVec lineDir, IVec linePt, IVec center, double radius)` intersection between an infinite line and a sphere.
`static IVec` | `intersectLines(IVecI line1Pt1, IVecI line1Pt2, IVecI line2Pt1, IVecI line2Pt2)` intersection of line segments; alias of intersectSegment
`static IVec` | `intersectLines(IVecI line1Pt1, IVecI line1Pt2, IVecI line2Pt1, IVecI line2Pt2, double tolerance)`
`static IVec` | `intersectLines(IVec line1Pt1, IVec line1Pt2, IVec line2Pt1, IVec line2Pt2)`
`static IVec` | `intersectLines(IVec line1Pt1, IVec line1Pt2, IVec line2Pt1, IVec line2Pt2, double tolerance)`
`static IVec` | `intersectPlane(IVec plane1Dir, IVec plane2Dir)` intersection of two planes at the origin.
`static IVec[]` | `intersectPlane(IVec plane1Dir, IVec plane1Pt, IVec plane2Dir, IVec plane2Pt)` intersection of two planes.
`static IVec[]` | `intersectPlane(IVec plane1Pt1, IVec plane1Pt2, IVec plane1Pt3, IVec plane2Pt1, IVec plane2Pt2, IVec plane2Pt3)` intersection of two planes
`static IVec` | `intersectPlaneAndLine(IVec planeDir, IVec lineDir, IVec linePt)` intersection of one plane at the origin and one infinite line
`static IVec` | `intersectPlaneAndLine(IVec planeDir, IVec planePt, IVec lineDir, IVec linePt)` intersection of one plane and one infinite line
`static IVec` | `intersectPlaneAndLine(IVec planePt1, IVec planePt2, IVec planePt3, IVec linePt1, IVec linePt2)` intersection of one plane and one infinite line
`static IVec` | `intersectPlaneAndSegment(IVec planeDir, IVec linePt1, IVec linePt2)` intersection of one plane at the origin and one line segment.
`static IVec` | `intersectPlaneAndSegment(IVec planeDir, IVec planePt, IVec linePt1, IVec linePt2)` intersection of one plane and one line segment.
`static IVec[]` | `intersectPlaneAndSphere(IVec planeDir, IVec planePt, IVec sphereCenter, double sphereRadius)` intersection circle of a plane and a sphere.
`static IVec` | `intersectSeg(IVecI line1Pt1, IVecI line1Pt2, IVecI line2Pt1, IVecI line2Pt2)` intersection of line segments; alias of intersectSegment
`static IVec` | `intersectSeg(IVecI line1Pt1, IVecI line1Pt2, IVecI line2Pt1, IVecI line2Pt2, double tolerance)`
`static IVec` | `intersectSeg(IVec line1Pt1, IVec line1Pt2, IVec line2Pt1, IVec line2Pt2)`
`static IVec` | `intersectSeg(IVec line1Pt1, IVec line1Pt2, IVec line2Pt1, IVec line2Pt2, double tolerance)`
`static IVec` | `intersectSegment(IVecI line1Pt1, IVecI line1Pt2, IVecI line2Pt1, IVecI line2Pt2)`
`static IVec` | `intersectSegment(IVecI line1Pt1, IVecI line1Pt2, IVecI line2Pt1, IVecI line2Pt2, double tolerance)`
`static IVec` | `intersectSegment(IVec line1Pt1, IVec line1Pt2, IVec line2Pt1, IVec line2Pt2)` intersection of line segments.
`static IVec` | `intersectSegment(IVec line1Pt1, IVec line1Pt2, IVec line2Pt1, IVec line2Pt2, double tolerance)` intersection of line segments.
`static IVec` | `intersectSegments(IVecI line1Pt1, IVecI line1Pt2, IVecI line2Pt1, IVecI line2Pt2)` intersection of line segments; alias of intersectSegment
`static IVec` | `intersectSegments(IVecI line1Pt1, IVecI line1Pt2, IVecI line2Pt1, IVecI line2Pt2, double tolerance)`
`static IVec` | `intersectSegments(IVec line1Pt1, IVec line1Pt2, IVec line2Pt1, IVec line2Pt2)`
`static IVec` | `intersectSegments(IVec line1Pt1, IVec line1Pt2, IVec line2Pt1, IVec line2Pt2, double tolerance)`
`static IVec[]` | `intersectSphere(IVec sphereCenter1, double radius1, IVec sphereCenter2, double radius2)` intersection circle of two spheres
`static boolean` | `isArrayEqual(IVec[] pts1, IVec[] pts2, boolean cyclic, boolean reverse)`
`static boolean` | `isArrayEqual(IVec[] pts1, IVec[] pts2, boolean cyclic, boolean reverse, double tolerance)`
`static boolean` | `isFlat(IVecI[] pts)`
`static boolean` | `isFlat(IVecI[] pts, double tolerance)`
`static boolean` | `isFlat(IVecI pt1, IVecI pt2, IVecI pt3, IVecI pt4)`
`static boolean` | `isFlat(IVecI pt1, IVecI pt2, IVecI pt3, IVecI pt4, double tolerance)`
`boolean` | `isInside2d(IVec2I[] pts)`
`boolean` | `isInside2d(IVecI[] pts)`
`boolean` | `isInside2d(IVecI projectionDir, IVec2I[] pts)`
`boolean` | `isInside2d(IVecI projectionDir, IVecI[] pts)`
`boolean` | `isInsideTriangle(IVecI pt1, IVecI pt2, IVecI pt3)`
`boolean` | `isOnLine(IVecI v1, IVecI v2)` determine if it's on & inside the line
`boolean` | `isOnLine(IVecI v1, IVecI v2, double tolerance)` determine if it's on & inside the line
`boolean` | `isOnPlane(IVecI planeDir, IVecI planePt)`
`boolean` | `isOnPlane(IVecI planeDir, IVecI planePt, double tolerance)`
`boolean` | `isOnPlane(IVecI planePt1, IVecI planePt2, IVecI planePt3)`
`boolean` | `isOnPlane(IVecI planePt1, IVecI planePt2, IVecI planePt3, double tolerance)`
`boolean` | `isOnSegment(IVecI v1, IVecI v2)` alias of isOnLine
`boolean` | `isOnSegment(IVecI v1, IVecI v2, double tolerance)` alias of isOnLine
`boolean` | `isOnTriangle(IVecI pt1, IVecI pt2, IVecI pt3)`
`boolean` | `isOnTriangle(IVecI pt1, IVecI pt2, IVecI pt3, double tolerance)`
`boolean` | `isParallel(IVecI v)`
`boolean` | `isParallel(IVecI v, double angleTolerance)`
`boolean` | `isPerpendicular(IVecI v)`
`boolean` | `isPerpendicular(IVecI v, double angleTolerance)`
`static boolean` | `isStraight(IVecI[] pts)`
`static boolean` | `isStraight(IVecI[] pts, double tolerance)` static methods
`boolean` | `isStraight(IVecI v1, IVecI v2)`
`boolean` | `isStraight(IVecI v1, IVecI v2, double tolerance)`
`boolean` | `isValid()` checking x, y, and z is valid number (not Infinite, nor NaN).
`double` | `len()` get length of the vector
`IVec` | `len(double l)` set length of the vector
`IVec` | `len(IDoubleI l)` set length of the vector
`double` | `len(ISwitchE e)` get length of the vector
`IDouble` | `len(ISwitchR r)` get length of the vector
`double` | `len2()` get squared length of the vector
`double` | `len2(ISwitchE e)` get squared length of the vector
`IDouble` | `len2(ISwitchR r)` get squared length of the vector
`IVec` | `mid(double vx, double vy, double vz)` create a new instance of midpoint
`IVec` | `mid(IVec v)` create a new instance of midpoint
`IVec` | `mid(IVecI v)` create a new instance of midpoint
`IVec` | `mirror(double planeX, double planeY, double planeZ)` alias of ref
`IVec` | `mirror(double centerX, double centerY, double centerZ, double planeX, double planeY, double planeZ)` alias of ref
`IVec` | `mirror(IVec planeDir)` alias of ref
`IVec` | `mirror(IVecI planeDir)` alias of ref
`IVec` | `mirror(IVecI center, IVecI planeDir)` alias of ref
`IVec` | `mirror(IVec center, IVec planeDir)` alias of ref
`IVec` | `mul(double v)`
`IVec` | `mul(IDouble v)`
`IVec` | `mul(IDoubleI v)`
`IVec` | `mv(double vx, double vy, double vz)` mv() is alias of add()
`IVec` | `mv(IDoubleI vx, IDoubleI vy, IDoubleI vz)` mv() is alias of add()
`IVec` | `mv(IVecI v)` mv() is alias of add()
`IVec` | `neg()`
`IVec` | `nml(double vx, double vy, double vz)` alias of cross.
`IVec` | `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)
`static IVec` | `nml(double vx1, double vy1, double vz1, double vx2, double vy2, double vz2, double vx3, double vy3, double vz3)` create normal vector from 3 points
`IVec` | `nml(IVec v)` alias of cross.
`IVec` | `nml(IVecI v)` alias of cross.
`IVec` | `nml(IVecI pt1, IVecI pt2)` create normal vector from 3 points of self, pt1 and pt2 (not unitized)
`static IVecI` | `nml(IVecI pt1, IVecI pt2, IVecI pt3)` create normal vector from 3 points
`IVec` | `nml(IVec pt1, IVec pt2)` create normal vector from 3 points of self, pt1 and pt2 (not unitized)
`static IVec` | `nml(IVec pt1, IVec pt2, IVec pt3)` create normal vector from 3 points
`static IVec[]` | `offset(IVec[] pts, double width)`
`static IVec[]` | `offset(IVec[] pts, double width, boolean closed)`
`static IVec[]` | `offset(IVec[] pts, double width, IVecI planeNormal)`
`static IVec[]` | `offset(IVec[] pts, double width, IVecI[] normals)`
`static IVec[]` | `offset(IVec[] pts, double width, IVecI[] normals, boolean closed)`
`static IVec[]` | `offset(IVec[] pts, double width, IVecI planeNormal, boolean closed)`
`static IVecI[]` | `offset(IVecI[] pts, double width)` offset without normal vector.
`static IVecI[]` | `offset(IVecI[] pts, double width, boolean closed)`
`static IVecI[]` | `offset(IVecI[] pts, double width, IVecI planeNormal)` offset with one normal vector
`static IVecI[]` | `offset(IVecI[] pts, double width, IVecI[] normals)` offset with array of normal vectors
`static IVecI[]` | `offset(IVecI[] pts, double width, IVecI[] normals, boolean closed)`
`static IVecI[]` | `offset(IVecI[] pts, double width, IVecI planeNormal, boolean closed)`
`static IVecI[]` | `offset(IVecI[] pts, IDoubleI width)`
`static IVecI[]` | `offset(IVecI[] pts, IDoubleI width, boolean closed)`
`static IVecI[]` | `offset(IVecI[] pts, IDoubleI width, IVecI planeNormal)`
`static IVecI[]` | `offset(IVecI[] pts, IDoubleI width, IVecI[] normals)`
`static IVecI[]` | `offset(IVecI[] pts, IDoubleI width, IVecI[] normals, boolean closed)`
`static IVecI[]` | `offset(IVecI[] pts, IDoubleI width, IVecI planeNormal, boolean closed)`
`static IVecI[]` | `offset(IVecI[] pts, int ptNum, int returnNum, double width, IVecI[] normals, boolean closed)` offset points
`static IVecI[]` | `offset(IVecI[] pts, int ptNum, int returnNum, IDoubleI width, IVecI[] normals, boolean closed)` offset points
`static IVecI[]` | `offsetNormal(IVecI[] pts, int ptNum, boolean close)`
`static IVec[]` | `perpendicularTo2Lines(IVecI lineDir1, IVecI linePt1, IVecI lineDir2, IVecI linePt2)` alias to closestPointsOn2Lines
`IVec` | `perpendicularVecToLine(IVecI lineDir)` create a new vector from line to this point perpendicular to the line dir
`IVec` | `perpendicularVecToLine(IVecI lineDir, IVecI linePt)` create a new vector from this point to the line in parpendicular direction.
`double[]` | `projectTo2Vec(IVecI v1, IVecI v2)` project the vector to the plane defined by two input vector and decompose vector to two vector and another perpendicular vector and returns coefficient of them.
`IVec` | `projectToLine(IVecI linePt, IVecI lineDir)` project to an infinite line.
`IVec` | `projectToPlane(IVecI planeNormal)` project a vector onto a plane at origin
`static void` | `projectToPlane(IVecI[] pts)` project point array to a plane.
`static void` | `projectToPlane(IVecI[][] pts)` project point array to a plane.
`static void` | `projectToPlane(IVecI[][] pts, IVecI planeNormal)` project point array to a plane.
`static void` | `projectToPlane(IVecI[][] pts, IVecI planeNormal, IVecI planePt)` project point array to a plane.
`static void` | `projectToPlane(IVecI[][] pts, IVecI projectDir, IVecI planeNormal, IVecI planePt)` project point array to a plane.
`static void` | `projectToPlane(IVecI[] pts, IVecI planeNormal)` project point array to a plane.
`static void` | `projectToPlane(IVecI[] pts, IVecI planeNormal, IVecI planePt)` project point array to a plane.
`static void` | `projectToPlane(IVecI[] pts, IVecI projectDir, IVecI planeNormal, IVecI planePt)` project point array to a plane.
`IVec` | `projectToPlane(IVecI projectDir, IVecI planeNormal)` project a vector onto a plane at origin towards a specified direction
`IVec` | `projectToPlane(IVecI projectDir, IVecI planeNormal, IVecI planePoint)` project a point onto a plane at planePoint towards a specified direction
`static IVecI` | `projectToPlane(IVecI pt, IVecI projectDir, IVecI planeNormal, IVecI planePt)` project point a plane.
`IVec` | `projectToSegment(IVecI linePt1, IVecI linePt2)` project to a line segment.
`IVec` | `projectToTriangle(IVecI pt1, IVecI pt2, IVecI pt3)`
`double` | `projectToVec(IVecI v)` project this vector to the input vector and returns projection coefficient.
`double` | `ratioOnSegment(IVecI linePt1, IVecI linePt2)` ratio of projected point between two points (line segment).
`IVec` | `ref(double planeX, double planeY, double planeZ)` reflect (mirror) 3 dimensionally to the other side of the plane
`IVec` | `ref(double centerX, double centerY, double centerZ, double planeX, double planeY, double planeZ)` reflect (mirror) 3 dimensionally to the other side of the plane at the center
`IVec` | `ref(IVec planeDir)` reflect (mirror) 3 dimensionally to the other side of the plane
`IVec` | `ref(IVecI planeDir)` reflect (mirror) 3 dimensionally to the other side of the plane
`IVec` | `ref(IVecI center, IVecI planeDir)` reflect (mirror) 3 dimensionally to the other side of the plane at the center
`IVec` | `ref(IVec center, IVec planeDir)` reflect (mirror) 3 dimensionally to the other side of the plane at the center
`IVec` | `rev()` alias of neg()
`IVec` | `rot(double angle)` rotation on xy-plane
`IVec` | `rot(double axisX, double axisY, double axisZ, double angle)` rotate the vector around the axis
`IVec` | `rot(double centerX, double centerY, double centerZ, double axisX, double axisY, double axisZ, double angle)` rotation around axis vector and center point
`IVec` | `rot(IDoubleI angle)` rotation on xy-plane
`IVec` | `rot(IVec axis, double angle)` rotate the vector around the axis
`IVec` | `rot(IVecI axis, double angle)` rotation around axis vector
`IVec` | `rot(IVecI axis, IDoubleI angle)` rotation around axis vector
`IVec` | `rot(IVecI axis, IVecI destDir)` rotation around axis towards destination direction
`IVec` | `rot(IVecI center, IVecI axis, double angle)` rotation around axis vector and center point
`IVec` | `rot(IVecI center, IVecI axis, IDoubleI angle)` rotation around axis vector and center point
`IVec` | `rot(IVecI center, IVecI axis, IVecI destPt)` rotation around axis and center towards destination point
`IVec` | `rot(IVec axis, IVec destDir)` rotation around axis towards destination direction
`IVec` | `rot(IVec center, IVec axis, double angle)`
`IVec` | `rot(IVec center, IVec axis, IVec destPt)` rotation around axis and center towards destination point
`IVec` | `rot2(double angle)` rotation on xy-plane; alias of rot(double)
`IVec` | `rot2(double centerX, double centerY, double angle)` rotation on xy-plane
`IVec` | `rot2(IDoubleI angle)` rotation on xy-plane; alias of rot(IDoubleI)
`IVec` | `rot2(IVec destDir)` rotation on xy-plane towards destDir
`IVec` | `rot2(IVec center, double angle)` rotation on xy-plane
`IVec` | `rot2(IVecI destDir)` rotation on xy-plane towards destDir
`IVec` | `rot2(IVecI center, double angle)` rotation on xy-plane
`IVec` | `rot2(IVecI center, IDoubleI angle)` rotation on xy-plane
`IVec` | `rot2(IVecI center, IVecI destPt)` rotation on xy-plane towards destPt
`IVec` | `rot2(IVec center, IVec destPt)` rotation on xy-plane towards destPt
`IVec` | `scale(double f)` alias of mul
`IVec` | `scale(double centerX, double centerY, double centerZ, double f)` scale from the center
`IVec` | `scale(IDoubleI f)` alias of mul
`IVec` | `scale(IVec center, double f)` scale from the center
`IVec` | `scale(IVecI center, double f)` scale from the center
`IVec` | `scale(IVecI center, IDoubleI f)` scale from the center
`IVec` | `scale1d(double axisX, double axisY, double axisZ, double f)` scale only in 1 direction
`IVec` | `scale1d(double centerX, double centerY, double centerZ, double axisX, double axisY, double axisZ, double f)` scale only in 1 direction
`IVec` | `scale1d(IVec axis, double f)` scale only in 1 direction
`IVec` | `scale1d(IVecI axis, double f)` scale only in 1 direction
`IVec` | `scale1d(IVecI axis, IDoubleI f)` scale only in 1 direction
`IVec` | `scale1d(IVecI center, IVecI axis, double f)` scale only in 1 direction
`IVec` | `scale1d(IVecI center, IVecI axis, IDoubleI f)` scale only in 1 direction
`IVec` | `scale1d(IVec center, IVec axis, double f)` scale only in 1 direction
`IVec` | `set(double x, double y, double z)`
`IVec` | `set(IDoubleI x, IDoubleI y, IDoubleI z)`
`IVec` | `set(IVec v)`
`IVec` | `set(IVecI v)`
`IVec` | `shear(double sxy, double syx, double syz, double szy, double szx, double sxz)` shear operation
`IVec` | `shear(IDoubleI sxy, IDoubleI syx, IDoubleI syz, IDoubleI szy, IDoubleI szx, IDoubleI sxz)` shear operation
`IVec` | `shear(IVecI center, double sxy, double syx, double syz, double szy, double szx, double sxz)` shear operation
`IVec` | `shear(IVecI center, IDoubleI sxy, IDoubleI syx, IDoubleI syz, IDoubleI szy, IDoubleI szx, IDoubleI sxz)` shear operation
`IVec` | `shearXY(double sxy, double syx)` shear operation on XY
`IVec` | `shearXY(IDoubleI sxy, IDoubleI syx)` shear operation on XY
`IVec` | `shearXY(IVecI center, double sxy, double syx)` shear operation on XY
`IVec` | `shearXY(IVecI center, IDoubleI sxy, IDoubleI syx)` shear operation on XY
`IVec` | `shearYZ(double syz, double szy)` shear operation on YZ
`IVec` | `shearYZ(IDoubleI syz, IDoubleI szy)` shear operation on YZ
`IVec` | `shearYZ(IVecI center, double syz, double szy)` shear operation on YZ
`IVec` | `shearYZ(IVecI center, IDoubleI syz, IDoubleI szy)` shear operation on YZ
`IVec` | `shearZX(double szx, double sxz)` shear operation on ZX
`IVec` | `shearZX(IDoubleI szx, IDoubleI sxz)` shear operation on ZX
`IVec` | `shearZX(IVecI center, double szx, double sxz)` shear operation on ZX
`IVec` | `shearZX(IVecI center, IDoubleI szx, IDoubleI sxz)` shear operation on ZX
`IVectorObject` | `show()` visualize a vector as an arrow.
`IVectorObject` | `show(IServerI s)` visualize a vector as an arrow.
`IVectorObject` | `show(IServerI s, IVecI root)` visualize a vector as an arrow.
`IVectorObject` | `show(IVecI root)` visualize a vector as an arrow.
`IVec` | `sub(double x, double y, double z)`
`IVec` | `sub(IDoubleI x, IDoubleI y, IDoubleI z)`
`IVec` | `sub(IVec v)`
`IVec` | `sub(IVecI v)`
`IVec` | `sum(double vx, double vy, double vz)` create a new instance of summation
`IVec` | `sum(IVec... v)` create a new instance of summation
`IVec` | `sum(IVec v)` create a new instance of summation
`IVec` | `sum(IVec v2, double w2)` create a new instance of weighted summation
`IVec` | `sum(IVec v2, double w1, double w2)` create a new instance of weighted summation
`IVec` | `sum(IVecI... v)` create a new instance of summation
`IVec` | `sum(IVecI v)` create a new instance of summation
`IVec` | `sum(IVecI v2, double w2)` create a new instance of weighted summation
`IVec` | `sum(IVecI v2, double w1, double w2)` create a new instance of weighted summation
`IVec` | `sum(IVecI v2, IDoubleI w2)` create a new instance of weighted summation
`IVec` | `sum(IVecI v2, IDoubleI w1, IDoubleI w2)` create a new instance of weighted summation
`IVec2` | `to2d()`
`IVec2` | `to2d(IVecI projectionDir)`
`IVec2` | `to2d(IVecI xaxis, IVecI yaxis)`
`IVec2` | `to2d(IVecI xaxis, IVecI yaxis, IVecI origin)`
`IVec4` | `to4d()`
`IVec4` | `to4d(double w)`
`IVec4` | `to4d(IDoubleI w)`
`static IVec[]` | `toIVecArray(IVecI[] array)`
`java.lang.String` | `toString()`
`IVec` | `transform(IMatrix3I mat)` transform with a transformation matrix
`IVec` | `transform(IMatrix4I mat)` transform with a transformation matrix
`IVec` | `transform(IVecI xvec, IVecI yvec, IVecI zvec)` transform with a transformation vectors
`IVec` | `transform(IVecI xvec, IVecI yvec, IVecI zvec, IVecI translate)` transform with a transformation vectors
`IVec` | `transform(IVec xvec, IVec yvec, IVec zvec)`
`IVec` | `transform(IVec xvec, IVec yvec, IVec zvec, IVec translate)`
`IVec` | `translate(double x, double y, double z)` alias of add()
`IVec` | `translate(IDoubleI x, IDoubleI y, IDoubleI z)` alias of add()
`IVec` | `translate(IVecI v)` alias of add()
`IVec` | `unit()` unitize the vector
`double` | `x()` getting x component
`IVec` | `x(double vx)` setting x component
`IVec` | `x(IDoubleI vx)` setting x component
`double` | `x(ISwitchE e)` getting x component
`IDouble` | `x(ISwitchR r)` getting x component
`IVec` | `x(IVec2I v)` setting x component by x component of input vector
`IVec` | `x(IVecI v)` setting x component by x component of input vector
`double` | `y()` getting y component
`IVec` | `y(double vy)` setting y component
`IVec` | `y(IDoubleI vy)` setting y component
`double` | `y(ISwitchE e)` getting y component
`IDouble` | `y(ISwitchR r)` getting y component
`IVec` | `y(IVec2I v)` setting y component by y component of input vector
`IVec` | `y(IVecI v)` setting y component by y component of input vector
`double` | `z()` getting z component
`IVec` | `z(double vz)` setting z component
`IVec` | `z(IDoubleI vz)` setting z component
`double` | `z(ISwitchE e)` getting z component
`IDouble` | `z(ISwitchR r)` getting z component
`IVec` | `z(IVecI v)` setting z component by z component of input vector
`IVec` | `zero()` setting all zero

Methods inherited from class igeo.IParameterObject
`createObject, parent, parent`

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

Field Detail

### origin

    public static final IVec origin

### xaxis

    public static final IVec xaxis

### yaxis

    public static final IVec yaxis

### zaxis

    public static final IVec zaxis

### x

    public double x

### y

    public double y

### z

    public double z

Constructor Detail

### IVec

    public IVec()

### IVec

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

### IVec

    public IVec(double x,
                double y)

### IVec

    public IVec(IVec v)

### IVec

    public IVec(IVecI v)

### IVec

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

### IVec

    public IVec(IVec2I v)

### IVec

    public IVec(IServerI s)

### IVec

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

### IVec

    public IVec(IServerI s,
                double x,
                double y)

### IVec

    public IVec(IServerI s,
                IVec v)

### IVec

    public IVec(IServerI s,
                IVecI v)

### IVec

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

### IVec

    public IVec(IServerI s,
                IVec2I v)

Method Detail

### x

    public double x()

  Description copied from interface: `IVecI`
  getting x component

  Specified by:
    `x` in interface `IVecI`

### y

    public double y()

  Description copied from interface: `IVecI`
  getting y component

  Specified by:
    `y` in interface `IVecI`

### z

    public double z()

  Description copied from interface: `IVecI`
  getting z component

  Specified by:
    `z` in interface `IVecI`

### x

    public IVec x(double vx)

  setting x component

  Specified by:
    `x` in interface `IVecI`

### y

    public IVec y(double vy)

  setting y component

  Specified by:
    `y` in interface `IVecI`

### z

    public IVec z(double vz)

  setting z component

  Specified by:
    `z` in interface `IVecI`

### x

    public IVec x(IDoubleI vx)

  setting x component

  Specified by:
    `x` in interface `IVecI`

### y

    public IVec y(IDoubleI vy)

  setting y component

  Specified by:
    `y` in interface `IVecI`

### z

    public IVec z(IDoubleI vz)

  setting z component

  Specified by:
    `z` in interface `IVecI`

### x

    public IVec x(IVecI v)

  setting x component by x component of input vector

  Specified by:
    `x` in interface `IVecI`

### y

    public IVec y(IVecI v)

  setting y component by y component of input vector

  Specified by:
    `y` in interface `IVecI`

### z

    public IVec z(IVecI v)

  setting z component by z component of input vector

  Specified by:
    `z` in interface `IVecI`

### x

    public IVec x(IVec2I v)

  setting x component by x component of input vector

  Specified by:
    `x` in interface `IVecI`

### y

    public IVec y(IVec2I v)

  setting y component by y component of input vector

  Specified by:
    `y` in interface `IVecI`

### x

    public double x(ISwitchE e)

  getting x component

  Specified by:
    `x` in interface `IVecI`

### y

    public double y(ISwitchE e)

  getting y component

  Specified by:
    `y` in interface `IVecI`

### z

    public double z(ISwitchE e)

  getting z component

  Specified by:
    `z` in interface `IVecI`

### x

    public IDouble x(ISwitchR r)

  getting x component

  Specified by:
    `x` in interface `IVecI`

### y

    public IDouble y(ISwitchR r)

  getting y component

  Specified by:
    `y` in interface `IVecI`

### z

    public IDouble z(ISwitchR r)

  getting z component

  Specified by:
    `z` in interface `IVecI`

### get

    public IVec get()

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

### dup

    public IVec 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

    public IVec2 to2d()

  Specified by:
    `to2d` in interface `IVecI`

### to2d

    public IVec2 to2d(IVecI projectionDir)

  Specified by:
    `to2d` in interface `IVecI`

### to2d

    public IVec2 to2d(IVecI xaxis,
                      IVecI yaxis)

  Specified by:
    `to2d` in interface `IVecI`

### to2d

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

  Specified by:
    `to2d` in interface `IVecI`

### to4d

    public IVec4 to4d()

  Specified by:
    `to4d` in interface `IVecI`

### to4d

    public IVec4 to4d(double w)

  Specified by:
    `to4d` in interface `IVecI`

### to4d

    public IVec4 to4d(IDoubleI w)

  Specified by:
    `to4d` in interface `IVecI`

### getX

    public IDouble getX()

  Specified by:
    `getX` in interface `IVecI`

### getY

    public IDouble getY()

  Specified by:
    `getY` in interface `IVecI`

### getZ

    public IDouble getZ()

  Specified by:
    `getZ` in interface `IVecI`

### set

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

  Specified by:
    `set` in interface `IVecI`

### set

    public IVec set(IVec v)

### set

    public IVec set(IVecI v)

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

### set

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

  Specified by:
    `set` in interface `IVecI`

### add

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

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

### add

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

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

### add

    public IVec add(IVec v)

### add

    public IVec add(IVecI v)

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

### sub

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

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

### sub

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

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

### sub

    public IVec sub(IVec v)

### sub

    public IVec sub(IVecI v)

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

### mul

    public IVec mul(double v)

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

### mul

    public IVec mul(IDouble v)

### mul

    public IVec mul(IDoubleI v)

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

### div

    public IVec div(double v)

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

### div

    public IVec div(IDouble v)

### div

    public IVec div(IDoubleI v)

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

### neg

    public IVec neg()

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

### rev

    public IVec rev()

  alias of neg()

  Specified by:
    `rev` in interface `IVecI`

### flip

    public IVec flip()

  alias of neg()

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

### zero

    public IVec zero()

  setting all zero

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

### add

    public IVec add(IVec v,
                    double f)

  scale add

### add

    public IVec add(IVecI v,
                    double f)

  scale add

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

### add

    public IVec add(IVecI v,
                    IDoubleI f)

  scale add

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

### add

    public IVec add(double f,
                    IVec v)

  scale add; alias of add(IVec,double)

### add

    public IVec add(double f,
                    IVecI v)

  scale add; alias of add(IVecI,double)

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

### add

    public IVec add(IDoubleI f,
                    IVecI v)

  scale add; alias of add(IVec,IDouble)

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

### dot

    public double dot(IVec v)

  dot product in double

### dot

    public double dot(IVecI v)

  dot product in double

  Specified by:
    `dot` in interface `IVecI`

### dot

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

  dot product in double

  Specified by:
    `dot` in interface `IVecI`

### dot

    public double dot(ISwitchE e,
                      IVecI v)

  dot product in double

  Specified by:
    `dot` in interface `IVecI`

### dot

    public IDouble dot(ISwitchR r,
                       IVecI v)

  dot product in IDouble

  Specified by:
    `dot` in interface `IVecI`

### cross

    public IVec cross(IVec v)

  cross product. returning a new instance, not changing own content! 2011/08/03

### cross

    public IVec cross(double vx,
                      double vy,
                      double vz)

  cross product.

  Specified by:
    `cross` in interface `IVecI`

### cross

    public IVec cross(IVecI v)

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

  Specified by:
    `cross` in interface `IVecI`

### icross

    public IVec icross(IVec v)

  cross product, changing its values by itself. no new instance created.

### icross

    public IVec icross(double vx,
                       double vy,
                       double vz)

  cross product, changing its values by itself. no new instance created.

### icross

    public IVec icross(IVecI v)

  cross product, changing its values by itself. no new instance created.

### len

    public double len()

  get length of the vector

  Specified by:
    `len` in interface `IVecI`

### len

    public double len(ISwitchE e)

  get length of the vector

  Specified by:
    `len` in interface `IVecI`

### len

    public IDouble len(ISwitchR r)

  get length of the vector

  Specified by:
    `len` in interface `IVecI`

### len2

    public double len2()

  get squared length of the vector

  Specified by:
    `len2` in interface `IVecI`

### len2

    public double len2(ISwitchE e)

  get squared length of the vector

  Specified by:
    `len2` in interface `IVecI`

### len2

    public IDouble len2(ISwitchR r)

  get squared length of the vector

  Specified by:
    `len2` in interface `IVecI`

### len

    public IVec len(double l)

  set length of the vector

  Specified by:
    `len` in interface `IVecI`

### len

    public IVec len(IDoubleI l)

  set length of the vector

  Specified by:
    `len` in interface `IVecI`

### unit

    public IVec unit()

  unitize the vector

  Specified by:
    `unit` in interface `IVecI`

### dist

    public double dist(IVec v)

  get distance between two vectors

### dist

    public double dist(IVecI v)

  get distance between two vectors

  Specified by:
    `dist` in interface `IVecI`

### dist

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

  get distance between two vectors

  Specified by:
    `dist` in interface `IVecI`

### dist

    public double dist(ISwitchE e,
                       IVecI v)

  get distance between two vectors

  Specified by:
    `dist` in interface `IVecI`

### dist

    public IDouble dist(ISwitchR r,
                        IVecI v)

  get distance between two vectors

  Specified by:
    `dist` in interface `IVecI`

### dist2

    public double dist2(IVec v)

  get squared distance between two vectors

### dist2

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

  get squared distance between two vectors

  Specified by:
    `dist2` in interface `IVecI`

### dist2

    public double dist2(IVecI v)

  get squared distance between two vectors

  Specified by:
    `dist2` in interface `IVecI`

### dist2

    public double dist2(ISwitchE e,
                        IVecI v)

  get squared distance between two vectors

  Specified by:
    `dist2` in interface `IVecI`

### dist2

    public IDouble dist2(ISwitchR r,
                         IVecI v)

  get squared distance between two vectors

  Specified by:
    `dist2` in interface `IVecI`

### eq

    public boolean eq(IVec v)

  check if 2 vectors are same by distance

### eq

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

  check if 2 vectors are same by distance

  Specified by:
    `eq` in interface `IVecI`

### eq

    public boolean eq(IVecI v)

  check if 2 vectors are same by distance

  Specified by:
    `eq` in interface `IVecI`

### eq

    public boolean eq(ISwitchE e,
                      IVecI v)

  check if 2 vectors are same by distance

  Specified by:
    `eq` in interface `IVecI`

### eq

    public IBool eq(ISwitchR r,
                    IVecI v)

  check if 2 vectors are same by distance

  Specified by:
    `eq` in interface `IVecI`

### eq

    public boolean eq(IVec v,
                      double tolerance)

  check if 2 vectors are same by distance with tolerace

### eq

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

  check if 2 vectors are same by distance with tolerace

  Specified by:
    `eq` in interface `IVecI`

### eq

    public boolean eq(IVecI v,
                      double tolerance)

  check if 2 vectors are same by distance with tolerace

  Specified by:
    `eq` in interface `IVecI`

### eq

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

  check if 2 vectors are same by distance with tolerace

  Specified by:
    `eq` in interface `IVecI`

### eq

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

  check if 2 vectors are same by distance with tolerace

  Specified by:
    `eq` in interface `IVecI`

### eqX

    public boolean eqX(IVec v)

  check if 2 vectors are same in X

### eqY

    public boolean eqY(IVec v)

  check if 2 vectors are same in Y

### eqZ

    public boolean eqZ(IVec v)

  check if 2 vectors are same in Z

### eqX

    public boolean eqX(double vx)

  check if 2 vectors are same in X

  Specified by:
    `eqX` in interface `IVecI`

### eqY

    public boolean eqY(double vy)

  check if 2 vectors are same in Y

  Specified by:
    `eqY` in interface `IVecI`

### eqZ

    public boolean eqZ(double vz)

  check if 2 vectors are same in Z

  Specified by:
    `eqZ` in interface `IVecI`

### eqX

    public boolean eqX(IVecI v)

  check if 2 vectors are same in X

  Specified by:
    `eqX` in interface `IVecI`

### eqY

    public boolean eqY(IVecI v)

  check if 2 vectors are same in Y

  Specified by:
    `eqY` in interface `IVecI`

### eqZ

    public boolean eqZ(IVecI v)

  check if 2 vectors are same in Z

  Specified by:
    `eqZ` in interface `IVecI`

### eqX

    public boolean eqX(ISwitchE e,
                       IVecI v)

  check if 2 vectors are same in X

  Specified by:
    `eqX` in interface `IVecI`

### eqY

    public boolean eqY(ISwitchE e,
                       IVecI v)

  check if 2 vectors are same in Y

  Specified by:
    `eqY` in interface `IVecI`

### eqZ

    public boolean eqZ(ISwitchE e,
                       IVecI v)

  check if 2 vectors are same in Z

  Specified by:
    `eqZ` in interface `IVecI`

### eqX

    public IBool eqX(ISwitchR r,
                     IVecI v)

  check if 2 vectors are same in X

  Specified by:
    `eqX` in interface `IVecI`

### eqY

    public IBool eqY(ISwitchR r,
                     IVecI v)

  check if 2 vectors are same in Y

  Specified by:
    `eqY` in interface `IVecI`

### eqZ

    public IBool eqZ(ISwitchR r,
                     IVecI v)

  check if 2 vectors are same in Z

  Specified by:
    `eqZ` in interface `IVecI`

### eqX

    public boolean eqX(IVec v,
                       double tolerance)

### eqY

    public boolean eqY(IVec v,
                       double tolerance)

### eqZ

    public boolean eqZ(IVec v,
                       double tolerance)

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

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

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

### eqX

    public IBool 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 IBool 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 IBool 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`

### angle

    public double angle(IVec v)

  angle in radian, ranging from 0 to Pi

### angle

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

  angle in radian, ranging from 0 to Pi

  Specified by:
    `angle` in interface `IVecI`

### angle

    public double angle(IVecI v)

  angle in radian, ranging from 0 to Pi

  Specified by:
    `angle` in interface `IVecI`

### angle

    public double angle(ISwitchE e,
                        IVecI v)

  angle in radian, ranging from 0 to Pi

  Specified by:
    `angle` in interface `IVecI`

### angle

    public IDouble angle(ISwitchR r,
                         IVecI v)

  angle in radian, ranging from 0 to Pi

  Specified by:
    `angle` in interface `IVecI`

### angle

    public double angle(IVec v,
                        IVec axis)

  angle in radian, with reference axis to decide which is negative direction, ranging from -Pi to Pi angle is not measured on the plane of axis. axis just define if it's positive angle or negative angle

### angle

    public double angle(double vx,
                        double vy,
                        double vz,
                        double axisX,
                        double axisY,
                        double axisZ)

  angle in radian, with reference axis to decide which is negative direction, ranging from -Pi to Pi angle is not measured on the plane of axis. axis just define if it's positive angle or negative angle

  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(IVecI v,
                        IVecI axis)

  angle in radian, with reference axis to decide which is negative direction, ranging from -Pi to Pi angle is not measured on the plane of axis. axis just define if it's positive angle or negative angle

  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(ISwitchE e,
                        IVecI v,
                        IVecI axis)

  angle in radian, with reference axis to decide which is negative direction, ranging from -Pi to Pi angle is not measured on the plane of axis. axis just define if it's positive angle or negative angle

  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 IDouble angle(ISwitchR r,
                         IVecI v,
                         IVecI axis)

  angle in radian, with reference axis to decide which is negative direction, ranging from -Pi to Pi angle is not measured on the plane of axis. axis just define if it's positive angle or negative angle

  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

### angleOnPlane

    public double angleOnPlane(IVec v,
                               IVec planeDir)

  angle of two vector on a specified plane

### angleOnPlane

    public double angleOnPlane(IVecI v,
                               IVecI planeDir)

  angle of two vector on a specified plane

### angleOnPlane

    public double angleOnPlane(ISwitchE e,
                               IVecI v,
                               IVecI planeDir)

  angle of two vector on a specified plane

### angleOnPlane

    public IDouble angleOnPlane(ISwitchR r,
                                IVecI v,
                                IVecI planeDir)

  angle of two vector on a specified plane

### angleOnPlane

    public double angleOnPlane(IVec pt,
                               IVec planeCenter,
                               IVec planeDir)

  angle of two points on a specified plane around the center

### angleOnPlane

    public double angleOnPlane(IVecI pt,
                               IVecI planeCenter,
                               IVecI planeDir)

  angle of two points on a specified plane around the center

### angleOnPlane

    public double angleOnPlane(ISwitchE e,
                               IVecI pt,
                               IVecI planeCenter,
                               IVecI planeDir)

  angle of two points on a specified plane around the center

### angleOnPlane

    public IDouble angleOnPlane(ISwitchR r,
                                IVecI pt,
                                IVecI planeCenter,
                                IVecI planeDir)

  angle of two points on a specified plane around the center

### rot

    public IVec rot(IVec axis,
                    double angle)

  rotate the vector around the axis

### rot

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

  rotate the vector around the axis

  Specified by:
    `rot` in interface `IVecI`

### rot

    public IVec rot(IVecI axis,
                    double angle)

  Description copied from interface: `IVecI`
  rotation around axis vector

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

### rot

    public IVec rot(IVecI axis,
                    IDoubleI angle)

  Description copied from interface: `IVecI`
  rotation around axis vector

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

### rot

    public IVec rot(double angle)

  rotation on xy-plane

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

### rot

    public IVec rot(IDoubleI angle)

  rotation on xy-plane

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

### rot

    public IVec rot(IVec center,
                    IVec axis,
                    double angle)

### rot

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

  Description copied from interface: `IVecI`
  rotation around axis vector and center point

  Specified by:
    `rot` in interface `IVecI`

### rot

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

  Description copied from interface: `IVecI`
  rotation around axis vector and center point

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

### rot

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

  Description copied from interface: `IVecI`
  rotation around axis vector and center point

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

### rot

    public IVec rot(IVec axis,
                    IVec destDir)

  rotation around axis towards destination direction

### rot

    public IVec rot(IVecI axis,
                    IVecI destDir)

  rotation around axis towards destination direction

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

### rot

    public IVec rot(IVec center,
                    IVec axis,
                    IVec destPt)

  rotation around axis and center towards destination point

### rot

    public IVec 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

    public IVec rot2(double angle)

  rotation on xy-plane; alias of rot(double)

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

### rot2

    public IVec rot2(IDoubleI angle)

  rotation on xy-plane; alias of rot(IDoubleI)

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

### rot2

    public IVec rot2(IVec center,
                     double angle)

  rotation on xy-plane

### rot2

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

  rotation on xy-plane

  Specified by:
    `rot2` in interface `IVecI`

### rot2

    public IVec rot2(IVecI center,
                     double angle)

  rotation on xy-plane

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

### rot2

    public IVec rot2(IVecI center,
                     IDoubleI angle)

  rotation on xy-plane

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

### rot2

    public IVec rot2(IVec destDir)

  rotation on xy-plane towards destDir

### rot2

    public IVec rot2(IVecI destDir)

  rotation on xy-plane towards destDir

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

### rot2

    public IVec rot2(IVec center,
                     IVec destPt)

  rotation on xy-plane towards destPt

### rot2

    public IVec rot2(IVecI center,
                     IVecI destPt)

  rotation on xy-plane towards destPt

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

### scale

    public IVec scale(IDoubleI f)

  alias of mul

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

### scale

    public IVec scale(double f)

  Description copied from interface: `IVecI`
  alias of mul

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

### scale

    public IVec scale(IVec center,
                      double f)

  scale from the center

### scale

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

  scale from the center

  Specified by:
    `scale` in interface `IVecI`

### scale

    public IVec scale(IVecI center,
                      double f)

  scale from the center

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

### scale

    public IVec scale(IVecI center,
                      IDoubleI f)

  scale from the center

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

### scale1d

    public IVec scale1d(IVec axis,
                        double f)

  scale only in 1 direction

### scale1d

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

  scale only in 1 direction

  Specified by:
    `scale1d` in interface `IVecI`

### scale1d

    public IVec scale1d(IVecI axis,
                        double f)

  scale only in 1 direction

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

### scale1d

    public IVec scale1d(IVecI axis,
                        IDoubleI f)

  scale only in 1 direction

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

### scale1d

    public IVec scale1d(IVec center,
                        IVec axis,
                        double f)

  scale only in 1 direction

### scale1d

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

  scale only in 1 direction

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

### scale1d

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

  scale only in 1 direction

  Specified by:
    `scale1d` in interface `IVecI`

### scale1d

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

  scale only in 1 direction

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

### ref

    public IVec ref(IVec planeDir)

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

### ref

    public IVec 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

    public IVec 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

    public IVec ref(IVec center,
                    IVec planeDir)

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

### ref

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

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

  Specified by:
    `ref` in interface `IVecI`

### ref

    public IVec ref(IVecI center,
                    IVecI planeDir)

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

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

### mirror

    public IVec mirror(IVec planeDir)

  alias of ref

### mirror

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

  alias of ref

  Specified by:
    `mirror` in interface `IVecI`

### mirror

    public IVec mirror(IVecI planeDir)

  alias of ref

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

### mirror

    public IVec mirror(IVec center,
                       IVec planeDir)

  alias of ref

### mirror

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

  alias of ref

  Specified by:
    `mirror` in interface `IVecI`

### mirror

    public IVec mirror(IVecI center,
                       IVecI planeDir)

  alias of ref

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

### shear

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

  Description copied from interface: `IVecI`
  shear operation

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

### shear

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

  Description copied from interface: `IVecI`
  shear operation

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

### shear

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

  Description copied from interface: `IVecI`
  shear operation

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

### shear

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

  Description copied from interface: `IVecI`
  shear operation

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

### shearXY

    public IVec shearXY(double sxy,
                        double syx)

  Description copied from interface: `IVecI`
  shear operation on XY

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

### shearXY

    public IVec shearXY(IDoubleI sxy,
                        IDoubleI syx)

  Description copied from interface: `IVecI`
  shear operation on XY

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

### shearXY

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

  Description copied from interface: `IVecI`
  shear operation on XY

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

### shearXY

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

  Description copied from interface: `IVecI`
  shear operation on XY

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

### shearYZ

    public IVec shearYZ(double syz,
                        double szy)

  Description copied from interface: `IVecI`
  shear operation on YZ

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

### shearYZ

    public IVec shearYZ(IDoubleI syz,
                        IDoubleI szy)

  Description copied from interface: `IVecI`
  shear operation on YZ

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

### shearYZ

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

  Description copied from interface: `IVecI`
  shear operation on YZ

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

### shearYZ

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

  Description copied from interface: `IVecI`
  shear operation on YZ

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

### shearZX

    public IVec shearZX(double szx,
                        double sxz)

  Description copied from interface: `IVecI`
  shear operation on ZX

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

### shearZX

    public IVec shearZX(IDoubleI szx,
                        IDoubleI sxz)

  Description copied from interface: `IVecI`
  shear operation on ZX

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

### shearZX

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

  Description copied from interface: `IVecI`
  shear operation on ZX

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

### shearZX

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

  Description copied from interface: `IVecI`
  shear operation on ZX

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

### translate

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

  Description copied from interface: `IVecI`
  alias of add()

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

### translate

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

  Description copied from interface: `IVecI`
  alias of add()

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

### translate

    public IVec translate(IVecI v)

  Description copied from interface: `IVecI`
  alias of add()

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

### transform

    public IVec transform(IMatrix3I mat)

  Description copied from interface: `IVecI`
  transform with a transformation matrix

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

### transform

    public IVec transform(IMatrix4I mat)

  Description copied from interface: `IVecI`
  transform with a transformation matrix

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

### transform

    public IVec transform(IVec xvec,
                          IVec yvec,
                          IVec zvec)

### transform

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

  Description copied from interface: `IVecI`
  transform with a transformation vectors

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

### transform

    public IVec transform(IVec xvec,
                          IVec yvec,
                          IVec zvec,
                          IVec translate)

### transform

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

  Description copied from interface: `IVecI`
  transform with a transformation vectors

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

### mv

    public IVec mv(double vx,
                   double vy,
                   double vz)

  mv() is alias of add()

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

### mv

    public IVec mv(IDoubleI vx,
                   IDoubleI vy,
                   IDoubleI vz)

  Description copied from interface: `IVecI`
  mv() is alias of add()

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

### mv

    public IVec mv(IVecI v)

  Description copied from interface: `IVecI`
  mv() is alias of add()

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

### cp

    public IVec 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

    public IVec cp(IVec v)

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

### cp

    public IVec cp(double vx,
                   double vy,
                   double vz)

  Description copied from interface: `IVecI`
  cp() is alias of dup().add()

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

### cp

    public IVec cp(IDoubleI vx,
                   IDoubleI vy,
                   IDoubleI vz)

  Description copied from interface: `IVecI`
  cp() is alias of dup().add()

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

### cp

    public IVec cp(IVecI v)

  Description copied from interface: `IVecI`
  cp() is alias of dup().add()

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

### dif

    public IVec dif(IVec v)

  create a new instance of difference

### dif

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

  create a new instance of difference

  Specified by:
    `dif` in interface `IVecI`

### dif

    public IVec dif(IVecI v)

  create a new instance of difference

  Specified by:
    `dif` in interface `IVecI`

### diff

    public IVec diff(IVec v)

  create a new instance of difference

### diff

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

  create a new instance of difference

  Specified by:
    `diff` in interface `IVecI`

### diff

    public IVec diff(IVecI v)

  create a new instance of difference

  Specified by:
    `diff` in interface `IVecI`

### mid

    public IVec mid(IVec v)

  create a new instance of midpoint

### mid

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

  create a new instance of midpoint

  Specified by:
    `mid` in interface `IVecI`

### mid

    public IVec mid(IVecI v)

  create a new instance of midpoint

  Specified by:
    `mid` in interface `IVecI`

### sum

    public IVec sum(IVec v)

  create a new instance of summation

### sum

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

  create a new instance of summation

  Specified by:
    `sum` in interface `IVecI`

### sum

    public IVec sum(IVecI v)

  create a new instance of summation

  Specified by:
    `sum` in interface `IVecI`

### sum

    public IVec sum(IVec... v)

  create a new instance of summation

### sum

    public IVec sum(IVecI... v)

  create a new instance of summation

  Specified by:
    `sum` in interface `IVecI`

### bisect

    public IVec bisect(IVec v)

  create a new instance of bisector

### bisect

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

  create a new instance of bisector

  Specified by:
    `bisect` in interface `IVecI`

### bisect

    public IVec bisect(IVecI v)

  create a new instance of bisector

  Specified by:
    `bisect` in interface `IVecI`

### sum

    public IVec sum(IVec v2,
                    double w1,
                    double w2)

  create a new instance of weighted summation

### sum

    public IVec sum(IVec v2,
                    double w2)

  create a new instance of weighted summation

### sum

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

  create a new instance of weighted summation

  Specified by:
    `sum` in interface `IVecI`

### sum

    public IVec sum(IVecI v2,
                    double w2)

  create a new instance of weighted summation

  Specified by:
    `sum` in interface `IVecI`

### sum

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

  create a new instance of weighted summation

  Specified by:
    `sum` in interface `IVecI`

### sum

    public IVec sum(IVecI v2,
                    IDoubleI w2)

  create a new instance of weighted summation

  Specified by:
    `sum` 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`

### toString

    public java.lang.String toString()

  Overrides:
    `toString` in class `java.lang.Object`

### isParallel

    public boolean isParallel(IVecI v)

### isParallel

    public boolean isParallel(IVecI v,
                              double angleTolerance)

### isPerpendicular

    public boolean isPerpendicular(IVecI v)

### isPerpendicular

    public boolean isPerpendicular(IVecI v,
                                   double angleTolerance)

### isStraight

    public boolean isStraight(IVecI v1,
                              IVecI v2)

### isStraight

    public boolean isStraight(IVecI v1,
                              IVecI v2,
                              double tolerance)

### isOnLine

    public boolean isOnLine(IVecI v1,
                            IVecI v2)

  determine if it's on & inside the line

### isOnLine

    public boolean isOnLine(IVecI v1,
                            IVecI v2,
                            double tolerance)

  determine if it's on & inside the line

### isOnSegment

    public boolean isOnSegment(IVecI v1,
                               IVecI v2)

  alias of isOnLine

### isOnSegment

    public boolean isOnSegment(IVecI v1,
                               IVecI v2,
                               double tolerance)

  alias of isOnLine

### isInside2d

    public boolean isInside2d(IVecI[] pts)

### isInside2d

    public boolean isInside2d(IVec2I[] pts)

### isInside2d

    public boolean isInside2d(IVecI projectionDir,
                              IVecI[] pts)

### isInside2d

    public boolean isInside2d(IVecI projectionDir,
                              IVec2I[] pts)

### isInsideTriangle

    public boolean isInsideTriangle(IVecI pt1,
                                    IVecI pt2,
                                    IVecI pt3)

### nml

    public IVec nml(IVecI v)

  alias of cross. (not unitized)

  Specified by:
    `nml` in interface `IVecI`

### nml

    public IVec nml(IVec v)

  alias of cross. (not unitized)

### nml

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

  alias of cross. (not unitized)

  Specified by:
    `nml` in interface `IVecI`

### nml

    public IVec nml(IVecI pt1,
                    IVecI pt2)

  create normal vector from 3 points of self, pt1 and pt2 (not unitized)

  Specified by:
    `nml` in interface `IVecI`

### nml

    public IVec nml(IVec pt1,
                    IVec pt2)

  create normal vector from 3 points of self, pt1 and pt2 (not unitized)

### nml

    public IVec 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 `IVecI`

### nml

    public static IVecI nml(IVecI pt1,
                            IVecI pt2,
                            IVecI pt3)

  create normal vector from 3 points

### nml

    public static IVec nml(IVec pt1,
                           IVec pt2,
                           IVec pt3)

  create normal vector from 3 points

### nml

    public static IVec nml(double vx1,
                           double vy1,
                           double vz1,
                           double vx2,
                           double vy2,
                           double vz2,
                           double vx3,
                           double vy3,
                           double vz3)

  create normal vector from 3 points

### getNormal

    public static IVecI getNormal(IVecI pt1,
                                  IVecI pt2,
                                  IVecI pt3)

  create normal vector from 3 points

### getNormal

    public static IVec getNormal(IVec pt1,
                                 IVec pt2,
                                 IVec pt3)

  create normal vector from 3 points

### getNormal

    public static IVec getNormal(double vx1,
                                 double vy1,
                                 double vz1,
                                 double vx2,
                                 double vy2,
                                 double vz2,
                                 double vx3,
                                 double vy3,
                                 double vz3)

### getNormal

    public IVecI getNormal(IVecI pt2,
                           IVecI pt3)

  alias of nml

### getNormal

    public IVec getNormal(IVec pt2,
                          IVec pt3)

  alias of nml

### projectToPlane

    public IVec projectToPlane(IVecI planeNormal)

  project a vector onto a plane at origin

### projectToPlane

    public IVec projectToPlane(IVecI projectDir,
                               IVecI planeNormal)

  project a vector onto a plane at origin towards a specified direction

### projectToPlane

    public IVec projectToPlane(IVecI projectDir,
                               IVecI planeNormal,
                               IVecI planePoint)

  project a point onto a plane at planePoint towards a specified direction

### projectToTriangle

    public IVec projectToTriangle(IVecI pt1,
                                  IVecI pt2,
                                  IVecI pt3)

### projectToLine

    public IVec projectToLine(IVecI linePt,
                              IVecI lineDir)

  project to an infinite line. the vector changes itself.

### projectToSegment

    public IVec projectToSegment(IVecI linePt1,
                                 IVecI linePt2)

  project to a line segment. this project itself

### projectTo2Vec

    public double[] projectTo2Vec(IVecI v1,
                                  IVecI v2)

  project the vector to the plane defined by two input vector and decompose vector to two vector and another perpendicular vector and returns coefficient of them. relationship of them is like below. this = return[0] * v1 + return[1] * v2 + return[2] * v1.cross(v2);

  Returns:
    array of three double number, first is coefficient of uvec, second is of vvec and third is of uvec.cross(vvec)

### projectToVec

    public double projectToVec(IVecI v)

  project this vector to the input vector and returns projection coefficient.

  Parameters:
    `v` - a vector for this vector to project on.

### decompose

    public IVec[] decompose(IVecI uaxis,
                            IVecI vaxis)

  decompose the vector to two input vectors and another perpendicular vector of those two and returns three decomposed vector. the vector itself doensn't change. this = return[0] + return[1] + return[2];

  Returns:
    array of three decomposed vectors

### distToLine

    public double distToLine(IVecI lineDir,
                             IVecI linePt)

  distance to an infinite line

### distToLine

    public double distToLine(IVecI lineDir)

  distance to a line dir

### distToSegment

    public double distToSegment(IVecI linePt1,
                                IVecI linePt2)

  distance to a line segment

### ratioOnSegment

    public double ratioOnSegment(IVecI linePt1,
                                 IVecI linePt2)

  ratio of projected point between two points (line segment). 0.0 is at linePt1, 1.0 is at linePt2.

### distToPlane

    public double distToPlane(IVecI planeDir,
                              IVecI planePt)

  distance to a plane

### distToTriangle

    public double distToTriangle(IVecI pt1,
                                 IVecI pt2,
                                 IVecI pt3)

  distance to a triangle

### perpendicularVecToLine

    public IVec perpendicularVecToLine(IVecI lineDir,
                                       IVecI linePt)

  create a new vector from this point to the line in parpendicular direction.

### perpendicularVecToLine

    public IVec perpendicularVecToLine(IVecI lineDir)

  create a new vector from line to this point perpendicular to the line dir

### isOnPlane

    public boolean isOnPlane(IVecI planePt1,
                             IVecI planePt2,
                             IVecI planePt3)

### isOnPlane

    public boolean isOnPlane(IVecI planeDir,
                             IVecI planePt)

### isOnPlane

    public boolean isOnPlane(IVecI planePt1,
                             IVecI planePt2,
                             IVecI planePt3,
                             double tolerance)

### isOnPlane

    public boolean isOnPlane(IVecI planeDir,
                             IVecI planePt,
                             double tolerance)

### isOnTriangle

    public boolean isOnTriangle(IVecI pt1,
                                IVecI pt2,
                                IVecI pt3,
                                double tolerance)

### isOnTriangle

    public boolean isOnTriangle(IVecI pt1,
                                IVecI pt2,
                                IVecI pt3)

### show

    public IVectorObject show(IVecI root)

  visualize a vector as an arrow.

  Parameters:
    `root` - A root position of the arrow.

### show

    public IVectorObject show()

  visualize a vector as an arrow. The root position of the arrow is the origin.

### show

    public IVectorObject show(IServerI s,
                              IVecI root)

  visualize a vector as an arrow.

  Parameters:
    `s` - A server to store the object.
    `root` - A root position of the arrow.

### show

    public IVectorObject show(IServerI s)

  visualize a vector as an arrow. The root position of the arrow is the origin.

  Parameters:
    `s` - A server to store the object.

### isStraight

    public static boolean isStraight(IVecI[] pts,
                                     double tolerance)

  static methods

### isStraight

    public static boolean isStraight(IVecI[] pts)

### isFlat

    public static boolean isFlat(IVecI pt1,
                                 IVecI pt2,
                                 IVecI pt3,
                                 IVecI pt4)

### isFlat

    public static boolean isFlat(IVecI pt1,
                                 IVecI pt2,
                                 IVecI pt3,
                                 IVecI pt4,
                                 double tolerance)

### isFlat

    public static boolean isFlat(IVecI[] pts)

### isFlat

    public static boolean isFlat(IVecI[] pts,
                                 double tolerance)

### isArrayEqual

    public static boolean isArrayEqual(IVec[] pts1,
                                       IVec[] pts2,
                                       boolean cyclic,
                                       boolean reverse)

### isArrayEqual

    public static boolean isArrayEqual(IVec[] pts1,
                                       IVec[] pts2,
                                       boolean cyclic,
                                       boolean reverse,
                                       double tolerance)

### averageNormal

    public static IVec averageNormal(IVecI[] pts)

  average normal of point array in form of a polyline. It return IVec, not IVecI. (Should it return IVecI?)

### averageNormal

    public static IVec averageNormal(IVecI[][] pts)

  average normal of point array in form of a matrix. It return IVec, not IVecI. (Should it return IVecI?)

### center

    public static IVec center(IVecI... v)

  calculating centetr of multiple points

### circumcenter

    public static IVec circumcenter(IVecI pt1,
                                    IVecI pt2,
                                    IVecI pt3)

  calculate circumcenter; center of circumcircle

### area

    public static double area(IVecI pt1,
                              IVecI pt2,
                              IVecI pt3)

  area of a triangle

### toIVecArray

    public static IVec[] toIVecArray(IVecI[] array)

### offsetNormal

    public static IVecI[] offsetNormal(IVecI[] pts,
                                       int ptNum,
                                       boolean close)

### offset

    public static IVecI[] offset(IVecI[] pts,
                                 double width)

  offset without normal vector. normal vectors are automatically generated

### offset

    public static IVecI[] offset(IVecI[] pts,
                                 IDoubleI width)

### offset

    public static IVecI[] offset(IVecI[] pts,
                                 double width,
                                 boolean closed)

### offset

    public static IVecI[] offset(IVecI[] pts,
                                 IDoubleI width,
                                 boolean closed)

### offset

    public static IVec[] offset(IVec[] pts,
                                double width)

### offset

    public static IVec[] offset(IVec[] pts,
                                double width,
                                boolean closed)

### offset

    public static IVecI[] offset(IVecI[] pts,
                                 double width,
                                 IVecI planeNormal)

  offset with one normal vector

### offset

    public static IVecI[] offset(IVecI[] pts,
                                 IDoubleI width,
                                 IVecI planeNormal)

### offset

    public static IVecI[] offset(IVecI[] pts,
                                 double width,
                                 IVecI planeNormal,
                                 boolean closed)

### offset

    public static IVecI[] offset(IVecI[] pts,
                                 IDoubleI width,
                                 IVecI planeNormal,
                                 boolean closed)

### offset

    public static IVec[] offset(IVec[] pts,
                                double width,
                                IVecI planeNormal)

### offset

    public static IVec[] offset(IVec[] pts,
                                double width,
                                IVecI planeNormal,
                                boolean closed)

### offset

    public static IVecI[] offset(IVecI[] pts,
                                 double width,
                                 IVecI[] normals)

  offset with array of normal vectors

### offset

    public static IVecI[] offset(IVecI[] pts,
                                 IDoubleI width,
                                 IVecI[] normals)

### offset

    public static IVecI[] offset(IVecI[] pts,
                                 double width,
                                 IVecI[] normals,
                                 boolean closed)

### offset

    public static IVecI[] offset(IVecI[] pts,
                                 IDoubleI width,
                                 IVecI[] normals,
                                 boolean closed)

### offset

    public static IVec[] offset(IVec[] pts,
                                double width,
                                IVecI[] normals)

### offset

    public static IVec[] offset(IVec[] pts,
                                double width,
                                IVecI[] normals,
                                boolean closed)

### offset

    public static IVecI[] offset(IVecI[] pts,
                                 int ptNum,
                                 int returnNum,
                                 double width,
                                 IVecI[] normals,
                                 boolean closed)

  offset points

  Parameters:
    `pts` - points to be offset
    `ptNum` - point num to be offset (equals to pts.length or less)
    `returnNum` - return array length (cannot be less than ptNum; when more than ptNum, the remaining is filled with null )
    `width` - offset width
    `normals` - normal vector at each point (number can be less than ptNum; if so, the last member is used for the rest). if normals is null, it's automatically set by offsetNormal method
    `closed` - closed polyline or not

### offset

    public static IVecI[] offset(IVecI[] pts,
                                 int ptNum,
                                 int returnNum,
                                 IDoubleI width,
                                 IVecI[] normals,
                                 boolean closed)

  offset points

  Parameters:
    `pts` - points to be offset
    `ptNum` - point num to be offset (equals to pts.length or less)
    `returnNum` - return array length (cannot be less than ptNum; when more than ptNum, the remaining is filled with null )
    `width` - offset width
    `normals` - normal vector at each point (number can be less than ptNum; if so, the last member is used for the rest)
    `closed` - closed polyline or not

### projectToPlane

    public static IVecI projectToPlane(IVecI pt,
                                       IVecI projectDir,
                                       IVecI planeNormal,
                                       IVecI planePt)

  project point a plane. input IVecI point pt is changed. doing same thing with projectToPlane(IVecI,IVecI,IVecI) but this is for IVecI.

### projectToPlane

    public static void projectToPlane(IVecI[] pts,
                                      IVecI projectDir,
                                      IVecI planeNormal,
                                      IVecI planePt)

  project point array to a plane. input points are changed.

### projectToPlane

    public static void projectToPlane(IVecI[][] pts,
                                      IVecI projectDir,
                                      IVecI planeNormal,
                                      IVecI planePt)

  project point array to a plane. input points are changed.

### projectToPlane

    public static void projectToPlane(IVecI[] pts,
                                      IVecI planeNormal,
                                      IVecI planePt)

  project point array to a plane. input points are changed.

### projectToPlane

    public static void projectToPlane(IVecI[][] pts,
                                      IVecI planeNormal,
                                      IVecI planePt)

  project point array to a plane. input points are changed.

### projectToPlane

    public static void projectToPlane(IVecI[] pts,
                                      IVecI planeNormal)

  project point array to a plane. input points are changed. projection plane point is the first element in the array. (should it be center?)

### projectToPlane

    public static void projectToPlane(IVecI[][] pts,
                                      IVecI planeNormal)

  project point array to a plane. input points are changed. projection plane point is the first element in the array. (should it be center?)

### projectToPlane

    public static void projectToPlane(IVecI[] pts)

  project point array to a plane. input points are changed. projection plane normal is average normal of pts. projection plane point is the first element in the array. (should it be center?)

### projectToPlane

    public static void projectToPlane(IVecI[][] pts)

  project point array to a plane. input points are changed. projection plane normal is average normal of pts. projection plane point is the first element in the array. (should it be center?)

### intersect

    public static IVec intersect(IVecI line1Pt1,
                                 IVecI line1Pt2,
                                 IVecI line2Pt1,
                                 IVecI line2Pt2)

  intersection of two infinite lines.

### intersect

    public static IVec intersect(IVecI line1Pt1,
                                 IVecI line1Pt2,
                                 IVecI line2Pt1,
                                 IVecI line2Pt2,
                                 double tolerance)

  intersection of two infinite lines.

### intersect

    public static IVec intersect(IVec line1Pt1,
                                 IVec line1Pt2,
                                 IVec line2Pt1,
                                 IVec line2Pt2)

  intersection of two infinite lines.

### intersect

    public static IVec intersect(IVec line1Pt1,
                                 IVec line1Pt2,
                                 IVec line2Pt1,
                                 IVec line2Pt2,
                                 double tolerance)

  intersection of two infinite lines. If two lines are skew and 4 points are not on the same plane and the gap is less than tolerance, intersection points is projected onto the line. If the gap is too big or lines are parallel, it returns null. If tolerance is negative, it accepts any gap of two lines and returns a close point on one line.

  Returns:
    intersection point or null if it cannot find intersection

### intersectInfiniteLines

    public static IVec intersectInfiniteLines(IVecI line1Pt1,
                                              IVecI line1Pt2,
                                              IVecI line2Pt1,
                                              IVecI line2Pt2)

  intersect infinite lines; alias of intersect()

### intersectInfiniteLines

    public static IVec intersectInfiniteLines(IVecI line1Pt1,
                                              IVecI line1Pt2,
                                              IVecI line2Pt1,
                                              IVecI line2Pt2,
                                              double tolerance)

  intersect infinite lines; alias of intersect()

### intersectInfiniteLines

    public static IVec intersectInfiniteLines(IVec line1Pt1,
                                              IVec line1Pt2,
                                              IVec line2Pt1,
                                              IVec line2Pt2)

  intersect infinite lines; alias of intersect()

### intersectInfiniteLines

    public static IVec intersectInfiniteLines(IVec line1Pt1,
                                              IVec line1Pt2,
                                              IVec line2Pt1,
                                              IVec line2Pt2,
                                              double tolerance)

  intersect infinite lines; alias of intersect()

### intersectInfiniteLine

    public static IVec intersectInfiniteLine(IVecI line1Pt1,
                                             IVecI line1Pt2,
                                             IVecI line2Pt1,
                                             IVecI line2Pt2)

  intersect infinite lines; alias of intersect()

### intersectInfiniteLine

    public static IVec intersectInfiniteLine(IVecI line1Pt1,
                                             IVecI line1Pt2,
                                             IVecI line2Pt1,
                                             IVecI line2Pt2,
                                             double tolerance)

  intersect infinite lines; alias of intersect()

### intersectInfiniteLine

    public static IVec intersectInfiniteLine(IVec line1Pt1,
                                             IVec line1Pt2,
                                             IVec line2Pt1,
                                             IVec line2Pt2)

  intersect infinite lines; alias of intersect()

### intersectInfiniteLine

    public static IVec intersectInfiniteLine(IVec line1Pt1,
                                             IVec line1Pt2,
                                             IVec line2Pt1,
                                             IVec line2Pt2,
                                             double tolerance)

  intersect infinite lines; alias of intersect()

### intersectInfLines

    public static IVec intersectInfLines(IVecI line1Pt1,
                                         IVecI line1Pt2,
                                         IVecI line2Pt1,
                                         IVecI line2Pt2)

  intersect infinite lines; alias of intersect()

### intersectInfLines

    public static IVec intersectInfLines(IVecI line1Pt1,
                                         IVecI line1Pt2,
                                         IVecI line2Pt1,
                                         IVecI line2Pt2,
                                         double tolerance)

  intersect infinite lines; alias of intersect()

### intersectInfLines

    public static IVec intersectInfLines(IVec line1Pt1,
                                         IVec line1Pt2,
                                         IVec line2Pt1,
                                         IVec line2Pt2)

  intersect infinite lines; alias of intersect()

### intersectInfLines

    public static IVec intersectInfLines(IVec line1Pt1,
                                         IVec line1Pt2,
                                         IVec line2Pt1,
                                         IVec line2Pt2,
                                         double tolerance)

  intersect infinite lines; alias of intersect()

### intersectInfLine

    public static IVec intersectInfLine(IVecI line1Pt1,
                                        IVecI line1Pt2,
                                        IVecI line2Pt1,
                                        IVecI line2Pt2)

  intersect infinite lines; alias of intersect()

### intersectInfLine

    public static IVec intersectInfLine(IVecI line1Pt1,
                                        IVecI line1Pt2,
                                        IVecI line2Pt1,
                                        IVecI line2Pt2,
                                        double tolerance)

  intersect infinite lines; alias of intersect()

### intersectInfLine

    public static IVec intersectInfLine(IVec line1Pt1,
                                        IVec line1Pt2,
                                        IVec line2Pt1,
                                        IVec line2Pt2)

  intersect infinite lines; alias of intersect()

### intersectInfLine

    public static IVec intersectInfLine(IVec line1Pt1,
                                        IVec line1Pt2,
                                        IVec line2Pt1,
                                        IVec line2Pt2,
                                        double tolerance)

  intersect infinite lines; alias of intersect()

### intersectSegment

    public static IVec intersectSegment(IVecI line1Pt1,
                                        IVecI line1Pt2,
                                        IVecI line2Pt1,
                                        IVecI line2Pt2)

### intersectSegment

    public static IVec intersectSegment(IVecI line1Pt1,
                                        IVecI line1Pt2,
                                        IVecI line2Pt1,
                                        IVecI line2Pt2,
                                        double tolerance)

### intersectSegment

    public static IVec intersectSegment(IVec line1Pt1,
                                        IVec line1Pt2,
                                        IVec line2Pt1,
                                        IVec line2Pt2)

  intersection of line segments. If intersection point is not on line, it returns null.

### intersectSegment

    public static IVec intersectSegment(IVec line1Pt1,
                                        IVec line1Pt2,
                                        IVec line2Pt1,
                                        IVec line2Pt2,
                                        double tolerance)

  intersection of line segments. If intersection point is not on line, it returns null.

  Returns:
    intersection point or null if it cannot find intersection

### intersectSegments

    public static IVec intersectSegments(IVecI line1Pt1,
                                         IVecI line1Pt2,
                                         IVecI line2Pt1,
                                         IVecI line2Pt2)

  intersection of line segments; alias of intersectSegment

### intersectSegments

    public static IVec intersectSegments(IVecI line1Pt1,
                                         IVecI line1Pt2,
                                         IVecI line2Pt1,
                                         IVecI line2Pt2,
                                         double tolerance)

### intersectSegments

    public static IVec intersectSegments(IVec line1Pt1,
                                         IVec line1Pt2,
                                         IVec line2Pt1,
                                         IVec line2Pt2)

### intersectSegments

    public static IVec intersectSegments(IVec line1Pt1,
                                         IVec line1Pt2,
                                         IVec line2Pt1,
                                         IVec line2Pt2,
                                         double tolerance)

### intersectSeg

    public static IVec intersectSeg(IVecI line1Pt1,
                                    IVecI line1Pt2,
                                    IVecI line2Pt1,
                                    IVecI line2Pt2)

  intersection of line segments; alias of intersectSegment

### intersectSeg

    public static IVec intersectSeg(IVecI line1Pt1,
                                    IVecI line1Pt2,
                                    IVecI line2Pt1,
                                    IVecI line2Pt2,
                                    double tolerance)

### intersectSeg

    public static IVec intersectSeg(IVec line1Pt1,
                                    IVec line1Pt2,
                                    IVec line2Pt1,
                                    IVec line2Pt2)

### intersectSeg

    public static IVec intersectSeg(IVec line1Pt1,
                                    IVec line1Pt2,
                                    IVec line2Pt1,
                                    IVec line2Pt2,
                                    double tolerance)

### intersectLines

    public static IVec intersectLines(IVecI line1Pt1,
                                      IVecI line1Pt2,
                                      IVecI line2Pt1,
                                      IVecI line2Pt2)

  intersection of line segments; alias of intersectSegment

### intersectLines

    public static IVec intersectLines(IVecI line1Pt1,
                                      IVecI line1Pt2,
                                      IVecI line2Pt1,
                                      IVecI line2Pt2,
                                      double tolerance)

### intersectLines

    public static IVec intersectLines(IVec line1Pt1,
                                      IVec line1Pt2,
                                      IVec line2Pt1,
                                      IVec line2Pt2)

### intersectLines

    public static IVec intersectLines(IVec line1Pt1,
                                      IVec line1Pt2,
                                      IVec line2Pt1,
                                      IVec line2Pt2,
                                      double tolerance)

### intersectLine

    public static IVec intersectLine(IVecI line1Pt1,
                                     IVecI line1Pt2,
                                     IVecI line2Pt1,
                                     IVecI line2Pt2)

  intersection of line segments; alias of intersectSegment

### intersectLine

    public static IVec intersectLine(IVecI line1Pt1,
                                     IVecI line1Pt2,
                                     IVecI line2Pt1,
                                     IVecI line2Pt2,
                                     double tolerance)

### intersectLine

    public static IVec intersectLine(IVec line1Pt1,
                                     IVec line1Pt2,
                                     IVec line2Pt1,
                                     IVec line2Pt2)

### intersectLine

    public static IVec intersectLine(IVec line1Pt1,
                                     IVec line1Pt2,
                                     IVec line2Pt1,
                                     IVec line2Pt2,
                                     double tolerance)

### intersectPlane

    public static IVec[] intersectPlane(IVec plane1Dir,
                                        IVec plane1Pt,
                                        IVec plane2Dir,
                                        IVec plane2Pt)

  intersection of two planes.

  Returns:
    array of two IVec. first is intersection line direction. second is a point on intersection line. or null if no intersection found

### intersectPlane

    public static IVec intersectPlane(IVec plane1Dir,
                                      IVec plane2Dir)

  intersection of two planes at the origin.

  Returns:
    intersection direction vector. when it's parallel, return value would be zero vector.

### intersectPlane

    public static IVec[] intersectPlane(IVec plane1Pt1,
                                        IVec plane1Pt2,
                                        IVec plane1Pt3,
                                        IVec plane2Pt1,
                                        IVec plane2Pt2,
                                        IVec plane2Pt3)

  intersection of two planes

  Returns:
    array of two IVec. first is intersection line direction. second is a point on intersection line. or null if no intersection found

### intersectPlaneAndLine

    public static IVec intersectPlaneAndLine(IVec planeDir,
                                             IVec planePt,
                                             IVec lineDir,
                                             IVec linePt)

  intersection of one plane and one infinite line

### intersectPlaneAndLine

    public static IVec intersectPlaneAndLine(IVec planeDir,
                                             IVec lineDir,
                                             IVec linePt)

  intersection of one plane at the origin and one infinite line

### intersectPlaneAndLine

    public static IVec intersectPlaneAndLine(IVec planePt1,
                                             IVec planePt2,
                                             IVec planePt3,
                                             IVec linePt1,
                                             IVec linePt2)

  intersection of one plane and one infinite line

### intersectPlaneAndSegment

    public static IVec intersectPlaneAndSegment(IVec planeDir,
                                                IVec planePt,
                                                IVec linePt1,
                                                IVec linePt2)

  intersection of one plane and one line segment. if the segment is not intersecting with the plane, it returns null.

### intersectPlaneAndSegment

    public static IVec intersectPlaneAndSegment(IVec planeDir,
                                                IVec linePt1,
                                                IVec linePt2)

  intersection of one plane at the origin and one line segment. if the segment is not intersecting with the plane, it returns null.

### bisectPlane

    public static IVec[] bisectPlane(IVec planeDir1,
                                     IVec planePt1,
                                     IVec planeDir2,
                                     IVec planePt2)

  bisector plane of two planes

  Returns:
    an array of two IVec; the first is plane normal direction, the second is plane point.

### intersectPlaneAndSphere

    public static IVec[] intersectPlaneAndSphere(IVec planeDir,
                                                 IVec planePt,
                                                 IVec sphereCenter,
                                                 double sphereRadius)

  intersection circle of a plane and a sphere.

  Returns:
    IVec[0] : normal or an intersection circle and the length of the vector is radius IVec[1] : center point of the intersection circle

### intersectCircleAndSphere

    public static IVec[] intersectCircleAndSphere(IVec circleNormal,
                                                  IVec circleCenter,
                                                  double circleRadius,
                                                  IVec sphereCenter,
                                                  double sphereRadius)

### intersectSphere

    public static IVec[] intersectSphere(IVec sphereCenter1,
                                         double radius1,
                                         IVec sphereCenter2,
                                         double radius2)

  intersection circle of two spheres

  Returns:
    null if no intersection or IVec[0] : normal vector of an intersection circle whose length is radius IVec[1] : center of the intersection circle

### intersectLineAndSphere

    public static IVec[] intersectLineAndSphere(IVec lineDir,
                                                IVec linePt,
                                                IVec center,
                                                double radius)

  intersection between an infinite line and a sphere.

  Returns:
    null if no intersection or one point when the line intersects only at one point or two points if it intersects at two points.

### intersectCircle

    public static IVec[] intersectCircle(IVec circleNormal1,
                                         IVec circleCenter1,
                                         double radius1,
                                         IVec circleNormal2,
                                         IVec circleCenter2,
                                         double radius2)

### angle

    public static double angle(IVecI pt1,
                               IVecI pt2,
                               IVecI pt3)

  measure angle of polyline of pt1, pt2 and pt3 at pt2, which is equivalent to measure angle between vectors from pt2 to pt1 and pt2 to pt3.

### closestPointsOn2Lines

    public static IVec[] closestPointsOn2Lines(IVecI lineDir1,
                                               IVecI linePt1,
                                               IVecI lineDir2,
                                               IVecI linePt2)

  find two closest points on two infinete lines in a skew relationship, which makes a segment perpendicular to two lines

### perpendicularTo2Lines

    public static IVec[] perpendicularTo2Lines(IVecI lineDir1,
                                               IVecI linePt1,
                                               IVecI lineDir2,
                                               IVecI linePt2)

  alias to closestPointsOn2Lines

### distBetween2Lines

    public static double distBetween2Lines(IVecI lineDir1,
                                           IVecI linePt1,
                                           IVecI lineDir2,
                                           IVecI linePt2)

Package | Class | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD