igeo
Interface ICurveI

All Superinterfaces:
ICurveOp, IParameter, ITransformable, IVal
All Known Subinterfaces:
ITrimCurveI
All Known Implementing Classes:
IArc, IArcGeo, ICircle, ICircleGeo, ICurve, ICurveGeo, ICurveR, IPolycurveGeo, ISpringLine, IStraightenerCurve, ITensionLine, ITensionLineOnCurve, ITrimCurve

public interface ICurveI
extends ICurveOp, ITransformable

Abstract interface of NURBS curve.

Author:
Satoru Sugihara

Method Summary
 ICurveI add(double x, double y, double z)
          transformation: API of ITransformable inteface
 ICurveI add(IDoubleI x, IDoubleI y, IDoubleI z)
           
 ICurveI add(IVecI v)
           
 ICurveI add(IVecI v, double f)
          scale add
 ICurveI add(IVecI v, IDoubleI f)
          scale add
 IVecI center()
          returns center of geometry object
 IVecI closePt(IVec2I pt)
          find approximately closest point on a curve on 2D
 IVecI closePt(IVecI pt)
          find approximately closest point on a curve
 ICurveI cp()
          cp() is alias of dup()
 ICurveI cp(double x, double y, double z)
          cp() is alias of dup().add()
 ICurveI cp(IDoubleI x, IDoubleI y, IDoubleI z)
           
 IVecI cp(IIntegerI i)
           
 IVecI cp(int i)
           
 ICurveI cp(IVecI v)
           
 int cpNum()
           
 int cpNum(ISwitchE e)
           
 IIntegerI cpNum(ISwitchR r)
           
 IVecI[] cps()
          all control points
 int deg()
           
 int deg(ISwitchE e)
           
 IIntegerI deg(ISwitchR r)
           
 double dist(IVec2I pt)
          distance to the closest point on a curve on 2D
 double dist(IVecI pt)
          distance to the closest point on a curve
 ICurveI div(double v)
           
 ICurveI div(IDoubleI v)
           
 ICurveI dup()
          duplicate the instance
 IVecI end()
           
 IVecI endCP()
           
 IVecI ep(IIntegerI i)
           
 IVecI ep(int i)
           
 int epNum()
           
 int epNum(ISwitchE e)
           
 IIntegerI epNum(ISwitchR r)
           
 ICurveI flip()
          same with neg
 ICurveI flipU()
          alias of rev()
 ICurveGeo get()
           
 boolean isClosed()
           
 boolean isClosed(ISwitchE e)
           
 IBoolI isClosed(ISwitchR r)
           
 boolean isRational()
           
 boolean isRational(ISwitchE e)
           
 IBoolI isRational(ISwitchR r)
           
 boolean isValid()
           
 IDoubleI knot(IIntegerI i)
           
 double knot(int i)
          close curve with the current control points.
 int knotNum()
           
 int knotNum(ISwitchE e)
           
 IIntegerI knotNum(ISwitchR r)
           
 double[] knots()
          all knot values
 double[] knots(ISwitchE e)
           
 IDoubleI[] knots(ISwitchR r)
           
 double len()
           
 double len(ISwitchE e)
           
 IDouble len(ISwitchR r)
           
 IVecI mid()
          parametrically mid point of a curve
 ICurveI mirror(IVecI planeDir)
          mirror is alias of ref
 ICurveI mirror(IVecI center, IVecI planeDir)
           
 ICurveI mul(double v)
           
 ICurveI mul(IDoubleI v)
           
 ICurveI mv(double x, double y, double z)
          mv() is alias of add()
 ICurveI mv(IDoubleI x, IDoubleI y, IDoubleI z)
           
 ICurveI mv(IVecI v)
           
 ICurveI neg()
           
 int num()
          change degree.
 int num(ISwitchE e)
           
 IIntegerI num(ISwitchR r)
           
 IVecI pt(double u)
           
 IVecI pt(IDoubleI u)
           
 ICurveI ref(IVecI planeDir)
          reflect(mirror) 3 dimensionally to the other side of the plane
 ICurveI ref(IVecI center, IVecI planeDir)
           
 ICurveI rev()
          reverse U coordintates direction of curve, without creating a new object
 ICurveI revU()
          alias of rev()
 ICurveI rot(IVecI axis, double angle)
           
 ICurveI rot(IVecI axis, IDoubleI angle)
          rotation around axis vector
 ICurveI rot(IVecI axis, IVecI destDir)
          rotate to destination direction vector
 ICurveI rot(IVecI center, IVecI axis, double angle)
           
 ICurveI rot(IVecI center, IVecI axis, IDoubleI angle)
          rotation around axis vector and center
 ICurveI rot(IVecI center, IVecI axis, IVecI destPt)
          rotate to destination point location
 ICurveI scale(double f)
           
 ICurveI scale(IDoubleI f)
          alias of mul
 ICurveI scale(IVecI center, double f)
           
 ICurveI scale(IVecI center, IDoubleI f)
           
 ICurveI scale1d(IVecI axis, double f)
          scale only in 1 direction
 ICurveI scale1d(IVecI axis, IDoubleI f)
           
 ICurveI scale1d(IVecI center, IVecI axis, double f)
           
 ICurveI scale1d(IVecI center, IVecI axis, IDoubleI f)
           
 ICurveI shear(double sxy, double syx, double syz, double szy, double szx, double sxz)
          shear operation
 ICurveI shear(IDoubleI sxy, IDoubleI syx, IDoubleI syz, IDoubleI szy, IDoubleI szx, IDoubleI sxz)
           
 ICurveI shear(IVecI center, double sxy, double syx, double syz, double szy, double szx, double sxz)
           
 ICurveI shear(IVecI center, IDoubleI sxy, IDoubleI syx, IDoubleI syz, IDoubleI szy, IDoubleI szx, IDoubleI sxz)
           
 ICurveI shearXY(double sxy, double syx)
           
 ICurveI shearXY(IDoubleI sxy, IDoubleI syx)
           
 ICurveI shearXY(IVecI center, double sxy, double syx)
           
 ICurveI shearXY(IVecI center, IDoubleI sxy, IDoubleI syx)
           
 ICurveI shearYZ(double syz, double szy)
           
 ICurveI shearYZ(IDoubleI syz, IDoubleI szy)
           
 ICurveI shearYZ(IVecI center, double syz, double szy)
           
 ICurveI shearYZ(IVecI center, IDoubleI syz, IDoubleI szy)
           
 ICurveI shearZX(double szx, double sxz)
           
 ICurveI shearZX(IDoubleI szx, IDoubleI sxz)
           
 ICurveI shearZX(IVecI center, double szx, double sxz)
           
 ICurveI shearZX(IVecI center, IDoubleI szx, IDoubleI sxz)
           
 IVecI start()
           
 IVecI startCP()
           
 ICurveI sub(double x, double y, double z)
           
 ICurveI sub(IDoubleI x, IDoubleI y, IDoubleI z)
           
 ICurveI sub(IVecI v)
           
 IVecI tan(double u)
           
 IVecI tan(IDoubleI u)
           
 ICurveI transform(IMatrix3I mat)
           
 ICurveI transform(IMatrix4I mat)
           
 ICurveI transform(IVecI xvec, IVecI yvec, IVecI zvec)
           
 ICurveI transform(IVecI xvec, IVecI yvec, IVecI zvec, IVecI translate)
           
 ICurveI translate(double x, double y, double z)
          translate is alias of add()
 ICurveI translate(IDoubleI x, IDoubleI y, IDoubleI z)
           
 ICurveI translate(IVecI v)
           
 IDoubleI u(IInteger epIdx, IDouble epFraction)
           
 double u(int epIdx, double epFraction)
           
 double u(ISwitchE r, IVec2I pt)
           
 double u(ISwitchE r, IVecI pt)
           
 IDoubleI u(ISwitchR r, IVec2I pt)
           
 IDoubleI u(ISwitchR r, IVecI pt)
           
 double u(IVec2I pt)
          approximate invert projection from 2D location to interanl parameter U
 double u(IVecI pt)
          approximate invert projection from 3D location to interanl parameter U (closest point on curve)
 double uend()
           
 double uend(ISwitchE e)
           
 IDoubleI uend(ISwitchR r)
           
 double ustart()
           
 double ustart(ISwitchE e)
           
 IDoubleI ustart(ISwitchR r)
           
 
