GeomSS Changelog

What's new in GeomSS 0.5.00 Alpha

Jul 25, 2016
  • Added initial support for Class-Shape-Transform (CST) type curves including some examples of how they are used.
  • Added methods for extracting the transformation matrix from the GTransform object.
  • Added an enumeration of grid spacing type constants that can be used to provide the desired spacing values directly: e.g.: GridSpacing.COS.spacing(10); returns 10 values spaced between 0 and 1 inclusive using a cosine distribution.
  • Added multi-processing to the STA, BUT and WAT commands when they are provided lists of objects to intersect. On multiprocessor machines, this results in a significant speedup in these commands.
  • Added the OBL command. This is similar to STA, BUT & WAT, but allows the user to specify an arbitrary (oblique) cutting plane.
  • Added a "getEdges()" command for returning the 4 boundaries of a Surface or PointArray.
  • Added a "joinArrays()" command that joins together two adjacent arrays along a common edge.
  • Modified digitize() command to optionally take an existing list of subrange points on the curve or surface (for editing).
  • Added some new example scripts for working with airfoils (getAirfoilMaxThickness.bsh, getTEThicknessPoints.bsh, scaleAirfoil.bsh and setAirfoilTE.bsh).
  • Updated to Apache Commons to version 3.5
  • Changed the program's null philosophy. Previously, many methods silently ignored null inputs. Now nulls are generally considered an error and an exception is thrown unless otherwise stated in the documentation. This may require users to modify existing scripts.
  • Made curve-plane intersections more robust.
  • Made the IGES reader more robust.
  • Fixed a bug that caused a null pointer exception to be thrown incorrectly in TFISurface.
  • Fixed a bug where a list containing a LoftedSurface would not draw correctly.
  • Fixed a bug where the wrong vector type was used internal to doing curve-surface intersections.
  • Fixed a bug in the "intersect" command where the wrong Ldir type was being used.
  • Fixed a bug in the example "getAirfoilParams.bsh" script that caused the twist angle to always be zero.
  • Updated to make use of some of the new features in Java 1.8.
  • Program now requires Java 1.8 or later.

New in GeomSS 0.01.06 Alpha (Nov 14, 2014)

  • Corrected an error in the WAT, BUT and STA commands where they would sometimes return lists of lists of intersections rather than just lists of intersections (per their documentation).
  • Fixed a series of bugs where the GUI could hang under certain circumstances.
  • Changed the default DEGREE_ANGLE symbol to "deg" and added "lbm" and "lbs" as aliases for POUND
  • Updated to the latest versions of JOGL (2.2) and Java3D (1.6.0 pre 11).
  • Modified to use AppBuilder to create the MacOS X executable and fixed an error in the Solaris executable (error in the build script that copied in the wrong native code for JOGL)
  • Added a version of the setDrawTolerance() command that automatically sets a tolerance that is appropriate for a specified geometry element that is going to be drawn.
  • Added a new version of the newTranslation() command that uses the elements of a GeomPoint as offsets for the translation.

New in GeomSS 0.01.05 Alpha (Apr 8, 2014)

  • Added new variations on "newParameter" that take strings (CharSequence actually) for the value and the units.
  • Modified the line-surface intersector to be more robust and to not return duplicate points.
  • GridSpacing.tanh() will now throw an exception if an illegal combination of number of grid points combined with end spacings are input.
  • Corrected an error that caused the repeated drawing of objects to fail under certain circumstances.
  • Fixed a problem where images were not getting captured properly for saving or printing under certain circumstances.
  • Fixed the centerAndZoom() feature to work properly when only points are drawn.
  • Modified to write out geometry files in the proper format no matter the user's locale. Most of the supported file formats are required to be in ASCII with U.S. number formatting rules.

