igeo
Class ITensileNet

java.lang.Object
  extended by igeo.ITensileNet

public class ITensileNet
extends java.lang.Object

Class to create tensile network which consists of IParticle and ITensionLine.

Version:
0.7.0.0;
Author:
Satoru Sugihara

Nested Class Summary
static class ITensileNet.IParticleOnCurveComparator
           
 
Field Summary
static boolean constantTension
          boolean switch to make tension (of ITensionLine) constant not depending on the distance of two points
static boolean deleteInputLine
          boolean switch to delete input lines
static boolean enableSpacingEqualizer
          boolean switch to put spacing equalizer force on the same rail curves
static boolean enableStraightener
          boolean switch to put straightening force on connected lines
static java.lang.String equalizerLayer
           
static double equalizerTension
          strength of tension to equalize spacing on the same rail curves
static java.awt.Color fixedPointColor
          color of fixed node points
static java.lang.String fixedPointLayer
           
static boolean fixOpenLinePoint
          boolean switch to fix open end points of lines which are not connected any other line
static boolean fixPointNotOnRail
          in case with rail curves, boolean switch to fix points which are not on any rail curves
static boolean fixPointOnRailEnd
          in case with rail curves, boolean switch to fix points which are on end points of rail curves
static double friction
          friction of node points (of IParticleAgent)
 java.util.ArrayList<ITensionI> links
           
static boolean noBranchingStraightener
          remove straighteners whose two points are shared and branching.
 java.util.ArrayList<IParticleI> nodes
           
static double onRailTension
          strength of tension between points on the same rail curves
static java.lang.Class<? extends IParticleI> particleClass
          class for a custom particle class
static java.lang.reflect.Constructor<? extends IParticleI> particleConstructor
          constructor for a custom particle class
static java.lang.Class<?>[] particleConstructorParameters
           
static java.lang.Class<? extends IParticleOnCurveI> particleOnCurveClass
          class for a custom particle on curve class
static java.lang.reflect.Constructor<? extends IParticleOnCurveI> particleOnCurveConstructor
          constructor for a custom particle on curve class
static java.lang.Class<?>[] particleOnCurveConstructorParameters
           
static java.awt.Color pointColor
          color of node points
static java.lang.String pointLayer
           
static java.awt.Color railPointColor
          color of node points on rail curve
static double railTolerance
          tolerance to check which points are on rail
static java.awt.Color straightenerColor
          color of straightener curve
static java.lang.String straightenerLayer
           
static double straightenerTension
          strength of tension to straighten lines
static double straightenerThresholdAngle
          if the connected line is less than this angle, it put straightening force on those lines
static double tension
          strength of tension (of ITensionLine)
static java.lang.Class<? extends ITensionI> tensionClass
          class for a custom tension class
static java.lang.reflect.Constructor<? extends ITensionI> tensionConstructor
          constructor for a custom tension class
static java.lang.Class<?>[] tensionConstructorParameters
           
static boolean tensionOnSameRail
          in case with rail curves, boolean switch to put tension between points on the same rail curve
static double tolerance
          tolerance to check which points are identical and which lines are connected
 
Constructor Summary
ITensileNet()
           
ITensileNet(java.util.ArrayList<ITensionI> links, java.util.ArrayList<IParticleI> nodes)
           
 
Method Summary
static ITensileNet create(ICurveI[] railCurves, ICurveI[] linkLines, ICurveI[] fixedLines, IVecI[] fixedPoints)
          create a network of tension line on rail curve.
static ITensileNet create(ICurveI[] railCurves, ICurveI[] linkLines, IVecI[] fixedPoints)
          create a network of tension line on rail curve.
static ITensileNet create(ICurveI[] linkLines, IVecI[] fixedPoints)
          create a network of tension line.
static IParticleOnCurveI createParticleOnClosestCurve(ICurveI[] railCurves, IVec pos, double closenessTolerance, double uTolerance)
          find the closest curve to the point and put particle on the curve.
static IParticleOnCurveI createParticleOnCurve(ICurveI curve, IVec pos, double closenessTolerance, double uTolerance)
          put particle on the curve.