Methods inherited from interface igeo.ITransformable
add, add, rot, rot, rot2, rot2, rot2, rot2, rot2, rot2
 

Method Detail

get

ICurveGeo get()
Specified by:
get in interface ICurveOp
Specified by:
get in interface IParameter
Returns:
fixed value but in wrapper class

dup

ICurveI dup()
Description copied from interface: ITransformable
duplicate the instance

Specified by:
dup in interface ITransformable
Returns:
duplicated instance

isValid

boolean isValid()

pt

IVecI pt(double u)

pt

IVecI pt(IDoubleI u)

tan

IVecI tan(double u)

tan

IVecI tan(IDoubleI u)

cp

IVecI cp(int i)

cp

IVecI cp(IIntegerI i)

ep

IVecI ep(int i)

ep

IVecI ep(IIntegerI i)

cps

IVecI[] cps()
all control points


u

double u(IVecI pt)
approximate invert projection from 3D location to interanl parameter U (closest point on curve)


u

double u(ISwitchE r,
         IVecI pt)

u

IDoubleI u(ISwitchR r,
           IVecI pt)

u

double u(IVec2I pt)
approximate invert projection from 2D location to interanl parameter U


u

double u(ISwitchE r,
         IVec2I pt)

u

IDoubleI u(ISwitchR r,
           IVec2I pt)

