igeo

## Class ISurfaceCreator

- java.lang.Object
- - igeo.ISurfaceCreator

-     public class ISurfaceCreator
      extends java.lang.Object

  class with collection of static methods to create various type of surface.
  Author:
    Satoru Sugihara

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Class and Description
    --- | ---
    `static class` | `ISurfaceCreator.XCurveComparator`
    `static class` | `ISurfaceCreator.YCurveComparator`
    `static class` | `ISurfaceCreator.ZCurveComparator`

  - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `static IServerI` | `server` state variable of a server to store surfaces created in the methods in this class

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `ISurfaceCreator()`

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `static IBox` | `box(double x, double y, double z, double size)` box
    `static IBox` | `box(double x, double y, double z, double width, double height, double depth)`
    `static IBox` | `box(IVecI[][][] corners)`
    `static IBox` | `box(IVecI origin, double size)`
    `static IBox` | `box(IVecI origin, double width, double height, double depth)`
    `static IBox` | `box(IVecI origin, IVecI xvec, IVecI yvec, IVecI zvec)`
    `static IBox` | `box(IVecI pt1, IVecI pt2, IVecI pt3, IVecI pt4, IVecI pt5, IVecI pt6, IVecI pt7, IVecI pt8)`
    `static IBrep` | `cap(ISurfaceI surface)` cap a surface which is cyclically closed in u or v direction.
    `static int` | `checkCPNumForLoft(ICurveI[] curves)` check if number of control points is same and returns minimum number
    `static IVecI[][]` | `checkCPNumForLoft(IVecI[][] pts)`
    `static ICylinder` | `cone(IVecI pt1, IVecI pt2, double radius)`
    `static ICylinder` | `cone(IVecI pt1, IVecI pt2, IDoubleI radius)`
    `static ICylinder` | `cylinder(IVecI pt1, IVecI pt2, double radius)`
    `static ICylinder` | `cylinder(IVecI pt1, IVecI pt2, double radius1, double radius2)`
    `static ICylinder` | `cylinder(IVecI pt1, IVecI pt2, IDoubleI radius)`
    `static ICylinder` | `cylinder(IVecI pt1, IVecI pt2, IDoubleI radius1, IDoubleI radius2)`
    `static IVecI[]` | `duplicatePoints(IVecI[] pts)` subroutines for sweep
    `static IVecI[]` | `duplicatePoints(IVecI[] pts, double weight)`
    `static ISurface` | `extrude(ICurveI profile, double extrudeDepth)`
    `static ISurface` | `extrude(ICurveI profile, ICurveI rail)`
    `static ISurface` | `extrude(ICurveI profile, IDoubleI extrudeDepth)`
    `static ISurface` | `extrude(ICurveI profile, IVecI extrudeDir)`
    `static ISurface` | `extrude(IVecI[] profile, double extrudeDepth)` one directional extrusion
    `static ISurface` | `extrude(IVecI[] profile, ICurve rail)`
    `static ISurface` | `extrude(IVecI[] profile, IDoubleI extrudeDepth)`
    `static ISurface` | `extrude(IVecI[] profile, int profileDeg, boolean closeProfile, double extrudeDepth)`
    `static ISurface` | `extrude(IVecI[] profile, int profileDeg, boolean closeProfile, ICurve rail)`
    `static ISurface` | `extrude(IVecI[] profile, int profileDeg, boolean closeProfile, IDoubleI extrudeDepth)`
    `static ISurface` | `extrude(IVecI[] profile, int profileDeg, boolean closeProfile, IVecI extrudeDir)`
    `static ISurface` | `extrude(IVecI[] profile, int profileDeg, boolean closeProfile, IVecI[] rail, int railDeg, boolean closeRail)`
    `static ISurface` | `extrude(IVecI[] profile, int profileDeg, double extrudeDepth)`
    `static ISurface` | `extrude(IVecI[] profile, int profileDeg, double[] profileKnots, ICurve rail)`
    `static ISurface` | `extrude(IVecI[] profile, int profileDeg, double[] profileKnots, IVecI extrudeDir)`
    `static ISurface` | `extrude(IVecI[] profile, int profileDeg, double[] profileKnots, IVecI[] rail, int railDeg, double[] railKnots)`
    `static ISurface` | `extrude(IVecI[] profile, int profileDeg, ICurve rail)`
    `static ISurface` | `extrude(IVecI[] profile, int profileDeg, IDoubleI extrudeDepth)`
    `static ISurface` | `extrude(IVecI[] profile, int profileDeg, IVecI extrudeDir)`
    `static ISurface` | `extrude(IVecI[] profile, int profileDeg, IVecI[] rail, int railDeg)`
    `static ISurface` | `extrude(IVecI[] profile, IVecI extrudeDir)`
    `static ISurface` | `extrude(IVecI[] profile, IVecI[] rail)` extrusion along path (profile control points are copied parallely)
    `static ISurface` | `flatten(ISurfaceI surface)`
    `static ISurface` | `flatten(ISurfaceI surface, IVecI planeDir)`
    `static ISurface` | `flatten(ISurfaceI surface, IVecI planeDir, IVecI planePt)`
    `static IVec` | `getCenter(ICurveI crv)`
    `static IVec` | `getCenter(IVecI[] profile, int profileDeg)`
    `static boolean` | `isClosed(IVecI[] profile, int profileDeg)`
    `static ISurface` | `loft(ICurveI[] curves)` loft
    `static ISurface` | `loft(ICurveI[] curves, int deg)`
    `static ISurface` | `loft(ICurveI[] curves, int deg, boolean close)`
    `static ISurface` | `loft(ICurveI curve1, ICurveI curve2)`
    `static ISurface` | `loft(IVecI[][] pts)`
    `static ISurface` | `loft(IVecI[][] pts, boolean closeLoft, boolean closePts)`
    `static ISurface` | `loft(IVecI[][] pts, int loftDeg, int ptsDeg)`
    `static ISurface` | `loft(IVecI[][] pts, int loftDeg, int ptsDeg, boolean closeLoft, boolean closePts)`
    `static ISurface` | `loft(IVecI[] pts1, IVecI[] pts2)`
    `static ISurface` | `loft(IVecI[] pts1, IVecI[] pts2, boolean closePts)`
    `static ISurface` | `loft(IVecI[] pts1, IVecI[] pts2, int ptsDeg)`
    `static ISurface` | `loft(IVecI[] pts1, IVecI[] pts2, int ptsDeg, boolean closePts)`
    `static ISurface` | `loft(IVecI[] pts1, IVecI[] pts2, IVecI[] pts3)`
    `static ISurface` | `loft(IVecI[] pts1, IVecI[] pts2, IVecI[] pts3, boolean closePts)`
    `static ISurface` | `loft(IVecI[] pts1, IVecI[] pts2, IVecI[] pts3, int loftDeg, int ptsDeg)`
    `static ISurface` | `loft(IVecI[] pts1, IVecI[] pts2, IVecI[] pts3, int loftDeg, int ptsDeg, boolean closePts)`
    `static ISurface` | `loftX(ICurveI[] curves)` loft with sorted curves in x
    `static ISurface` | `loftX(ICurveI[] curves, int deg)`
    `static ISurface` | `loftX(ICurveI[] curves, int deg, boolean close)`
    `static ISurface` | `loftY(ICurveI[] curves)` loft with sorted curves in y
    `static ISurface` | `loftY(ICurveI[] curves, int deg)`
    `static ISurface` | `loftY(ICurveI[] curves, int deg, boolean close)`
    `static ISurface` | `loftZ(ICurveI[] curves)` loft with sorted curves in z
    `static ISurface` | `loftZ(ICurveI[] curves, int deg)`
    `static ISurface` | `loftZ(ICurveI[] curves, int deg, boolean close)`
    `static IVecI[]` | `orient(IVecI[] profile, IVecI profCenter, IVecI railPt)` only moving profile points form profCenter to railPt.
    `static IVecI[]` | `orient(IVecI[] profile, IVecI profCenter, IVecI profNml, IVecI railPt, IVecI railDir)`
    `static IVecI[]` | `orient(IVecI[] profile, IVecI profCenter, IVecI profNml, IVecI profDir, IVecI railPt, IVecI railDir, IVecI railNml)` Orienting profile points by matching profCenter with railPt, profNml with railDir, profDir with railNml.
    `static IVecI[]` | `orientAndBisect(IVecI[] profile, IVecI profCenter, IVecI profNml, IVecI railPt, IVecI railDir)`
    `static IVecI[]` | `orientAndBisect(IVecI[] profile, IVecI profCenter, IVecI profNml, IVecI profDir, IVecI railPt, IVecI railDir, IVecI railNml)`
    `static ISurface` | `pipe(ICurveI rail, double radius)`
    `static ISurface` | `pipe(IVecI[] rail, double radius)`
    `static ISurface` | `pipe(IVecI[] rail, int railDeg, boolean close, double radius)`
    `static ISurface` | `pipe(IVecI[] rail, int railDeg, double radius)`
    `static ISurface` | `pipe(IVecI[] rail, int railDeg, double[] railKnots, double radius)`
    `static ISurface` | `pipe(IVecI pt1, IVecI pt2, double radius)` pipe
    `static ISurface` | `plane(IVecI corner, double xwidth, double yheight)`
    `static ISurface` | `plane(IVecI corner, IVecI widthVec, IVecI heightVec)`
    `static ISurface` | `pointLoft(ICurveI profile, IVecI center)` surface by lofting profile into the specified point
    `static ISurface` | `pointLoft(IVecI[] cps, int deg, double[] knots, IVecI center)` surface by lofting profile into the specified point
    `static ISurfaceGeo` | `pointLoftGeo(IVecI[] cps, int deg, double[] knots, IVecI center)` surface by lofting profile into the specified point
    `static ISurface` | `profileSurface(ICurveI profile)` surface defined by closed profile.if the profile is flat, planar surface is created.
    `static ISurface` | `profileSurface(IVecI[] cps, int deg, double[] knots)` surface defined by closed profile.if the profile is flat, planar surface is created.
    `static ISurfaceGeo` | `profileSurfaceGeo(IVecI[] cps, int deg, double[] knots)` surface defined by closed profile.if the profile is flat, planar surface is created.
    `static ISurface` | `radialSurface(ICurveI profile)` surface by lofting profile into the center of the profile
    `static ISurface` | `radialSurface(IVecI[] cps, int deg, double[] knots)` surface by lofting profile into the center of the profile
    `static ISurfaceGeo` | `radialSurfaceGeo(IVecI[] cps, int deg, double[] knots)` surface by lofting profile into the center of the profile
    `static ISurface` | `rectPipe(ICurveI rail, double width, double height)`
    `static ISurface` | `rectPipe(ICurveI rail, double left, double right, double bottom, double top)`
    `static ISurface` | `rectPipe(IVecI[] rail, double width, double height)`
    `static ISurface` | `rectPipe(IVecI[] rail, double left, double right, double bottom, double top)`
    `static ISurface` | `rectPipe(IVecI[] rail, int deg, boolean close, double width, double height)`
    `static ISurface` | `rectPipe(IVecI[] rail, int deg, boolean close, double left, double right, double bottom, double top)`
    `static ISurface` | `rectPipe(IVecI[] rail, int deg, double[] knots, double width, double height)`
    `static ISurface` | `rectPipe(IVecI[] rail, int deg, double[] knots, double left, double right, double bottom, double top)`
    `static ISurface` | `rectPipe(IVecI[] rail, int deg, double width, double height)`
    `static ISurface` | `rectPipe(IVecI[] rail, int deg, double left, double right, double bottom, double top)`
    `static ISurface` | `rectPipe(IVecI pt1, IVecI pt2, double width, double height)`
    `static ISurface` | `rectPipe(IVecI pt1, IVecI pt2, double left, double right, double bottom, double top)`
    `static ISurface` | `rectPipe(IVecI pt1, IVecI pt2, IVecI widthDir, double width, double height)` rect pipe with width dir specified
    `static ISurface` | `rectPipe(IVecI pt1, IVecI pt2, IVecI widthDir, double left, double right, double bottom, double top)` rect pipe with width dir specified
    `static IServerI` | `server()`
    `static void` | `server(IServerI s)` set a server to store surfaces created in the methods in this class
    `static ISphere` | `sphere(double x, double y, double z, double radius)` sphere
    `static ISphere` | `sphere(IVecI center, double radius)`
    `static ISphere` | `sphere(IVecI center, IDoubleI radius)`
    `static ISurface` | `squarePipe(ICurveI rail, double size)`
    `static ISurface` | `squarePipe(IVecI[] rail, double size)`
    `static ISurface` | `squarePipe(IVecI[] rail, int deg, boolean close, double size)`
    `static ISurface` | `squarePipe(IVecI[] rail, int deg, double size)`
    `static ISurface` | `squarePipe(IVecI[] rail, int deg, double[] knots, double size)`
    `static ISurface` | `squarePipe(IVecI pt1, IVecI pt2, double size)`
    `static ISurface` | `squarePipe(IVecI pt1, IVecI pt2, IVecI widthDir, double size)` square pipe with width dir specified
    `static ISurface` | `surface(double[][][] xyzValues)`
    `static ISurface` | `surface(double[][][] xyzValues, boolean closeU, boolean closeV)`
    `static ISurface` | `surface(double[][][] xyzValues, int udeg, int vdeg)`
    `static ISurface` | `surface(double[][][] xyzValues, int udeg, int vdeg, boolean closeU, boolean closeV)`
    `static ISurface` | `surface(double x1, double y1, double z1, double x2, double y2, double z2, double x3, double y3, double z3)`
    `static ISurface` | `surface(double x1, double y1, double z1, double x2, double y2, double z2, double x3, double y3, double z3, double x4, double y4, double z4)`
    `static ISurface` | `surface(ICurveI trimCurve)`
    `static ISurface` | `surface(ICurveI[] trimCurves)`
    `static ISurface` | `surface(ICurveI trimCurve, ICurveI innerTrimCurve)`
    `static ISurface` | `surface(ICurveI trimCurve, ICurveI[] innerTrimCurves)`
    `static ISurface` | `surface(ISurfaceI srf)`
    `static ISurface` | `surface(IVecI[] trimCrvPts)`
    `static ISurface` | `surface(IVecI[][] cpts)`
    `static ISurface` | `surface(IVecI[][] cpts, boolean closeU, boolean closeV)`
    `static ISurface` | `surface(IVecI[][] cpts, int udegree, int vdegree)`
    `static ISurface` | `surface(IVecI[][] cpts, int udegree, int vdegree, boolean closeU, boolean closeV)`
    `static ISurface` | `surface(IVecI[][] cpts, int udegree, int vdegree, boolean closeU, double[] vk)`
    `static ISurface` | `surface(IVecI[][] cpts, int udegree, int vdegree, double[] uk, boolean closeV)`
    `static ISurface` | `surface(IVecI[][] cpts, int udegree, int vdegree, double[] uknots, double[] vknots)`
    `static ISurface` | `surface(IVecI[][] cpts, int udegree, int vdegree, double[] uknots, double[] vknots, double ustart, double uend, double vstart, double vend)`
    `static ISurface` | `surface(IVecI[] trimCrvPts, int trimCrvDeg)`
    `static ISurface` | `surface(IVecI[] trimCrvPts, int trimCrvDeg, double[] trimCrvKnots)`
    `static ISurface` | `surface(IVecI pt1, IVecI pt2, IVecI pt3)`
    `static ISurface` | `surface(IVecI pt1, IVecI pt2, IVecI pt3, IVecI pt4)`
    `static ISurface` | `sweep(ICurveI profile, ICurveI rail)`
    `static ISurface` | `sweep(ICurveI profile, IVecI[] rail)`
    `static ISurface` | `sweep(ICurveI profile, IVecI[] rail, int railDeg)`
    `static ISurface` | `sweep(ICurveI profile, IVecI[] rail, int railDeg, boolean closeRail)`
    `static ISurface` | `sweep(ICurveI profile, IVecI profileCenter, ICurveI rail)`
    `static ISurface` | `sweep(ICurveI profile, IVecI profileCenter, IVecI[] rail)`
    `static ISurface` | `sweep(ICurveI profile, IVecI profileCenter, IVecI[] rail, int railDeg)`
    `static ISurface` | `sweep(ICurveI profile, IVecI profileCenter, IVecI[] rail, int railDeg, boolean closeRail)`
    `static ISurface` | `sweep(ICurveI profile, IVecI profileCenter, IVecI profileDir, ICurveI rail)` sweep.
    `static ISurface` | `sweep(ICurveI profile, IVecI profileCenter, IVecI profileDir, IVecI[] rail)`
    `static ISurface` | `sweep(ICurveI profile, IVecI profileCenter, IVecI profileDir, IVecI[] rail, int railDeg)`
    `static ISurface` | `sweep(ICurveI profile, IVecI profileCenter, IVecI profileDir, IVecI[] rail, int railDeg, boolean closeRail)`
    `static ISurface` | `sweep(IVecI[] profile, ICurveI rail)`
    `static ISurface` | `sweep(IVecI[] profile, int profileDeg, boolean closeProfile, ICurveI rail)`
    `static ISurface` | `sweep(IVecI[] profile, int profileDeg, boolean closeProfile, IVecI[] rail, int railDeg, boolean closeRail)`
    `static ISurface` | `sweep(IVecI[] profile, int profileDeg, boolean closeProfile, IVecI profileCenter, ICurveI rail)`
    `static ISurface` | `sweep(IVecI[] profile, int profileDeg, boolean closeProfile, IVecI profileCenter, IVecI[] rail, int railDeg, boolean closeRail)`
    `static ISurface` | `sweep(IVecI[] profile, int profileDeg, boolean closeProfile, IVecI profileCenter, IVecI profileDir, ICurveI rail)`
    `static ISurface` | `sweep(IVecI[] profile, int profileDeg, boolean closeProfile, IVecI profileCenter, IVecI profileDir, IVecI[] rail, int railDeg, boolean closeRail)`
    `static ISurface` | `sweep(IVecI[] profile, int profileDeg, double[] profileKnots, IVecI[] rail, int railDeg, double[] railKnots)`
    `static ISurface` | `sweep(IVecI[] profile, int profileDeg, double[] profileKnots, IVecI profileCenter, IVecI[] rail, int railDeg, double[] railKnots)`
    `static ISurface` | `sweep(IVecI[] profile, int profileDeg, double[] profileKnots, IVecI profileCenter, IVecI profileDir, IVecI[] rail, int railDeg, double[] railKnots)` sweep.
    `static ISurface` | `sweep(IVecI[] profile, int profileDeg, ICurveI rail)`
    `static ISurface` | `sweep(IVecI[] profile, int profileDeg, IVecI[] rail, int railDeg)`
    `static ISurface` | `sweep(IVecI[] profile, int profileDeg, IVecI profileCenter, ICurveI rail)`
    `static ISurface` | `sweep(IVecI[] profile, int profileDeg, IVecI profileCenter, IVecI[] rail, int railDeg)`
    `static ISurface` | `sweep(IVecI[] profile, int profileDeg, IVecI profileCenter, IVecI profileDir, ICurveI rail)`
    `static ISurface` | `sweep(IVecI[] profile, int profileDeg, IVecI profileCenter, IVecI profileDir, IVecI[] rail, int railDeg)`
    `static ISurface` | `sweep(IVecI[] profile, IVecI[] rail)` sweep (profile is redirected perpendicular to rail and centered(actually just on bisector of control points))
    `static ISurface` | `sweep(IVecI[] profile, IVecI profileCenter, ICurveI rail)`
    `static ISurface` | `sweep(IVecI[] profile, IVecI profileCenter, IVecI[] rail)`
    `static ISurface` | `sweep(IVecI[] profile, IVecI profileCenter, IVecI profileDir, ICurveI rail)`
    `static ISurface` | `sweep(IVecI[] profile, IVecI profileCenter, IVecI profileDir, IVecI[] rail)`
    `static IVecI[][]` | `sweepPoints(IVecI[] profile, int profileDeg, IVecI profileCenter, IVecI profileDir, IVecI[] rail, int railDeg)` control points for sweep.

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Field Detail

    - #### server

          public static IServerI server

      state variable of a server to store surfaces created in the methods in this class

  - ### Constructor Detail

    - #### ISurfaceCreator

          public ISurfaceCreator()

  - ### Method Detail

    - #### server

          public static void server(IServerI s)

      set a server to store surfaces created in the methods in this class

    - #### server

          public static IServerI server()

    - #### surface

          public static ISurface surface(IVecI[][] cpts,
                         int udegree,
                         int vdegree,
                         double[] uknots,
                         double[] vknots,
                         double ustart,
                         double uend,
                         double vstart,
                         double vend)

    - #### surface

          public static ISurface surface(IVecI[][] cpts,
                         int udegree,
                         int vdegree,
                         double[] uknots,
                         double[] vknots)

    - #### surface

          public static ISurface surface(IVecI[][] cpts,
                         int udegree,
                         int vdegree)

    - #### surface

          public static ISurface surface(IVecI[][] cpts)

    - #### surface

          public static ISurface surface(IVecI[][] cpts,
                         int udegree,
                         int vdegree,
                         boolean closeU,
                         boolean closeV)

    - #### surface

          public static ISurface surface(IVecI[][] cpts,
                         int udegree,
                         int vdegree,
                         boolean closeU,
                         double[] vk)

    - #### surface

          public static ISurface surface(IVecI[][] cpts,
                         int udegree,
                         int vdegree,
                         double[] uk,
                         boolean closeV)

    - #### surface

          public static ISurface surface(IVecI[][] cpts,
                         boolean closeU,
                         boolean closeV)

    - #### surface

          public static ISurface surface(IVecI pt1,
                         IVecI pt2,
                         IVecI pt3,
                         IVecI pt4)

    - #### surface

          public static ISurface surface(IVecI pt1,
                         IVecI pt2,
                         IVecI pt3)

    - #### surface

          public static ISurface surface(double x1,
                         double y1,
                         double z1,
                         double x2,
                         double y2,
                         double z2,
                         double x3,
                         double y3,
                         double z3,
                         double x4,
                         double y4,
                         double z4)

    - #### surface

          public static ISurface surface(double x1,
                         double y1,
                         double z1,
                         double x2,
                         double y2,
                         double z2,
                         double x3,
                         double y3,
                         double z3)

    - #### surface

          public static ISurface surface(double[][][] xyzValues)

    - #### surface

          public static ISurface surface(double[][][] xyzValues,
                         int udeg,
                         int vdeg)

    - #### surface

          public static ISurface surface(double[][][] xyzValues,
                         boolean closeU,
                         boolean closeV)

    - #### surface

          public static ISurface surface(double[][][] xyzValues,
                         int udeg,
                         int vdeg,
                         boolean closeU,
                         boolean closeV)

    - #### surface

          public static ISurface surface(ISurfaceI srf)

    - #### surface

          public static ISurface surface(ICurveI trimCurve)

    - #### surface

          public static ISurface surface(ICurveI trimCurve,
                         ICurveI[] innerTrimCurves)

    - #### surface

          public static ISurface surface(ICurveI trimCurve,
                         ICurveI innerTrimCurve)

    - #### surface

          public static ISurface surface(ICurveI[] trimCurves)

    - #### surface

          public static ISurface surface(IVecI[] trimCrvPts)

    - #### surface

          public static ISurface surface(IVecI[] trimCrvPts,
                         int trimCrvDeg)

    - #### surface

          public static ISurface surface(IVecI[] trimCrvPts,
                         int trimCrvDeg,
                         double[] trimCrvKnots)

    - #### box

          public static IBox box(double x,
                 double y,
                 double z,
                 double size)

      box

    - #### box

          public static IBox box(double x,
                 double y,
                 double z,
                 double width,
                 double height,
                 double depth)

    - #### box

          public static IBox box(IVecI origin,
                 double size)

    - #### box

          public static IBox box(IVecI origin,
                 double width,
                 double height,
                 double depth)

    - #### box

          public static IBox box(IVecI origin,
                 IVecI xvec,
                 IVecI yvec,
                 IVecI zvec)

    - #### box

          public static IBox box(IVecI pt1,
                 IVecI pt2,
                 IVecI pt3,
                 IVecI pt4,
                 IVecI pt5,
                 IVecI pt6,
                 IVecI pt7,
                 IVecI pt8)

    - #### box

          public static IBox box(IVecI[][][] corners)

    - #### sphere

          public static ISphere sphere(double x,
                       double y,
                       double z,
                       double radius)

      sphere

    - #### sphere

          public static ISphere sphere(IVecI center,
                       double radius)

    - #### sphere

          public static ISphere sphere(IVecI center,
                       IDoubleI radius)

    - #### cylinder

          public static ICylinder cylinder(IVecI pt1,
                           IVecI pt2,
                           double radius)

    - #### cylinder

          public static ICylinder cylinder(IVecI pt1,
                           IVecI pt2,
                           IDoubleI radius)

    - #### cylinder

          public static ICylinder cylinder(IVecI pt1,
                           IVecI pt2,
                           double radius1,
                           double radius2)

    - #### cylinder

          public static ICylinder cylinder(IVecI pt1,
                           IVecI pt2,
                           IDoubleI radius1,
                           IDoubleI radius2)

    - #### cone

          public static ICylinder cone(IVecI pt1,
                       IVecI pt2,
                       double radius)

    - #### cone

          public static ICylinder cone(IVecI pt1,
                       IVecI pt2,
                       IDoubleI radius)

    - #### plane

          public static ISurface plane(IVecI corner,
                       double xwidth,
                       double yheight)

    - #### plane

          public static ISurface plane(IVecI corner,
                       IVecI widthVec,
                       IVecI heightVec)

    - #### extrude

          public static ISurface extrude(IVecI[] profile,
                         double extrudeDepth)

      one directional extrusion

    - #### extrude

          public static ISurface extrude(IVecI[] profile,
                         IDoubleI extrudeDepth)

    - #### extrude

          public static ISurface extrude(IVecI[] profile,
                         int profileDeg,
                         double extrudeDepth)

    - #### extrude

          public static ISurface extrude(IVecI[] profile,
                         int profileDeg,
                         IDoubleI extrudeDepth)

    - #### extrude

          public static ISurface extrude(IVecI[] profile,
                         int profileDeg,
                         boolean closeProfile,
                         double extrudeDepth)

    - #### extrude

          public static ISurface extrude(IVecI[] profile,
                         int profileDeg,
                         boolean closeProfile,
                         IDoubleI extrudeDepth)

    - #### extrude

          public static ISurface extrude(IVecI[] profile,
                         IVecI extrudeDir)

    - #### extrude

          public static ISurface extrude(IVecI[] profile,
                         int profileDeg,
                         IVecI extrudeDir)

    - #### extrude

          public static ISurface extrude(IVecI[] profile,
                         int profileDeg,
                         boolean closeProfile,
                         IVecI extrudeDir)

    - #### extrude

          public static ISurface extrude(IVecI[] profile,
                         int profileDeg,
                         double[] profileKnots,
                         IVecI extrudeDir)

    - #### extrude

          public static ISurface extrude(IVecI[] profile,
                         ICurve rail)

    - #### extrude

          public static ISurface extrude(IVecI[] profile,
                         int profileDeg,
                         ICurve rail)

    - #### extrude

          public static ISurface extrude(IVecI[] profile,
                         int profileDeg,
                         boolean closeProfile,
                         ICurve rail)

    - #### extrude

          public static ISurface extrude(IVecI[] profile,
                         int profileDeg,
                         double[] profileKnots,
                         ICurve rail)

    - #### extrude

          public static ISurface extrude(ICurveI profile,
                         IVecI extrudeDir)

    - #### extrude

          public static ISurface extrude(ICurveI profile,
                         double extrudeDepth)

    - #### extrude

          public static ISurface extrude(ICurveI profile,
                         IDoubleI extrudeDepth)

    - #### extrude

          public static ISurface extrude(IVecI[] profile,
                         IVecI[] rail)

      extrusion along path (profile control points are copied parallely)

    - #### extrude

          public static ISurface extrude(IVecI[] profile,
                         int profileDeg,
                         IVecI[] rail,
                         int railDeg)

    - #### extrude

          public static ISurface extrude(IVecI[] profile,
                         int profileDeg,
                         boolean closeProfile,
                         IVecI[] rail,
                         int railDeg,
                         boolean closeRail)

    - #### extrude

          public static ISurface extrude(IVecI[] profile,
                         int profileDeg,
                         double[] profileKnots,
                         IVecI[] rail,
                         int railDeg,
                         double[] railKnots)

    - #### extrude

          public static ISurface extrude(ICurveI profile,
                         ICurveI rail)

    - #### sweep

          public static ISurface sweep(IVecI[] profile,
                       IVecI[] rail)

      sweep (profile is redirected perpendicular to rail and centered(actually just on bisector of control points))

    - #### sweep

          public static ISurface sweep(IVecI[] profile,
                       IVecI profileCenter,
                       IVecI[] rail)

    - #### sweep

          public static ISurface sweep(IVecI[] profile,
                       IVecI profileCenter,
                       IVecI profileDir,
                       IVecI[] rail)

    - #### sweep

          public static ISurface sweep(IVecI[] profile,
                       int profileDeg,
                       IVecI[] rail,
                       int railDeg)

    - #### sweep

          public static ISurface sweep(IVecI[] profile,
                       int profileDeg,
                       IVecI profileCenter,
                       IVecI[] rail,
                       int railDeg)

    - #### sweep

          public static ISurface sweep(IVecI[] profile,
                       int profileDeg,
                       IVecI profileCenter,
                       IVecI profileDir,
                       IVecI[] rail,
                       int railDeg)

    - #### sweep

          public static ISurface sweep(IVecI[] profile,
                       int profileDeg,
                       boolean closeProfile,
                       IVecI[] rail,
                       int railDeg,
                       boolean closeRail)

    - #### sweep

          public static ISurface sweep(IVecI[] profile,
                       int profileDeg,
                       boolean closeProfile,
                       IVecI profileCenter,
                       IVecI[] rail,
                       int railDeg,
                       boolean closeRail)

    - #### sweep

          public static ISurface sweep(IVecI[] profile,
                       int profileDeg,
                       boolean closeProfile,
                       IVecI profileCenter,
                       IVecI profileDir,
                       IVecI[] rail,
                       int railDeg,
                       boolean closeRail)

    - #### sweep

          public static ISurface sweep(IVecI[] profile,
                       ICurveI rail)

    - #### sweep

          public static ISurface sweep(IVecI[] profile,
                       IVecI profileCenter,
                       ICurveI rail)

    - #### sweep

          public static ISurface sweep(IVecI[] profile,
                       IVecI profileCenter,
                       IVecI profileDir,
                       ICurveI rail)

    - #### sweep

          public static ISurface sweep(IVecI[] profile,
                       int profileDeg,
                       ICurveI rail)

    - #### sweep

          public static ISurface sweep(IVecI[] profile,
                       int profileDeg,
                       IVecI profileCenter,
                       ICurveI rail)

    - #### sweep

          public static ISurface sweep(IVecI[] profile,
                       int profileDeg,
                       IVecI profileCenter,
                       IVecI profileDir,
                       ICurveI rail)

    - #### sweep

          public static ISurface sweep(IVecI[] profile,
                       int profileDeg,
                       boolean closeProfile,
                       ICurveI rail)

    - #### sweep

          public static ISurface sweep(IVecI[] profile,
                       int profileDeg,
                       boolean closeProfile,
                       IVecI profileCenter,
                       ICurveI rail)

    - #### sweep

          public static ISurface sweep(IVecI[] profile,
                       int profileDeg,
                       boolean closeProfile,
                       IVecI profileCenter,
                       IVecI profileDir,
                       ICurveI rail)

    - #### sweep

          public static ISurface sweep(ICurveI profile,
                       IVecI[] rail)

    - #### sweep

          public static ISurface sweep(ICurveI profile,
                       IVecI profileCenter,
                       IVecI[] rail)

    - #### sweep

          public static ISurface sweep(ICurveI profile,
                       IVecI profileCenter,
                       IVecI profileDir,
                       IVecI[] rail)

    - #### sweep

          public static ISurface sweep(ICurveI profile,
                       IVecI[] rail,
                       int railDeg)

    - #### sweep

          public static ISurface sweep(ICurveI profile,
                       IVecI profileCenter,
                       IVecI[] rail,
                       int railDeg)

    - #### sweep

          public static ISurface sweep(ICurveI profile,
                       IVecI profileCenter,
                       IVecI profileDir,
                       IVecI[] rail,
                       int railDeg)

    - #### sweep

          public static ISurface sweep(ICurveI profile,
                       IVecI[] rail,
                       int railDeg,
                       boolean closeRail)

    - #### sweep

          public static ISurface sweep(ICurveI profile,
                       IVecI profileCenter,
                       IVecI[] rail,
                       int railDeg,
                       boolean closeRail)

    - #### sweep

          public static ISurface sweep(ICurveI profile,
                       IVecI profileCenter,
                       IVecI profileDir,
                       IVecI[] rail,
                       int railDeg,
                       boolean closeRail)

    - #### sweep

          public static ISurface sweep(ICurveI profile,
                       ICurveI rail)

    - #### sweep

          public static ISurface sweep(ICurveI profile,
                       IVecI profileCenter,
                       ICurveI rail)

    - #### sweep

          public static ISurface sweep(ICurveI profile,
                       IVecI profileCenter,
                       IVecI profileDir,
                       ICurveI rail)

      sweep.
      Parameters:
        `profileCenter` - point on profile to be located at the points of rail
        `profileDir` - direction on profile to be aligned with the normal of rail

    - #### sweep

          public static ISurface sweep(IVecI[] profile,
                       int profileDeg,
                       double[] profileKnots,
                       IVecI[] rail,
                       int railDeg,
                       double[] railKnots)

    - #### sweep

          public static ISurface sweep(IVecI[] profile,
                       int profileDeg,
                       double[] profileKnots,
                       IVecI profileCenter,
                       IVecI[] rail,
                       int railDeg,
                       double[] railKnots)

    - #### sweep

          public static ISurface sweep(IVecI[] profile,
                       int profileDeg,
                       double[] profileKnots,
                       IVecI profileCenter,
                       IVecI profileDir,
                       IVecI[] rail,
                       int railDeg,
                       double[] railKnots)

      sweep.
      Parameters:
        `profileCenter` - point on profile to be located at the points of rail
        `profileDir` - direction on profile to be aligned with the normal of rail

    - #### sweepPoints

          public static IVecI[][] sweepPoints(IVecI[] profile,
                              int profileDeg,
                              IVecI profileCenter,
                              IVecI profileDir,
                              IVecI[] rail,
                              int railDeg)

      control points for sweep.
      Parameters:
        `profileCenter` - point on profile to be located at the points of rail
        `profileDir` - direction on profile to be aligned with the normal of rail

    - #### duplicatePoints

          public static IVecI[] duplicatePoints(IVecI[] pts)

      subroutines for sweep

    - #### duplicatePoints

          public static IVecI[] duplicatePoints(IVecI[] pts,
                                double weight)

    - #### orient

          public static IVecI[] orient(IVecI[] profile,
                       IVecI profCenter,
                       IVecI railPt)

      only moving profile points form profCenter to railPt. points are not duplicated.

    - #### orient

          public static IVecI[] orient(IVecI[] profile,
                       IVecI profCenter,
                       IVecI profNml,
                       IVecI railPt,
                       IVecI railDir)

    - #### orient

          public static IVecI[] orient(IVecI[] profile,
                       IVecI profCenter,
                       IVecI profNml,
                       IVecI profDir,
                       IVecI railPt,
                       IVecI railDir,
                       IVecI railNml)

      Orienting profile points by matching profCenter with railPt, profNml with railDir, profDir with railNml.

    - #### orientAndBisect

          public static IVecI[] orientAndBisect(IVecI[] profile,
                                IVecI profCenter,
                                IVecI profNml,
                                IVecI railPt,
                                IVecI railDir)

    - #### orientAndBisect

          public static IVecI[] orientAndBisect(IVecI[] profile,
                                IVecI profCenter,
                                IVecI profNml,
                                IVecI profDir,
                                IVecI railPt,
                                IVecI railDir,
                                IVecI railNml)

    - #### isClosed

          public static boolean isClosed(IVecI[] profile,
                         int profileDeg)

    - #### getCenter

          public static IVec getCenter(IVecI[] profile,
                       int profileDeg)

    - #### pipe

          public static ISurface pipe(IVecI pt1,
                      IVecI pt2,
                      double radius)

      pipe

    - #### pipe

          public static ISurface pipe(IVecI[] rail,
                      double radius)

    - #### pipe

          public static ISurface pipe(IVecI[] rail,
                      int railDeg,
                      double radius)

    - #### pipe

          public static ISurface pipe(IVecI[] rail,
                      int railDeg,
                      boolean close,
                      double radius)

    - #### pipe

          public static ISurface pipe(ICurveI rail,
                      double radius)

    - #### pipe

          public static ISurface pipe(IVecI[] rail,
                      int railDeg,
                      double[] railKnots,
                      double radius)

    - #### squarePipe

          public static ISurface squarePipe(IVecI pt1,
                            IVecI pt2,
                            double size)

    - #### squarePipe

          public static ISurface squarePipe(IVecI pt1,
                            IVecI pt2,
                            IVecI widthDir,
                            double size)

      square pipe with width dir specified

    - #### squarePipe

          public static ISurface squarePipe(IVecI[] rail,
                            double size)

    - #### squarePipe

          public static ISurface squarePipe(IVecI[] rail,
                            int deg,
                            double size)

    - #### squarePipe

          public static ISurface squarePipe(IVecI[] rail,
                            int deg,
                            boolean close,
                            double size)

    - #### squarePipe

          public static ISurface squarePipe(ICurveI rail,
                            double size)

    - #### squarePipe

          public static ISurface squarePipe(IVecI[] rail,
                            int deg,
                            double[] knots,
                            double size)

    - #### rectPipe

          public static ISurface rectPipe(IVecI pt1,
                          IVecI pt2,
                          double width,
                          double height)

      Parameters:
        `width` - size in the direction of offset of rail
        `height` - size in the direction of normal of rail

    - #### rectPipe

          public static ISurface rectPipe(IVecI pt1,
                          IVecI pt2,
                          IVecI widthDir,
                          double width,
                          double height)

      rect pipe with width dir specified

    - #### rectPipe

          public static ISurface rectPipe(IVecI pt1,
                          IVecI pt2,
                          double left,
                          double right,
                          double bottom,
                          double top)

    - #### rectPipe

          public static ISurface rectPipe(IVecI[] rail,
                          double width,
                          double height)

    - #### rectPipe

          public static ISurface rectPipe(IVecI[] rail,
                          double left,
                          double right,
                          double bottom,
                          double top)

    - #### rectPipe

          public static ISurface rectPipe(IVecI[] rail,
                          int deg,
                          double width,
                          double height)

    - #### rectPipe

          public static ISurface rectPipe(IVecI[] rail,
                          int deg,
                          double left,
                          double right,
                          double bottom,
                          double top)

    - #### rectPipe

          public static ISurface rectPipe(IVecI[] rail,
                          int deg,
                          boolean close,
                          double width,
                          double height)

    - #### rectPipe

          public static ISurface rectPipe(IVecI[] rail,
                          int deg,
                          boolean close,
                          double left,
                          double right,
                          double bottom,
                          double top)

    - #### rectPipe

          public static ISurface rectPipe(ICurveI rail,
                          double width,
                          double height)

    - #### rectPipe

          public static ISurface rectPipe(ICurveI rail,
                          double left,
                          double right,
                          double bottom,
                          double top)

    - #### rectPipe

          public static ISurface rectPipe(IVecI[] rail,
                          int deg,
                          double[] knots,
                          double width,
                          double height)

    - #### rectPipe

          public static ISurface rectPipe(IVecI[] rail,
                          int deg,
                          double[] knots,
                          double left,
                          double right,
                          double bottom,
                          double top)

    - #### rectPipe

          public static ISurface rectPipe(IVecI pt1,
                          IVecI pt2,
                          IVecI widthDir,
                          double left,
                          double right,
                          double bottom,
                          double top)

      rect pipe with width dir specified

    - #### loft

          public static ISurface loft(ICurveI[] curves)

      loft

    - #### loft

          public static ISurface loft(ICurveI curve1,
                      ICurveI curve2)

    - #### loft

          public static ISurface loft(ICurveI[] curves,
                      int deg)

    - #### loft

          public static ISurface loft(ICurveI[] curves,
                      int deg,
                      boolean close)

    - #### checkCPNumForLoft

          public static int checkCPNumForLoft(ICurveI[] curves)

      check if number of control points is same and returns minimum number

    - #### checkCPNumForLoft

          public static IVecI[][] checkCPNumForLoft(IVecI[][] pts)

    - #### loft

          public static ISurface loft(IVecI[][] pts)

    - #### loft

          public static ISurface loft(IVecI[][] pts,
                      boolean closeLoft,
                      boolean closePts)

    - #### loft

          public static ISurface loft(IVecI[][] pts,
                      int loftDeg,
                      int ptsDeg)

    - #### loft

          public static ISurface loft(IVecI[][] pts,
                      int loftDeg,
                      int ptsDeg,
                      boolean closeLoft,
                      boolean closePts)

    - #### loft

          public static ISurface loft(IVecI[] pts1,
                      IVecI[] pts2)

    - #### loft

          public static ISurface loft(IVecI[] pts1,
                      IVecI[] pts2,
                      boolean closePts)

    - #### loft

          public static ISurface loft(IVecI[] pts1,
                      IVecI[] pts2,
                      int ptsDeg)

    - #### loft

          public static ISurface loft(IVecI[] pts1,
                      IVecI[] pts2,
                      int ptsDeg,
                      boolean closePts)

    - #### loft

          public static ISurface loft(IVecI[] pts1,
                      IVecI[] pts2,
                      IVecI[] pts3)

    - #### loft

          public static ISurface loft(IVecI[] pts1,
                      IVecI[] pts2,
                      IVecI[] pts3,
                      boolean closePts)

    - #### loft

          public static ISurface loft(IVecI[] pts1,
                      IVecI[] pts2,
                      IVecI[] pts3,
                      int loftDeg,
                      int ptsDeg)

    - #### loft

          public static ISurface loft(IVecI[] pts1,
                      IVecI[] pts2,
                      IVecI[] pts3,
                      int loftDeg,
                      int ptsDeg,
                      boolean closePts)

    - #### loftX

          public static ISurface loftX(ICurveI[] curves)

      loft with sorted curves in x

    - #### loftX

          public static ISurface loftX(ICurveI[] curves,
                       int deg)

    - #### loftX

          public static ISurface loftX(ICurveI[] curves,
                       int deg,
                       boolean close)

    - #### loftY

          public static ISurface loftY(ICurveI[] curves)

      loft with sorted curves in y

    - #### loftY

          public static ISurface loftY(ICurveI[] curves,
                       int deg)

    - #### loftY

          public static ISurface loftY(ICurveI[] curves,
                       int deg,
                       boolean close)

    - #### loftZ

          public static ISurface loftZ(ICurveI[] curves)

      loft with sorted curves in z

    - #### loftZ

          public static ISurface loftZ(ICurveI[] curves,
                       int deg)

    - #### loftZ

          public static ISurface loftZ(ICurveI[] curves,
                       int deg,
                       boolean close)

    - #### getCenter

          public static IVec getCenter(ICurveI crv)

    - #### flatten

          public static ISurface flatten(ISurfaceI surface,
                         IVecI planeDir,
                         IVecI planePt)

    - #### flatten

          public static ISurface flatten(ISurfaceI surface,
                         IVecI planeDir)

    - #### flatten

          public static ISurface flatten(ISurfaceI surface)

    - #### cap

          public static IBrep cap(ISurfaceI surface)

      cap a surface which is cyclically closed in u or v direction.

    - #### profileSurfaceGeo

          public static ISurfaceGeo profileSurfaceGeo(IVecI[] cps,
                                      int deg,
                                      double[] knots)

      surface defined by closed profile.if the profile is flat, planar surface is created. if not lofting profile into the center of the profile

    - #### profileSurface

          public static ISurface profileSurface(IVecI[] cps,
                                int deg,
                                double[] knots)

      surface defined by closed profile.if the profile is flat, planar surface is created. if not lofting profile into the center of the profile

    - #### profileSurface

          public static ISurface profileSurface(ICurveI profile)

      surface defined by closed profile.if the profile is flat, planar surface is created. if not lofting profile into the center of the profile

    - #### radialSurfaceGeo

          public static ISurfaceGeo radialSurfaceGeo(IVecI[] cps,
                                     int deg,
                                     double[] knots)

      surface by lofting profile into the center of the profile

    - #### radialSurface

          public static ISurface radialSurface(IVecI[] cps,
                               int deg,
                               double[] knots)

      surface by lofting profile into the center of the profile

    - #### radialSurface

          public static ISurface radialSurface(ICurveI profile)

      surface by lofting profile into the center of the profile

    - #### pointLoftGeo

          public static ISurfaceGeo pointLoftGeo(IVecI[] cps,
                                 int deg,
                                 double[] knots,
                                 IVecI center)

      surface by lofting profile into the specified point

    - #### pointLoft

          public static ISurface pointLoft(IVecI[] cps,
                           int deg,
                           double[] knots,
                           IVecI center)

      surface by lofting profile into the specified point

    - #### pointLoft

          public static ISurface pointLoft(ICurveI profile,
                           IVecI center)

      surface by lofting profile into the specified point