New in GeomSS 0.01.04 Alpha (Mar 27, 2014)

  • Bug fix:
  • Added initial support for reading/writing NASA GridTool restart files (http://geolab.larc.nasa.gov/GridTool/). I had to reverse engineer the format, so there are likely major issues at this time.
  • Added an additional newFillet() method that takes two line curves, a radius, and a tolerance.
  • Added isApproxEqual() methods that determine if a GeomPoint or GeomVector have coordinate values that are approximately equivalent to either machine epsilon or the specified tolerance.
  • Updated to the latest version of BeanShell2.
  • Made LoftedSurface a proper List object since it is really a list of defining section curves and corrected errors with how indexing was handled if the user inputs a negative index.
  • Added a class to geomss.ui that allows you to easily dump a LogContext to the BeanShell terminal.
  • Added a unit test suite for Curves: CurveTestSuite.
  • Added BeanShell commands, "runTestSuite()", "runRegressions()", and "runBenchmarks()" that execute the suite of unit tests that are being built up for the GeomSS library (currently, the tests are limited to curves).
  • Completely rewrote GeomUtil.threePointCircle() to use a new algorithm that is significantly more robust. The previous algorithm would fail for 2D points specified in a clockwise direction as well as for nD curves where the 2nd point is greater than the circle radius away from the 1st or last points.
  • Replaced some of the GeomSS BeanShell commands with native Java commands in order to use variable length argument lists. This is essentially invisible to the user other than the additional variable length argument list capability on some built-in commands.
  • Corrected a unit error that could occur under certain circumstances in GeomUtil. lineLineIntersect().
  • Fixed a bug that caused objects redrawn with different draw tolerances to have their original copies incorrectly erased.
  • Fixed a bug that caused surfaces to be drawn incorrectly when some of the surface properties were changed such as alpha, or shininess.
  • Corrected a bug in getCurvature() that would return a negative value for curvature for certain 2D curves.
  • Corrected problems with some classes missing "equals()" and "hashCode()" methods.
  • Corrected a typo that prevented list() from working on Subrange geometry.
  • Fixed a bug in "CurveFactory.createBlend()" that caused an exception to be thrown incorrectly if unitFlag is false and tanlen of

New in GeomSS 0.0.11 Alpha (Aug 22, 2011)

  • Added the ability to extract a point on a curve a a specified arc-length.
  • Added the ability to enrich a PointString or PointArray. This means an additional point is added in between each of the existing points.
  • Added a "gridToTolerance()" method to Surface objects that will select points on the surface that result in straight line segments between the points that are within a specified tolerance of the original surface. Also added a "grid2Tol()" BeanShell method that calls through to this new method.
  • Added the ability to calculate the variation of curvature (rate of change of curvature or VOC) on a curve.
  • Added the ability to create a circular arc from two end points and a tangent vector at the 1st end point.
  • Added the ability to fit a curve to a set of points and tangent vectors at each point.
  • Added the ability to create a cubic curve that has the specified end-points and tangent vectors at the end points.
  • Added the ability to create a curve that blends together or spans the gap between, two existing curve ends, matching the end points and tangent vectors on each curve.
  • Added the ability to create a fillet curve between two other curves which can be a circular arc, conic section, or cubic spline.
  • Added ability to change the dimension of a GeomPlane object.
  • Exposed a tolerance input on many Curve and Surface calculations that return only approximate results. The tolerance was previously hard-coded at 1e-9, but now it can be selected by the user depending on the problem being solved.
  • Reversed the surface normal direction for rendered arrays. This makes the rendered array orientation consistent with how surfaces are rendered.
  • CurveUtils.connectCurves() can now handle curves of different degrees and dimensions.
  • Corrected a spelling error in the Curve interface: "getPrincipleNormal" was changed to "getPrincipalNormal".
  • Improved robustness of curve arc-length calculations.
  • Corrected problems with the lighting of mirrored surfaces and arrays.
  • Improved support for inconsistent dimensions in Curve.intersect().

New in GeomSS 0.0.8 Alpha (Apr 5, 2011)

  • Corrected a long-standing error with zooming which caused the geometry to not be displayed in some circumstances. The zoom method has been changed from moving the camera closer or farther away from the model to leaving the camera fixed and scaling the model up or down in the virtual world with a uniform scaling factor.
  • Added the ability to display the geometry with a perspective transformation (default) or parallel (isometric) projection transformation.
  • Fixed a bug that prevented opening of files when all windows were closed on MacOS X.

New in GeomSS 0.0.7 Alpha (Oct 1, 2010)

  • Added the ability to reverse the parametric direction of a curve and to reverse either of the parametric directions of a surface.
  • Added the ability to transpose the parametric directions of a surface.
  • Added the ability to elevate the degree of a NURBS curve or surface.
  • Added the ability to split a curve into two curves at an arbitrary parametric position.
  • Added the ability to split a surface into two surfaces at an arbitrary S or T parametric position.
  • Added the ability to thin out every other point in a string or every other column or row in an array of points.
  • Made the closest point algorithms for curves and surfaces more robust.
  • Modified "decomposeToBezier" methods to return actual curve and surface representations of the segments/patches (rather than lists of control points only).
  • Fixed a bug that caused some geometry readers/writers to not close their output streams.
  • Corrected errors with NurbsSurface.getS0Curve(), getS1Curve(), getT0Curve(), and getT1Curve().

New in GeomSS 0.0.6 Alpha (Sep 9, 2010)

  • Added the ability to read and write a limited set of entities from/to an IGES file
  • Redesigned the interfaces and methods for reading/writing geometry files to be more general.
  • Added new command options for creating points, and the various geometry lists.
  • Added a method that will return the length of a PointString where "length" is defined as the sum of the distances between each consecutive point in the string.
  • Modified CurveFactory as follows:
  • Added a method for creating a degenerate point curve. This is a curve that is defined only at a single point (it has zero length).
  • Added a method for creating an elliptical arc segment.
  • Added a method for creating a parabolic arc segment.
  • Reversed the parametric direction of all circular/elliptical arcs so that they are counterclockwise when viewed looking down the normal vector (consistent with the right hand rule). This change will break existing scripts that use circular or elliptical arcs created using CurveFactory.
  • Added the ability to run GeomSS from the command line in a "batch" mode that runs the specified script without bringing up the interactive GUI.

New in GeomSS 0.0.5 Alpha (Aug 16, 2010)

  • Added methods for inserting one or many new knots into the knot vector(s) of existing curves (surfaces).
  • Added methods for attempting to remove knots from a curve or surface maintaining the curve or surface shape to within a certain tolerance.
  • Added methods for easily extracting the S & T curves that correspond to the columns & rows of the surface's control point network.
  • Added methods that decompose a NurbsCurve (or NurbsSurface) into B√©zier curve segments (or surface patches). GeomSS doesn't support dedicated B√©zier curve or surface objects, so these methods return lists of lists of control points or control point networks.
  • Added variants of the draw() command that will draw control points and any List containing geometry objects (or containing other Lists containing geometry, etc).
  • Added a command for creating a 1-degree straight line NurbsCurve between any two points (in any dimension).
  • Fixed some misc. bugs that cropped up in testing.

New in GeomSS 0.0.4 Alpha (Jul 19, 2010)

  • Added the ability to find the closest and farthest point on a surface to a specified point or array (list of lists) of points.
  • Added methods for finding the closest/farthest point on a curve for each point in a list of points.
  • Added methods for finding closest and farthest points on a curve or surface that are near the specified parametric position (allowing the user to identify the particular local minima to be returned).
  • Corrected errors in the calculation of curve arc length, surface area and surface enclosed volume that greatly increased the accuracy of these methods.
  • Improved type safety of the various geometry lists (so that you can't add a PointArray to a PointString for instance).

New in GeomSS 0.0.3 Alpha (Jul 6, 2010)

  • Fixed a bug that prevented "Change Working Directory‚Ķ" in the "File" menu from working.

New in GeomSS 0.0.2 Alpha (Jun 28, 2010)

  • Added support for Lofted Surfaces (surfaces made from a list of defining curves).
  • Added calculation of surface normal vector, tangent plane, mean curvature, Gaussian curvature, twist vector, surface area and enclosed volume.
  • Greatly improved unit support for parametric objects (curves & surfaces).
  • Corrected an error that caused an invalid error message to be displayed when Java3D 1.5+ could not be found.
  • Newly drawn objects now honor the previously set mirroring and render type settings. CenterAndZoom now honors the mirroring setting.
  • Fixed a bug with the calculation of derivatives on a SubrangeCurve.
  • Corrected an error in ControlPointNet.to() method.