igeo

## Class ITensileNet

- java.lang.Object
- - igeo.ITensileNet

-     public class ITensileNet
      extends java.lang.Object

  Class to create tensile network which consists of IParticle and ITensionLine.
  Author:
    Satoru Sugihara

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Class and Description
    --- | ---
    `static class` | `ITensileNet.ConstructorAndParameters<T>`
    `static class` | `ITensileNet.IParticleCoupler`
    `static class` | `ITensileNet.IParticleOnCurveComparator`

  - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `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; if embedTensionInLine is true, this variable is ignored.
    `static boolean` | `deleteInputPoint` boolean switch to delete input fix points
    `static boolean` | `embedTensionInLine` if input line is instance of ICurve (not ICurveR), put tension as dynamics inside the curve keeping the original line.
    `static java.lang.String` | `equalizerLayer` layer to put equalizer lines
    `static double` | `equalizerTension` strength of tension to equalize spacing on the same rail curves
    `static boolean` | `fixAtRailEnd` in case with rail curves, boolean switch to fix points which are on end points of rail curves
    `static IColor` | `fixedPointColor` color of fixed node points
    `static java.lang.String` | `fixedPointLayer` layer to put fixed node points
    `static boolean` | `fixOpenEnd` boolean switch to fix open end points of lines which are not connected any other line
    `static boolean` | `fixPointOffRail` in case with rail curves, boolean switch to fix points which are not on any rail curves
    `static double` | `friction` friction of node points (of IParticle)
    `static boolean` | `keepDuplicatedMeshEdge` for creating tensile net out of polygon mesh; if this is false, duplicated edge on adjacent faces are ignored as tension line (duplicated edges inside the polygon mesh are kept, only tension line is not created internally).
    `static boolean` | `keepDuplicatedMeshVertex`
    `java.util.ArrayList<ITensionI>` | `links` instance members
    `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 IParticleFactory` | `particleFactory` factory class for a custom particle class.
    `static java.lang.Class<? extends IParticleOnCurveI>` | `particleOnCurveClass` class for a custom particle on curve class
    `static IParticleOnCurveFactory` | `particleOnCurveFactory` factory class for a custom particle on curve class.
    `static IColor` | `pointColor` color of node points
    `static java.lang.String` | `pointLayer` layer to put node points
    `static IColor` | `railPointColor` color of node points on rail curve
    `static double` | `railTolerance` tolerance to check which points are on rail
    `static boolean` | `removeBranchStraightener` remove straighteners whose two points are shared and branching.
    `static boolean` | `removeMeshDuplicates` if true, it rebuilds mesh before converting into tensile net by removing all duplicated vertices and edges.
    `static boolean` | `spacingEqualizer` boolean switch to put spacing equalizer force on the same rail curves
    `static boolean` | `straightener` boolean switch to put straightening force on connected lines
    `static IColor` | `straightenerColor` color of straightener curve
    `static java.lang.String` | `straightenerLayer` layer to put straighterner lines
    `java.util.ArrayList<IStraightenerI>` | `straighteners`
    `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 IColor` | `tensionColor` color of tension curve; default (null) is the original color of an input geometry
    `static ITensionFactory` | `tensionFactory` factory class for a custom tension class.
    `static java.lang.String` | `tensionLayer` layer to put tension lines; default (when null) is to put the original layer of an input geometry
    `static boolean` | `tensionOnRail` 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

    Constructors
    Constructor and Description
    `ITensileNet()`
    `ITensileNet(java.util.ArrayList<ITensionI> links, java.util.ArrayList<IParticleI> nodes)`
    `ITensileNet(java.util.ArrayList<ITensionI> links, java.util.ArrayList<IParticleI> nodes, java.util.ArrayList<IStraightenerI> straighteners)`

  - ### Method Summary

    All Methods Static Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `static void` | `constantTension(boolean c)` boolean switch to make tension (of ITensionLine) constant not depending on the distance of two points
    `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 ITensileNet` | `create(IMeshI mesh, IVecI[] fixedPoints)` create a network of tension out of a polygon mesh.
    `static java.util.ArrayList<IParticleI>` | `createParticleLink(IVecI[][] linePts, java.util.ArrayList<IVecI> pointList, IVecI[] fixedPoints, IParticleI[][] linkParticlesResult, java.lang.Class<? extends IParticleI> customParticleClass)`
    `static IParticleOnCurveI` | `createParticleOnClosestCurve(ICurveI[] railCurves, IVec pos, double closenessTolerance, double uTolerance, ITensileNet.ConstructorAndParameters<IParticleOnCurveI> particleOnCurveConst)` find the closest curve to the point and put particle on the curve.
    `static IParticleOnCurveI` | `createParticleOnCurve(ICurveI curve, IVec pos, double closenessTolerance, double uTolerance, ITensileNet.ConstructorAndParameters<IParticleOnCurveI> particleOnCurveConst)` put particle on the curve.
    `static java.util.ArrayList<IStraightenerI>` | `createStraighteners(java.util.ArrayList<ITensionI> tlines)` create straighteners out of tension lines.
    `static java.util.ArrayList<ITensionI>` | `createTensions(IParticleI[][] links, IColor[] linkColors, ILayer[] linkLayer, java.lang.Class<? extends ITensionI> customTensionClass)`
    `static void` | `deleteInputLine(boolean f)` boolean switch to delete input lines
    `static void` | `deleteInputPoint(boolean f)` boolean switch to delete input fix points
    `static void` | `disableConstantTension()`
    `static void` | `disableDeleteInputLine()` boolean switch to delete input lines
    `static void` | `disableDeleteInputPoint()` boolean switch to delete input fix points
    `static void` | `disableEmbedTensionInLine()` if input line is instance of ICurve (not ICurveR), put tension as dynamics inside the curve keeping the original line.
    `static void` | `disableFixAtRailEnd()` in case with rail curves, boolean switch to fix points which are on end points of rail curves
    `static void` | `disableFixOpenEnd()` boolean switch to fix open end points of lines which are not connected any other line
    `static void` | `disableFixPointOffRail(boolean f)` in case with rail curves, boolean switch to fix points which are not on any rail curves
    `static void` | `disableRemoveBranchStraightener()` remove straighteners whose two points are shared and branching.
    `static void` | `disableSpacingEqualizer()` boolean switch to put spacing equalizer force on the same rail curves
    `static void` | `disableStraightener()` boolean switch to put straightening force on connected lines
    `static void` | `disableTensionOnRail()` in case with rail curves, boolean switch to put tension between points on the same rail curve
    `static void` | `embedTensionInLine(boolean f)` if input line is instance of ICurve (not ICurveR), put tension as dynamics inside the curve keeping the original line.
    `static void` | `enableConstantTension()`
    `static void` | `enableDeleteInputLine()` boolean switch to delete input lines
    `static void` | `enableDeleteInputPoint()` boolean switch to delete input fix points
    `static void` | `enableEmbedTensionInLine()` if input line is instance of ICurve (not ICurveR), put tension as dynamics inside the curve keeping the original line.
    `static void` | `enableFixAtRailEnd()` in case with rail curves, boolean switch to fix points which are on end points of rail curves
    `static void` | `enableFixOpenEnd()` boolean switch to fix open end points of lines which are not connected any other line
    `static void` | `enableFixPointOffRail(boolean f)` in case with rail curves, boolean switch to fix points which are not on any rail curves
    `static void` | `enableRemoveBranchStraightener()` remove straighteners whose two points are shared and branching.
    `static void` | `enableSpacingEqualizer()` boolean switch to put spacing equalizer force on the same rail curves
    `static void` | `enableStraightener()` boolean switch to put straightening force on connected lines
    `static void` | `enableTensionOnRail()` in case with rail curves, boolean switch to put tension between points on the same rail curve
    `static void` | `equalizerLayer(java.lang.String l)` layer to put equalizer lines
    `static void` | `equalizerTension(double t)` strength of tension to equalize spacing on the same rail curves
    `static ICurveI` | `findClosestCurve(ICurveI[] railCurves, IVec pos, int searchResolution)` find the closest curve to the point pos out of railsCurves.
    `static void` | `fixAtRailEnd(boolean f)` in case with rail curves, boolean switch to fix points which are on end points of rail curves
    `static void` | `fixedPointColor(float gray)` color of fixed node points
    `static void` | `fixedPointColor(float gray, float a)` color of fixed node points
    `static void` | `fixedPointColor(float r, float g, float b)` color of fixed node points
    `static void` | `fixedPointColor(float r, float g, float b, float a)` color of fixed node points
    `static void` | `fixedPointColor(IColor c)` color of fixed node points
    `static void` | `fixedPointColor(int gray)` color of fixed node points
    `static void` | `fixedPointColor(int gray, int a)` color of fixed node points
    `static void` | `fixedPointColor(int r, int g, int b)` color of fixed node points
    `static void` | `fixedPointColor(int r, int g, int b, int a)` color of fixed node points
    `static void` | `fixedPointLayer(java.lang.String l)` layer to put fixed node points
    `static void` | `fixOpenEnd(boolean f)` boolean switch to fix open end points of lines which are not connected any other line
    `static void` | `fixParticles(java.util.ArrayList<IParticleI> particles, IVecI[] fixedPoints)`
    `static void` | `fixPointOffRail(boolean f)` in case with rail curves, boolean switch to fix points which are not on any rail curves
    `static void` | `fric(double f)` alias of frction(double)
    `static void` | `friction(double f)` friction of node points (of IParticle)
    `static IParticleI` | `getParticleInstance(IVec pt, java.lang.reflect.Constructor<? extends IParticleI> ptclConstructor, java.lang.Class<?>[] ptclConstructorParameters)` set constructor of particle class.
    `static IParticleOnCurveI` | `getParticleOnCurveInstance(ICurveI curve, double upos, IVec pos, java.lang.reflect.Constructor<? extends IParticleOnCurveI> pocConstructor, java.lang.Class<?>[] pocConstructorParameters)`
    `static ITensionI` | `getTensionInstance(IParticleI pt1, IParticleI pt2, java.lang.reflect.Constructor<? extends ITensionI> tnsnConstructor, java.lang.Class<?>[] tnsnConstructorParameters)`
    `ITensileNet` | `join(ITensileNet net)`
    `ITensileNet` | `join(ITensileNet net, double tolerance)`
    `static void` | `keepDuplicatedMeshEdge(boolean keep)` for creating tensile net out of polygon mesh; if this is false, duplicated edge on adjacent faces are ignored as tension line (duplicated edges inside the polygon mesh are kept, only tension line is not created internally).
    `static void` | `keepDuplicatedMeshVertex(boolean keep)`
    `static void` | `onRailTension(double t)` strength of tension between points on the same rail curves
    `static void` | `particleClass(java.lang.Class<? extends IParticleI> cls)` class for a custom particle class
    `static void` | `particleFactory(IParticleFactory f)` factory class for a custom particle class
    `static void` | `particleOnCurveClass(java.lang.Class<? extends IParticleOnCurveI> cls)` class for a custom particle on curve class
    `static void` | `particleOnCurveFactory(IParticleOnCurveFactory f)` factory class for a custom particleOnCurve class
    `static void` | `pointColor(float gray)` color of node points
    `static void` | `pointColor(float gray, float a)` color of node points
    `static void` | `pointColor(float r, float g, float b)` color of node points
    `static void` | `pointColor(float r, float g, float b, float a)` color of node points
    `static void` | `pointColor(IColor c)` color of node points
    `static void` | `pointColor(int gray)` color of node points
    `static void` | `pointColor(int gray, int a)` color of node points
    `static void` | `pointColor(int r, int g, int b)` color of node points
    `static void` | `pointColor(int r, int g, int b, int a)` color of node points
    `static void` | `pointLayer(java.lang.String l)` layer to put node points
    `static void` | `railPointColor(float gray)` color of node points on rail curve
    `static void` | `railPointColor(float gray, float a)` color of node points on rail curve
    `static void` | `railPointColor(float r, float g, float b)` color of node points on rail curve
    `static void` | `railPointColor(float r, float g, float b, float a)` color of node points on rail curve
    `static void` | `railPointColor(IColor c)` color of node points on rail curve
    `static void` | `railPointColor(int gray)` color of node points on rail curve
    `static void` | `railPointColor(int gray, int a)` color of node points on rail curve
    `static void` | `railPointColor(int r, int g, int b)` color of node points on rail curve
    `static void` | `railPointColor(int r, int g, int b, int a)` color of node points on rail curve
    `static void` | `railTolerance(double t)` tolerance to check which points are identical and which lines are connected
    `static void` | `removeBranchStraightener(boolean f)` remove straighteners whose two points are shared and branching.
    `static void` | `removeMeshDuplicates(boolean flag)`
    `static ITensileNet.ConstructorAndParameters<IParticleI>` | `searchParticleConstructor(java.lang.Class<? extends IParticleI> pclass)` set constructor of particle class.
    `static ITensileNet.ConstructorAndParameters<IParticleOnCurveI>` | `searchParticleOnCurveConstructor(java.lang.Class<? extends IParticleOnCurveI> pclass)` set constructor of particle class.
    `static ITensileNet.ConstructorAndParameters<ITensionI>` | `searchTensionConstructor(java.lang.Class<? extends ITensionI> tclass)` set constructor of tension class.
    `static void` | `spacingEqualizer(boolean f)` boolean switch to put spacing equalizer force on the same rail curves
    `static void` | `straightener(boolean s)` boolean switch to put straightening force on connected lines
    `static void` | `straightenerColor(float gray)` color of straightener curve
    `static void` | `straightenerColor(float gray, float a)` color of straightener curve
    `static void` | `straightenerColor(float r, float g, float b)` color of straightener curve
    `static void` | `straightenerColor(float r, float g, float b, float a)` color of straightener curve
    `static void` | `straightenerColor(IColor c)` color of straightener curve
    `static void` | `straightenerColor(int gray)` color of straightener curve
    `static void` | `straightenerColor(int gray, int a)` color of straightener curve
    `static void` | `straightenerColor(int r, int g, int b)` color of straightener curve
    `static void` | `straightenerColor(int r, int g, int b, int a)` color of straightener curve
    `static void` | `straightenerLayer(java.lang.String l)` layer to put straighterner lines
    `static void` | `straightenerTension(double t)` strength of tension to straighten lines
    `static void` | `straightenerThresholdAngle(double angle)` if the connected line is less than this angle, it put straightening force on those lines
    `static void` | `tension(double t)` strength of tension (of ITensionLine)
    `static void` | `tensionClass(java.lang.Class<? extends ITensionI> cls)` class for a custom tension class
    `static void` | `tensionColor(float gray)` color of tension curve; default is the original color of an input geometry
    `static void` | `tensionColor(float gray, float a)` color of tension curve; default is the original color of an input geometry
    `static void` | `tensionColor(float r, float g, float b)` color of tension curve; default is the original color of an input geometry
    `static void` | `tensionColor(float r, float g, float b, float a)` color of tension curve; default is the original color of an input geometry
    `static void` | `tensionColor(IColor c)` color of tension curve; default is the original color of an input geometry
    `static void` | `tensionColor(int gray)` color of tension curve; default is the original color of an input geometry
    `static void` | `tensionColor(int gray, int a)` color of tension curve; default is the original color of an input geometry
    `static void` | `tensionColor(int r, int g, int b)` color of tension curve; default is the original color of an input geometry
    `static void` | `tensionColor(int r, int g, int b, int a)` color of tension curve; default is the original color of an input geometry
    `static void` | `tensionFactory(ITensionFactory f)` factory class for a custom tension class
    `static void` | `tensionLayer(java.lang.String l)` layer to put tension lines; default (when null) is to put the original layer of an input geometry
    `static void` | `tensionOnRail(boolean f)` in case with rail curves, boolean switch to put tension between points on the same rail curve
    `static void` | `tolerance(double t)` tolerance to check which points are identical and which lines are connected

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

    - #### 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 IColor pointColor

      color of node points

    - #### railPointColor

          public static IColor railPointColor

      color of node points on rail curve

    - #### fixedPointColor

          public static IColor fixedPointColor

      color of fixed node points

    - #### straightenerColor

          public static IColor straightenerColor

      color of straightener curve

    - #### tensionColor

          public static IColor tensionColor

      color of tension curve; default (null) is the original color of an input geometry

    - #### pointLayer

          public static java.lang.String pointLayer

      layer to put node points

    - #### fixedPointLayer

          public static java.lang.String fixedPointLayer

      layer to put fixed node points

    - #### straightenerLayer

          public static java.lang.String straightenerLayer

      layer to put straighterner lines

    - #### equalizerLayer

          public static java.lang.String equalizerLayer

      layer to put equalizer lines

    - #### tensionLayer

          public static java.lang.String tensionLayer

      layer to put tension lines; default (when null) is to put the original layer of an input geometry

    - #### fixOpenEnd

          public static boolean fixOpenEnd

      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; if embedTensionInLine is true, this variable is ignored.

    - #### embedTensionInLine

          public static boolean embedTensionInLine

      if input line is instance of ICurve (not ICurveR), put tension as dynamics inside the curve keeping the original line. this switch precedes deleteInputLine

    - #### deleteInputPoint

          public static boolean deleteInputPoint

      boolean switch to delete input fix points

    - #### tensionOnRail

          public static boolean tensionOnRail

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

    - #### fixAtRailEnd

          public static boolean fixAtRailEnd

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

    - #### fixPointOffRail

          public static boolean fixPointOffRail

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

    - #### straightener

          public static boolean straightener

      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

    - #### removeBranchStraightener

          public static boolean removeBranchStraightener

      remove straighteners whose two points are shared and branching.

    - #### spacingEqualizer

          public static boolean spacingEqualizer

      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

    - #### particleFactory

          public static IParticleFactory particleFactory

      factory class for a custom particle class. factory's priority is higher than class

    - #### tensionClass

          public static java.lang.Class<? extends ITensionI> tensionClass

      class for a custom tension class

    - #### tensionFactory

          public static ITensionFactory tensionFactory

      factory class for a custom tension class. factory's priority is higher than class

    - #### particleOnCurveClass

          public static java.lang.Class<? extends IParticleOnCurveI> particleOnCurveClass

      class for a custom particle on curve class

    - #### particleOnCurveFactory

          public static IParticleOnCurveFactory particleOnCurveFactory

      factory class for a custom particle on curve class. factory's priority is higher than class

    - #### removeMeshDuplicates

          public static boolean removeMeshDuplicates

      if true, it rebuilds mesh before converting into tensile net by removing all duplicated vertices and edges. On the other hand, Two other parameter keepDuplicatedMeshEdge and keepDuplicatedMeshVertex doesn't change mesh itself and give you control on each of edge and vertex

    - #### keepDuplicatedMeshEdge

          public static boolean keepDuplicatedMeshEdge

      for creating tensile net out of polygon mesh; if this is false, duplicated edge on adjacent faces are ignored as tension line (duplicated edges inside the polygon mesh are kept, only tension line is not created internally).

    - #### keepDuplicatedMeshVertex

          public static boolean keepDuplicatedMeshVertex

    - #### links

          public java.util.ArrayList<ITensionI> links

      instance members

    - #### nodes

          public java.util.ArrayList<IParticleI> nodes

    - #### straighteners

          public java.util.ArrayList<IStraightenerI> straighteners

  - ### Constructor Detail

    - #### ITensileNet

          public ITensileNet()

    - #### ITensileNet

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

    - #### ITensileNet

          public ITensileNet(java.util.ArrayList<ITensionI> links,
                             java.util.ArrayList<IParticleI> nodes,
                             java.util.ArrayList<IStraightenerI> straighteners)

  - ### Method Detail

    - #### friction

          public static void friction(double f)

      friction of node points (of IParticle)

    - #### fric

          public static void fric(double f)

      alias of frction(double)

    - #### tension

          public static void tension(double t)

      strength of tension (of ITensionLine)

    - #### onRailTension

          public static void onRailTension(double t)

      strength of tension between points on the same rail curves

    - #### straightenerTension

          public static void straightenerTension(double t)

      strength of tension to straighten lines

    - #### equalizerTension

          public static void equalizerTension(double t)

      strength of tension to equalize spacing on the same rail curves

    - #### constantTension

          public static void constantTension(boolean c)

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

    - #### enableConstantTension

          public static void enableConstantTension()

    - #### disableConstantTension

          public static void disableConstantTension()

    - #### tolerance

          public static void tolerance(double t)

      tolerance to check which points are identical and which lines are connected

    - #### railTolerance

          public static void railTolerance(double t)

      tolerance to check which points are identical and which lines are connected

    - #### pointColor

          public static void pointColor(IColor c)

      color of node points

    - #### pointColor

          public static void pointColor(int r,
                                        int g,
                                        int b,
                                        int a)

      color of node points

    - #### pointColor

          public static void pointColor(int r,
                                        int g,
                                        int b)

      color of node points

    - #### pointColor

          public static void pointColor(int gray,
                                        int a)

      color of node points

    - #### pointColor

          public static void pointColor(int gray)

      color of node points

    - #### pointColor

          public static void pointColor(float r,
                                        float g,
                                        float b,
                                        float a)

      color of node points

    - #### pointColor

          public static void pointColor(float r,
                                        float g,
                                        float b)

      color of node points

    - #### pointColor

          public static void pointColor(float gray,
                                        float a)

      color of node points

    - #### pointColor

          public static void pointColor(float gray)

      color of node points

    - #### railPointColor

          public static void railPointColor(IColor c)

      color of node points on rail curve

    - #### railPointColor

          public static void railPointColor(int r,
                                            int g,
                                            int b,
                                            int a)

      color of node points on rail curve

    - #### railPointColor

          public static void railPointColor(int r,
                                            int g,
                                            int b)

      color of node points on rail curve

    - #### railPointColor

          public static void railPointColor(int gray,
                                            int a)

      color of node points on rail curve

    - #### railPointColor

          public static void railPointColor(int gray)

      color of node points on rail curve

    - #### railPointColor

          public static void railPointColor(float r,
                                            float g,
                                            float b,
                                            float a)

      color of node points on rail curve

    - #### railPointColor

          public static void railPointColor(float r,
                                            float g,
                                            float b)

      color of node points on rail curve

    - #### railPointColor

          public static void railPointColor(float gray,
                                            float a)

      color of node points on rail curve

    - #### railPointColor

          public static void railPointColor(float gray)

      color of node points on rail curve

    - #### fixedPointColor

          public static void fixedPointColor(IColor c)

      color of fixed node points

    - #### fixedPointColor

          public static void fixedPointColor(int r,
                                             int g,
                                             int b,
                                             int a)

      color of fixed node points

    - #### fixedPointColor

          public static void fixedPointColor(int r,
                                             int g,
                                             int b)

      color of fixed node points

    - #### fixedPointColor

          public static void fixedPointColor(int gray,
                                             int a)

      color of fixed node points

    - #### fixedPointColor

          public static void fixedPointColor(int gray)

      color of fixed node points

    - #### fixedPointColor

          public static void fixedPointColor(float r,
                                             float g,
                                             float b,
                                             float a)

      color of fixed node points

    - #### fixedPointColor

          public static void fixedPointColor(float r,
                                             float g,
                                             float b)

      color of fixed node points

    - #### fixedPointColor

          public static void fixedPointColor(float gray,
                                             float a)

      color of fixed node points

    - #### fixedPointColor

          public static void fixedPointColor(float gray)

      color of fixed node points

    - #### straightenerColor

          public static void straightenerColor(IColor c)

      color of straightener curve

    - #### straightenerColor

          public static void straightenerColor(int r,
                                               int g,
                                               int b,
                                               int a)

      color of straightener curve

    - #### straightenerColor

          public static void straightenerColor(int r,
                                               int g,
                                               int b)

      color of straightener curve

    - #### straightenerColor

          public static void straightenerColor(int gray,
                                               int a)

      color of straightener curve

    - #### straightenerColor

          public static void straightenerColor(int gray)

      color of straightener curve

    - #### straightenerColor

          public static void straightenerColor(float r,
                                               float g,
                                               float b,
                                               float a)

      color of straightener curve

    - #### straightenerColor

          public static void straightenerColor(float r,
                                               float g,
                                               float b)

      color of straightener curve

    - #### straightenerColor

          public static void straightenerColor(float gray,
                                               float a)

      color of straightener curve

    - #### straightenerColor

          public static void straightenerColor(float gray)

      color of straightener curve

    - #### tensionColor

          public static void tensionColor(IColor c)

      color of tension curve; default is the original color of an input geometry

    - #### tensionColor

          public static void tensionColor(int r,
                                          int g,
                                          int b,
                                          int a)

      color of tension curve; default is the original color of an input geometry

    - #### tensionColor

          public static void tensionColor(int r,
                                          int g,
                                          int b)

      color of tension curve; default is the original color of an input geometry

    - #### tensionColor

          public static void tensionColor(int gray,
                                          int a)

      color of tension curve; default is the original color of an input geometry

    - #### tensionColor

          public static void tensionColor(int gray)

      color of tension curve; default is the original color of an input geometry

    - #### tensionColor

          public static void tensionColor(float r,
                                          float g,
                                          float b,
                                          float a)

      color of tension curve; default is the original color of an input geometry

    - #### tensionColor

          public static void tensionColor(float r,
                                          float g,
                                          float b)

      color of tension curve; default is the original color of an input geometry

    - #### tensionColor

          public static void tensionColor(float gray,
                                          float a)

      color of tension curve; default is the original color of an input geometry

    - #### tensionColor

          public static void tensionColor(float gray)

      color of tension curve; default is the original color of an input geometry

    - #### pointLayer

          public static void pointLayer(java.lang.String l)

      layer to put node points

    - #### fixedPointLayer

          public static void fixedPointLayer(java.lang.String l)

      layer to put fixed node points

    - #### straightenerLayer

          public static void straightenerLayer(java.lang.String l)

      layer to put straighterner lines

    - #### equalizerLayer

          public static void equalizerLayer(java.lang.String l)

      layer to put equalizer lines

    - #### tensionLayer

          public static void tensionLayer(java.lang.String l)

      layer to put tension lines; default (when null) is to put the original layer of an input geometry

    - #### fixOpenEnd

          public static void fixOpenEnd(boolean f)

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

    - #### enableFixOpenEnd

          public static void enableFixOpenEnd()

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

    - #### disableFixOpenEnd

          public static void disableFixOpenEnd()

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

    - #### deleteInputLine

          public static void deleteInputLine(boolean f)

      boolean switch to delete input lines

    - #### enableDeleteInputLine

          public static void enableDeleteInputLine()

      boolean switch to delete input lines

    - #### disableDeleteInputLine

          public static void disableDeleteInputLine()

      boolean switch to delete input lines

    - #### embedTensionInLine

          public static void embedTensionInLine(boolean f)

      if input line is instance of ICurve (not ICurveR), put tension as dynamics inside the curve keeping the original line. this switch precedes deleteInputLine

    - #### enableEmbedTensionInLine

          public static void enableEmbedTensionInLine()

      if input line is instance of ICurve (not ICurveR), put tension as dynamics inside the curve keeping the original line. this switch precedes deleteInputLine

    - #### disableEmbedTensionInLine

          public static void disableEmbedTensionInLine()

      if input line is instance of ICurve (not ICurveR), put tension as dynamics inside the curve keeping the original line. this switch precedes deleteInputLine

    - #### deleteInputPoint

          public static void deleteInputPoint(boolean f)

      boolean switch to delete input fix points

    - #### enableDeleteInputPoint

          public static void enableDeleteInputPoint()

      boolean switch to delete input fix points

    - #### disableDeleteInputPoint

          public static void disableDeleteInputPoint()

      boolean switch to delete input fix points

    - #### tensionOnRail

          public static void tensionOnRail(boolean f)

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

    - #### enableTensionOnRail

          public static void enableTensionOnRail()

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

    - #### disableTensionOnRail

          public static void disableTensionOnRail()

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

    - #### fixAtRailEnd

          public static void fixAtRailEnd(boolean f)

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

    - #### enableFixAtRailEnd

          public static void enableFixAtRailEnd()

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

    - #### disableFixAtRailEnd

          public static void disableFixAtRailEnd()

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

    - #### fixPointOffRail

          public static void fixPointOffRail(boolean f)

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

    - #### enableFixPointOffRail

          public static void enableFixPointOffRail(boolean f)

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

    - #### disableFixPointOffRail

          public static void disableFixPointOffRail(boolean f)

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

    - #### straightener

          public static void straightener(boolean s)

      boolean switch to put straightening force on connected lines

    - #### enableStraightener

          public static void enableStraightener()

      boolean switch to put straightening force on connected lines

    - #### disableStraightener

          public static void disableStraightener()

      boolean switch to put straightening force on connected lines

    - #### straightenerThresholdAngle

          public static void straightenerThresholdAngle(double angle)

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

    - #### removeBranchStraightener

          public static void removeBranchStraightener(boolean f)

      remove straighteners whose two points are shared and branching.

    - #### enableRemoveBranchStraightener

          public static void enableRemoveBranchStraightener()

      remove straighteners whose two points are shared and branching.

    - #### disableRemoveBranchStraightener

          public static void disableRemoveBranchStraightener()

      remove straighteners whose two points are shared and branching.

    - #### spacingEqualizer

          public static void spacingEqualizer(boolean f)

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

    - #### enableSpacingEqualizer

          public static void enableSpacingEqualizer()

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

    - #### disableSpacingEqualizer

          public static void disableSpacingEqualizer()

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

    - #### particleClass

          public static void particleClass(java.lang.Class<? extends IParticleI> cls)

      class for a custom particle class

    - #### particleFactory

          public static void particleFactory(IParticleFactory f)

      factory class for a custom particle class

    - #### tensionClass

          public static void tensionClass(java.lang.Class<? extends ITensionI> cls)

      class for a custom tension class

    - #### tensionFactory

          public static void tensionFactory(ITensionFactory f)

      factory class for a custom tension class

    - #### particleOnCurveClass

          public static void particleOnCurveClass(java.lang.Class<? extends IParticleOnCurveI> cls)

      class for a custom particle on curve class

    - #### particleOnCurveFactory

          public static void particleOnCurveFactory(IParticleOnCurveFactory f)

      factory class for a custom particleOnCurve class

    - #### removeMeshDuplicates

          public static void removeMeshDuplicates(boolean flag)

    - #### keepDuplicatedMeshEdge

          public static void keepDuplicatedMeshEdge(boolean keep)

      for creating tensile net out of polygon mesh; if this is false, duplicated edge on adjacent faces are ignored as tension line (duplicated edges inside the polygon mesh are kept, only tension line is not created internally).

    - #### keepDuplicatedMeshVertex

          public static void keepDuplicatedMeshVertex(boolean keep)

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

    - #### create

          public static ITensileNet create(IMeshI mesh,
                                           IVecI[] fixedPoints)

      create a network of tension out of a polygon mesh. All the edges are converted into tension member.
      Parameters:
        `mesh` - an input mesh whose edges are converted into tension lines and deform the original mesh geometry.
        `fixedPoints` - if those points are on the vertices of the mesh, those vertices are fixed.

    - #### fixParticles

          public static void fixParticles(java.util.ArrayList<IParticleI> particles,
                                          IVecI[] fixedPoints)

    - #### createParticleLink

          public static java.util.ArrayList<IParticleI> createParticleLink(IVecI[][] linePts,
                                                                           java.util.ArrayList<IVecI> pointList,
                                                                           IVecI[] fixedPoints,
                                                                           IParticleI[][] linkParticlesResult,
                                                                           java.lang.Class<? extends IParticleI> customParticleClass)

    - #### createTensions

          public static java.util.ArrayList<ITensionI> createTensions(IParticleI[][] links,
                                                                      IColor[] linkColors,
                                                                      ILayer[] linkLayer,
                                                                      java.lang.Class<? extends ITensionI> customTensionClass)

    - #### createStraighteners

          public static java.util.ArrayList<IStraightenerI> createStraighteners(java.util.ArrayList<ITensionI> tlines)

      create straighteners out of tension lines. currently creating IStraightenerCurve (not IStraightener).

    - #### searchParticleConstructor

          public static ITensileNet.ConstructorAndParameters<IParticleI> searchParticleConstructor(java.lang.Class<? extends IParticleI> pclass)

      set constructor of particle class. if success returns true

    - #### searchTensionConstructor

          public static ITensileNet.ConstructorAndParameters<ITensionI> searchTensionConstructor(java.lang.Class<? extends ITensionI> tclass)

      set constructor of tension class. if success returns true

    - #### searchParticleOnCurveConstructor

          public static ITensileNet.ConstructorAndParameters<IParticleOnCurveI> searchParticleOnCurveConstructor(java.lang.Class<? extends IParticleOnCurveI> pclass)

      set constructor of particle class. if success returns true

    - #### getParticleInstance

          public static IParticleI getParticleInstance(IVec pt,
                                                       java.lang.reflect.Constructor<? extends IParticleI> ptclConstructor,
                                                       java.lang.Class<?>[] ptclConstructorParameters)

      set constructor of particle class. if success returns true

    - #### getTensionInstance

          public static ITensionI getTensionInstance(IParticleI pt1,
                                                     IParticleI pt2,
                                                     java.lang.reflect.Constructor<? extends ITensionI> tnsnConstructor,
                                                     java.lang.Class<?>[] tnsnConstructorParameters)

    - #### getParticleOnCurveInstance

          public static IParticleOnCurveI getParticleOnCurveInstance(ICurveI curve,
                                                                     double upos,
                                                                     IVec pos,
                                                                     java.lang.reflect.Constructor<? extends IParticleOnCurveI> pocConstructor,
                                                                     java.lang.Class<?>[] pocConstructorParameters)

    - #### 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,
                                                                       ITensileNet.ConstructorAndParameters<IParticleOnCurveI> particleOnCurveConst)

      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,
                                                                ITensileNet.ConstructorAndParameters<IParticleOnCurveI> particleOnCurveConst)

      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

    - #### join

          public ITensileNet join(ITensileNet net)

    - #### join

          public ITensileNet join(ITensileNet net,
                                  double tolerance)