closePt

IVecI closePt(IVecI pt)
find approximately closest point on a curve


closePt

IVecI closePt(IVec2I pt)
find approximately closest point on a curve on 2D


dist

double dist(IVecI pt)
distance to the closest point on a curve


dist

double dist(IVec2I pt)
distance to the closest point on a curve on 2D


knot

double knot(int i)
close curve with the current control points. it changes total number of control points and knot vector dependng on the degree. new knot vector has equal default intervals destroying original variable intervals.


knot

IDoubleI knot(IIntegerI i)

knots

double[] knots()
all knot values


knots

double[] knots(ISwitchE e)

knots

IDoubleI[] knots(ISwitchR r)

knotNum

int knotNum()

knotNum

int knotNum(ISwitchE e)

knotNum

IIntegerI knotNum(ISwitchR r)

isRational

boolean isRational()
Returns:
returns true if any of control point has non-default(1.0) weight otherwise false.

isRational

boolean isRational(ISwitchE e)

isRational

IBoolI isRational(ISwitchR r)

deg

int deg()

deg

int deg(ISwitchE e)

deg

IIntegerI deg(ISwitchR r)

num

int num()
change degree. this operation is costly because it needs to rebuild the whole knots and basisFunction


num

int num(ISwitchE e)

num

IIntegerI num(ISwitchR r)

cpNum

int cpNum()

cpNum

int cpNum(ISwitchE e)

cpNum

IIntegerI cpNum(ISwitchR r)

start

IVecI start()

end

IVecI end()

startCP

IVecI startCP()

endCP

IVecI endCP()

mid

IVecI mid()
parametrically mid point of a curve


center

IVecI center()
returns center of geometry object


epNum

int epNum()

epNum

int epNum(ISwitchE e)

epNum

IIntegerI epNum(ISwitchR r)

len

double len()

len

double len(ISwitchE e)

len

IDouble len(ISwitchR r)

u

double u(int epIdx,
         double epFraction)

u

IDoubleI u(IInteger epIdx,
           IDouble epFraction)

ustart

double ustart()

uend

double uend()

ustart

double ustart(ISwitchE e)

uend

double uend(ISwitchE e)

ustart

IDoubleI ustart(ISwitchR r)

uend

IDoubleI uend(ISwitchR r)

isClosed

boolean isClosed()

isClosed

boolean isClosed(ISwitchE e)

isClosed

IBoolI isClosed(ISwitchR r)

rev

ICurveI rev()
reverse U coordintates direction of curve, without creating a new object