static ICurveI findClosestCurve(ICurveI[] railCurves, IVec pos, int searchResolution)
          find the closest curve to the point pos out of railsCurves.
static IParticleI getParticleInstance(IVec pt)
           
static IParticleOnCurveI getParticleOnCurveInstance(ICurveI curve, double upos, IVec pos)
           
static ITensionI getTensionInstance(IParticleI pt1, IParticleI pt2)
           
static boolean searchParticleConstructor(java.lang.Class<? extends IParticleI> pclass)
          set constructor of particle class.
static boolean searchParticleOnCurveConstructor(java.lang.Class<? extends IParticleOnCurveI> pclass)
          set constructor of particle class.
static boolean searchTensionConstructor(java.lang.Class<? extends ITensionI> tclass)
          set constructor of tension class.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

friction

public static double friction
friction of node points (of IParticleAgent)


tension

public static double tension
strength of tension (of ITensionLine)


onRailTension

public static double onRailTension
strength of tension between points on the same rail curves


straightenerTension

public static double straightenerTension
strength of tension to straighten lines


equalizerTension

public static double equalizerTension
strength of tension to equalize spacing on the same rail curves


constantTension

public static boolean constantTension
boolean switch to make tension (of ITensionLine) constant not depending on the distance of two points


tolerance

public static double tolerance
tolerance to check which points are identical and which lines are connected


railTolerance

public static double railTolerance
tolerance to check which points are on rail


pointColor

public static java.awt.Color pointColor
color of node points


railPointColor

public static java.awt.Color railPointColor
color of node points on rail curve


fixedPointColor

public static java.awt.Color fixedPointColor
color of fixed node points


straightenerColor

public static java.awt.Color straightenerColor
color of straightener curve


pointLayer

public static java.lang.String pointLayer

fixedPointLayer

public static java.lang.String fixedPointLayer

straightenerLayer

public static java.lang.String straightenerLayer

equalizerLayer

public static java.lang.String equalizerLayer

fixOpenLinePoint

public static boolean fixOpenLinePoint
boolean switch to fix open end points of lines which are not connected any other line


deleteInputLine

public static boolean deleteInputLine
boolean switch to delete input lines


tensionOnSameRail

public static boolean tensionOnSameRail
in case with rail curves, boolean switch to put tension between points on the same rail curve


fixPointOnRailEnd

public static boolean fixPointOnRailEnd
in case with rail curves, boolean switch to fix points which are on end points of rail curves


fixPointNotOnRail

public static boolean fixPointNotOnRail
in case with rail curves, boolean switch to fix points which are not on any rail curves


enableStraightener

public static boolean enableStraightener
boolean switch to put straightening force on connected lines


straightenerThresholdAngle

public static double straightenerThresholdAngle
if the connected line is less than this angle, it put straightening force on those lines


noBranchingStraightener

public static boolean noBranchingStraightener
remove straighteners whose two points are shared and branching.


enableSpacingEqualizer

public static boolean enableSpacingEqualizer
boolean switch to put spacing equalizer force on the same rail curves


particleClass

public static java.lang.Class<? extends IParticleI> particleClass
class for a custom particle class


tensionClass

public static java.lang.Class<? extends ITensionI> tensionClass
class for a custom tension class


particleOnCurveClass

public static java.lang.Class<? extends IParticleOnCurveI> particleOnCurveClass
class for a custom particle on curve class


particleConstructor

public static java.lang.reflect.Constructor<? extends IParticleI> particleConstructor
constructor for a custom particle class


particleConstructorParameters

public static java.lang.Class<?>[] particleConstructorParameters

tensionConstructor

public static java.lang.reflect.Constructor<? extends ITensionI> tensionConstructor
constructor for a custom tension class


tensionConstructorParameters

public static java.lang.Class<?>[] tensionConstructorParameters

particleOnCurveConstructor

public static java.lang.reflect.Constructor<? extends IParticleOnCurveI> particleOnCurveConstructor
constructor for a custom particle on curve class


