igeo
Class IVec

java.lang.Object
  extended by igeo.IParameterObject
      extended by igeo.IVec
All Implemented Interfaces:
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.
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
 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
 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 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)
           
 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)
           
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)
           
 IVec projectToPlane(IVecI projectDir, IVecI planeNormal, IVecI planePoint)
           
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 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 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 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 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 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 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 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

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 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)

projectToPlane

public IVec projectToPlane(IVecI projectDir,
                           IVecI planeNormal)

projectToPlane

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

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.

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

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.