revU

ICurveI revU()
alias of rev()


flipU

ICurveI flipU()
alias of rev()


add

ICurveI add(double x,
            double y,
            double z)
transformation: API of ITransformable inteface

Specified by:
add in interface ITransformable

add

ICurveI add(IDoubleI x,
            IDoubleI y,
            IDoubleI z)
Specified by:
add in interface ITransformable

add

ICurveI add(IVecI v)
Specified by:
add in interface ITransformable

sub

ICurveI sub(double x,
            double y,
            double z)
Specified by:
sub in interface ITransformable

sub

ICurveI sub(IDoubleI x,
            IDoubleI y,
            IDoubleI z)
Specified by:
sub in interface ITransformable

sub

ICurveI sub(IVecI v)
Specified by:
sub in interface ITransformable

mul

ICurveI mul(IDoubleI v)
Specified by:
mul in interface ITransformable

mul

ICurveI mul(double v)
Specified by:
mul in interface ITransformable

div

ICurveI div(IDoubleI v)
Specified by:
div in interface ITransformable

div

ICurveI div(double v)
Specified by:
div in interface ITransformable

neg

ICurveI neg()
Specified by:
neg in interface ITransformable

flip

ICurveI flip()
same with neg

Specified by:
flip in interface ITransformable

add

ICurveI add(IVecI v,
            double f)
scale add

Specified by:
add in interface ITransformable

add

ICurveI add(IVecI v,
            IDoubleI f)
Description copied from interface: ITransformable
scale add

Specified by:
add in interface ITransformable

rot

ICurveI rot(IVecI axis,
            IDoubleI angle)
Description copied from interface: ITransformable
rotation around axis vector

Specified by:
rot in interface ITransformable

rot

ICurveI rot(IVecI axis,
            double angle)
Specified by:
rot in interface ITransformable

rot

ICurveI rot(IVecI center,
            IVecI axis,
            IDoubleI angle)
Description copied from interface: ITransformable
rotation around axis vector and center

Specified by:
rot in interface ITransformable

rot

ICurveI rot(IVecI center,
            IVecI axis,
            double angle)
Specified by:
rot in interface ITransformable

rot

ICurveI rot(IVecI axis,
            IVecI destDir)
rotate to destination direction vector

Specified by:
rot in interface ITransformable

rot

ICurveI rot(IVecI center,
            IVecI axis,
            IVecI destPt)
rotate to destination point location

Specified by:
rot in interface ITransformable

scale

ICurveI scale(IDoubleI f)
alias of mul

Specified by:
scale in interface ITransformable

scale

ICurveI scale(double f)
Specified by:
scale in interface ITransformable

scale

ICurveI scale(IVecI center,
              IDoubleI f)
Specified by:
scale in interface ITransformable

scale

ICurveI scale(IVecI center,
              double f)
Specified by:
scale in interface ITransformable

scale1d

ICurveI scale1d(IVecI axis,
                double f)
scale only in 1 direction

Specified by:
scale1d in interface ITransformable

scale1d

ICurveI scale1d(IVecI axis,
                IDoubleI f)
Specified by:
scale1d in interface ITransformable

scale1d

ICurveI scale1d(IVecI center,
                IVecI axis,
                double f)
Specified by:
scale1d in interface ITransformable

scale1d

ICurveI scale1d(IVecI center,
                IVecI axis,
                IDoubleI f)
Specified by:
scale1d in interface ITransformable

ref

ICurveI ref(IVecI planeDir)
reflect(mirror) 3 dimensionally to the other side of the plane

Specified by:
ref in interface ITransformable

ref

ICurveI ref(IVecI center,
            IVecI planeDir)
Specified by:
ref in interface ITransformable

mirror

ICurveI mirror(IVecI planeDir)
mirror is alias of ref

Specified by:
mirror in interface ITransformable

mirror

ICurveI mirror(IVecI center,
               IVecI planeDir)
Specified by:
mirror in interface ITransformable

shear

ICurveI shear(double sxy,
              double syx,
              double syz,
              double szy,
              double szx,
              double sxz)
shear operation

Specified by:
shear in interface ITransformable

