Back to the Main Page.
This is alpha (prototype) software. There are likely many, many, many bugs and other support issues. Please report any you find.
Some of the primary features of GeomSS:
- Generally, n-dimensional geometry is supported throughout the program (not just 3D!). However, geometry can only be displayed up to 3D. You will have to roll your own projections for higher dimensionality.
- Point objects: points, strings of points (lists of points), array of points (lists of strings of points), lists of arrays of points, etc.
- Triangles and lists of triangles
- NURBS curves including
- interpolating curves through a list of points
- approximating a list of noisy points in a least-squares sense
- creating elliptical and circular arcs
- extracting curve properties such as tangency, principle normals, bi-normals, torsion, and variation of curvature
- finding closest points on a curve
- intersecting planes, surfaces and other curves with curves
- gridding points onto a curve using various point distributions,
- and cross sectional/subtended areas of planar curves.
- NURBS surfaces including
- interpolating surfaces through an array of points
- approximating an array of noisy points in a least-squares sense
- creating a lofted or skinned surface from a list of defining section curves
- creating a surface from a set of boundary curves
- creating surfaces of revolution
- creating spheres and toruses
- extracting surface properties such as surface normals, tangent planes, closest points on the surface, mean curvature, Gaussian curvature, twist vector, surface area, enclosed volume
- intersecting planes, curves and other surfaces with surfaces
- and extracting a grid of points on a surface.
- Flexible and geometry-aware lists of geometry elements.
- Reading and writing of geometry to a range of file formats including: IGES, APAS CARD file, GGP, LaWG geometry, POI, VECC Mk5 input file, STL and Cart3D ASCII TRI. Other readers can be easily added.
- All geometry elements and most calculations are fully unit aware. For example, you can specify a point in meters, and another in feet and subtract one from the other and get a vector that has length in meters. All unit calculations are handled automatically behind the scenes.
- Flexible support is provided for geometry transformations (scaling, translating, rotating, and affine transformations) including transformation chaining that maintains the full history of transformations (which can then be edited changing everything "downstream" automatically).
- Support for subrange points and curves on NURBS curves and surfaces. This means, for example, that you can define a point on a surface by it's parametric (s,t) parameters and that point will remain attached to that surface. Or, you can define a curve in parametric (s,t) space and use it to define a curve on a NURBS surface that will always be on that mathematical surface.
- Support for two types of notes/labels: fixed size on screen and fixed size/orientation in model space.
- Fully interactive GUI or batch mode non-interactive processing.
- Java3D based scene rendering. However, the geometry library is not dependent on Java3D and can be made to work with any rendering engine or none at all (such as when in non-interactive batch mode).
- Intuitive mouse gestures for interacting with the 3D view.
- A simple 2D X-Y plotting capability.
- BeanShell scripting environment. This provides powerful scripting/programming capabilities with a Java-like syntax. You can write pure Java in the command window, or you can write with the "short-hand" BeanShell conventions. Unlike pure Java, types are dynamic and commands are interpreted as you type them. However, in addition to the GeomSS libraries, you have the full power of the entire set of standard Java libraries at your finger tips.