particleOnCurveConstructorParameters

public static java.lang.Class<?>[] particleOnCurveConstructorParameters

links

public java.util.ArrayList<ITensionI> links

nodes

public java.util.ArrayList<IParticleI> nodes
Constructor Detail

ITensileNet

public ITensileNet()

ITensileNet

public ITensileNet(java.util.ArrayList<ITensionI> links,
                   java.util.ArrayList<IParticleI> nodes)
Method Detail

create

public static ITensileNet create(ICurveI[] linkLines,
                                 IVecI[] fixedPoints)
create a network of tension line.

Parameters:
linkLines - lines to create tension line. if it's curve, it's simplified to line.
fixedPoints - if those points are on the end point of linkLines, those end points of tension line are fixed.

searchParticleConstructor

public static boolean searchParticleConstructor(java.lang.Class<? extends IParticleI> pclass)
set constructor of particle class. if success returns true


searchTensionConstructor

public static boolean searchTensionConstructor(java.lang.Class<? extends ITensionI> tclass)
set constructor of tension class. if success returns true


searchParticleOnCurveConstructor

public static boolean searchParticleOnCurveConstructor(java.lang.Class<? extends IParticleOnCurveI> pclass)
set constructor of particle class. if success returns true


getParticleInstance

public static IParticleI getParticleInstance(IVec pt)

getTensionInstance

public static ITensionI getTensionInstance(IParticleI pt1,
                                           IParticleI pt2)

getParticleOnCurveInstance

public static IParticleOnCurveI getParticleOnCurveInstance(ICurveI curve,
                                                           double upos,
                                                           IVec pos)

create

public static ITensileNet create(ICurveI[] railCurves,
                                 ICurveI[] linkLines,
                                 IVecI[] fixedPoints)
create a network of tension line on rail curve.

Parameters:
railCurves - curves on which all the points sit.
linkLines - lines to create tension line. if it's curve, it's simplified to line.
fixedPoints - if those points are on the end point of linkLines, those end points of tension line are fixed. this can be null.

create

public static ITensileNet create(ICurveI[] railCurves,
                                 ICurveI[] linkLines,
                                 ICurveI[] fixedLines,
                                 IVecI[] fixedPoints)
create a network of tension line on rail curve.

Parameters:
railCurves - curves on which all the points sit.
linkLines - lines to create tension line. if it's curve, it's simplified to line.
fixedLines - end points of fixedLines are added to fixedPoints.
fixedPoints - if those points are on the end point of linkLines, those end points of tension line are fixed.

findClosestCurve

public static ICurveI findClosestCurve(ICurveI[] railCurves,
                                       IVec pos,
                                       int searchResolution)
find the closest curve to the point pos out of railsCurves.

Parameters:
railCurves - target curves to search
pos - point to measure the distance to check how close
searchResolution - resolution per a curve specifying how many points per a curve to be checked

createParticleOnClosestCurve

public static IParticleOnCurveI createParticleOnClosestCurve(ICurveI[] railCurves,
                                                             IVec pos,
                                                             double closenessTolerance,
                                                             double uTolerance)
find the closest curve to the point and put particle on the curve. if the curve is not close enough within closenessTolerance, particle is not created.

Parameters:
railCurves - target curves to search
pos - point to measure the distance to check how close
closenessTolerance - tolerance to determine if the point is on the curve or not
uTolerance - tolerance in u parameter to specify how precise u parameter of particle shoould be

createParticleOnCurve

public static IParticleOnCurveI createParticleOnCurve(ICurveI curve,
                                                      IVec pos,
                                                      double closenessTolerance,
                                                      double uTolerance)
put particle on the curve. if the curve is not close enough within closenessTolerance, particle is not created.

Parameters:
curve - target curves to be on.
pos - point to specify location of particle on the curve and this point is embed inside IParticleOnCurve and controlled by it.
closenessTolerance - tolerance to determine if the point is on the curve or not. if this is negative, it will create any closest particle to the point even if it's far.
uTolerance - tolerance in u parameter to specify how precise u parameter of particle shoould be