shear

ICurveI shear(IDoubleI sxy,
              IDoubleI syx,
              IDoubleI syz,
              IDoubleI szy,
              IDoubleI szx,
              IDoubleI sxz)
Specified by:
shear in interface ITransformable

shear

ICurveI shear(IVecI center,
              double sxy,
              double syx,
              double syz,
              double szy,
              double szx,
              double sxz)
Specified by:
shear in interface ITransformable

shear

ICurveI shear(IVecI center,
              IDoubleI sxy,
              IDoubleI syx,
              IDoubleI syz,
              IDoubleI szy,
              IDoubleI szx,
              IDoubleI sxz)
Specified by:
shear in interface ITransformable

shearXY

ICurveI shearXY(double sxy,
                double syx)
Specified by:
shearXY in interface ITransformable

shearXY

ICurveI shearXY(IDoubleI sxy,
                IDoubleI syx)
Specified by:
shearXY in interface ITransformable

shearXY

ICurveI shearXY(IVecI center,
                double sxy,
                double syx)
Specified by:
shearXY in interface ITransformable

shearXY

ICurveI shearXY(IVecI center,
                IDoubleI sxy,
                IDoubleI syx)
Specified by:
shearXY in interface ITransformable

shearYZ

ICurveI shearYZ(double syz,
                double szy)
Specified by:
shearYZ in interface ITransformable

shearYZ

ICurveI shearYZ(IDoubleI syz,
                IDoubleI szy)
Specified by:
shearYZ in interface ITransformable

shearYZ

ICurveI shearYZ(IVecI center,
                double syz,
                double szy)
Specified by:
shearYZ in interface ITransformable

shearYZ

ICurveI shearYZ(IVecI center,
                IDoubleI syz,
                IDoubleI szy)
Specified by:
shearYZ in interface ITransformable

shearZX

ICurveI shearZX(double szx,
                double sxz)
Specified by:
shearZX in interface ITransformable

shearZX

ICurveI shearZX(IDoubleI szx,
                IDoubleI sxz)
Specified by:
shearZX in interface ITransformable

shearZX

ICurveI shearZX(IVecI center,
                double szx,
                double sxz)
Specified by:
shearZX in interface ITransformable

shearZX

ICurveI shearZX(IVecI center,
                IDoubleI szx,
                IDoubleI sxz)
Specified by:
shearZX in interface ITransformable

translate

ICurveI translate(double x,
                  double y,
                  double z)
translate is alias of add()

Specified by:
translate in interface ITransformable

translate

ICurveI translate(IDoubleI x,
                  IDoubleI y,
                  IDoubleI z)
Specified by:
translate in interface ITransformable

translate

ICurveI translate(IVecI v)
Specified by:
translate in interface ITransformable

transform

ICurveI transform(IMatrix3I mat)
Specified by:
transform in interface ITransformable

transform

ICurveI transform(IMatrix4I mat)
Specified by:
transform in interface ITransformable

transform

ICurveI transform(IVecI xvec,
                  IVecI yvec,
                  IVecI zvec)
Specified by:
transform in interface ITransformable

transform

ICurveI transform(IVecI xvec,
                  IVecI yvec,
                  IVecI zvec,
                  IVecI translate)
Specified by:
transform in interface ITransformable

mv

ICurveI mv(double x,
           double y,
           double z)
mv() is alias of add()

Specified by:
mv in interface ITransformable

mv

ICurveI mv(IDoubleI x,
           IDoubleI y,
           IDoubleI z)
Specified by:
mv in interface ITransformable

mv

ICurveI mv(IVecI v)
Specified by:
mv in interface ITransformable

cp

ICurveI cp()
cp() is alias of dup()

Specified by:
cp in interface ITransformable

cp

ICurveI cp(double x,
           double y,
           double z)
cp() is alias of dup().add()

Specified by:
cp in interface ITransformable

cp

ICurveI cp(IDoubleI x,
           IDoubleI y,
           IDoubleI z)
Specified by:
cp in interface ITransformable

cp

ICurveI cp(IVecI v)
Specified by:
cp in interface ITransformable