Click or drag to resize

What's New?

Important note Important

In the upcoming 2017r3 release, the Java version of STK Components will begin requiring Java 8 or above, in contrast to our current requirement of Java 6 or above. This will allow native use of the new standard DateTime APIs throughout Components, and remove the bundled Joda-Time library. For questions or concerns please contact

Important note Important

In the upcoming 2017r3 release, the 32-bit version of Insight3D will be discontinued. Insight3D will be 64-bit only. Note that all other analysis libraries have always been independent of architecture and will be unaffected. For questions or concerns please contact

STK Components for Java 2017 r2

Breaking Changes

  • Methods and types which are not intended for use from external code are now marked as deprecated. These members are marked as internal in STK Components for .NET, preventing their use externally, but since Java does not have an equivalent access level, these members had to be marked public when STK Components for Java was created. These members have always been omitted from the documentation, and marking them deprecated further communicates that these members are for internal use only, are not a supported part of the Components API, and are subject to change without notice.

  • ScalarPolarizationEfficiency has been moved to the package.

  • Several properties have changed from CesiumProperty<Double> to CesiumProperty<Integer>. These properties always required integer values in order to render without error, and the new type makes this more clear.

    • AzimuthElevationMaskGraphics.NumberOfRings (get / set)

    • EllipsoidGraphics.SlicePartitions (get / set)

    • EllipsoidGraphics.StackPartitions (get / set)

  • Several of the properties on GpsSatelliteInformation have been replaced by better-named properties.

  • SemAlmanacRecord.SpaceVehicleNumber has been marked obsolete. Use SatelliteVehicleNumber (get / set) instead.

  • Sgp4EstimationInput.OutputEpoch has been marked obsolete. Use RequestedEstimationEpoch (get / set) which makes it more clear that the resulting epoch may be be different if it occurs during a leap second.

  • SegmentPropagatorVariable.createSettings is now obsolete. Use SegmentPropagatorVariableEvaluator.createSettings instead.

  • The LeapSecond constructor taking a JulianDate previously reinterpreted the numeric day count in the UTC TimeStandard, regardless of the TimeStandard of the JulianDate, which could lead to unexpected results. Now, it requires that the given date is in UTC, and throws if it is not.

  • Sgp4Elements now implements ICloneWithContext instead of Cloneable.

New Features


  • Several methods and constructors that previously took an Iterable have been improved to now accept a bounded wildcard, which makes them easier to use. For example, Sgp4Propagator now accepts an Iterable<? extends Sgp4Elements>, which enables easy use with collections of derived types, for example, List<TwoLineElementSet>.

  • StkEphemerisFile can now load ephemeris files containing time information expressed in the time formats GPSG, UTCG, TAIG, and TDTG.

  • The algorithm used to compute geodesic curves on an ellipsoid has been improved. See the documentation for EllipsoidGeodesic for details.

  • Sgp4Propagator.estimateElements now adds 1 second to a requested epoch that falls during a leap second. This avoids issues with creating a TwoLineElementSet because the TLE format cannot represent an epoch that is during a leap second. This behavior can be configured using the Sgp4EstimationInput.AllowEstimationEpochDuringLeapSecond (get / set) property.

  • Added new static helper methods to CesiumResource to create an instance from an image or from a stream.

  • The look and feel of the documentation has been improved, and the content has been revised throughout.

  • Added a new Axes, Points, and Vectors topic to the Programmer's Guide, explaining these types in more detail.

  • Added a Using STK Components with Matlab topic to the Programmer's Guide, explaining how to use STK Components for Java from within MATLAB.

Bug Fixes

  • Fixed an issue with EllipsoidGeodesic that prevented computing the distance between two points that did not have a unique geodesic solution connecting them.

  • Fixed an issue with RainAttenuationModelItuRP618 with a configured CustomRainRate (get / set). The custom rain rate is now correctly expected to be in meters per second, and is documented as such. Previously, the value was treated as millimeters per hour.

  • Fixed an issue when writing TwoLineElementSets with values for BStar (get / set) or MeanMotionDotDot (get / set) that require leading zeros in the mantissa in place of digits greater than the maximum allowable in the exponent.

  • The set of LeapSeconds parsed from an EarthOrientationParametersFile and available from the EarthOrientationParameters.LeapSeconds (get) property were incorrect, and have been corrected. These leap seconds are for informational use, and are not used for analysis by STK Components.

  • Writing a LeapSecondFile previously produced unexpected output for the epoch of the rate at which the UTC time scale is slowing with respect to TAI. This data is not used, but by definition this value should always be 41317.

STK Components for Java 2017 r1

Breaking Changes

  • The static method Polarization.toConstantPolarizationSource has been deprecated. Use the new PolarizationSource.toPolarizationSource method instead.

New Features

  • Added Iau2009Orientation, which provides central body orientation parameters using data from the 2009 IAU report.

  • Added support to the Cesium library for the following CZML features:

    • CentralBodySurfaceCurveGraphics.Shadows (get / set)

    • CentralBodySurfaceRegionGraphics.Shadows (get / set)

    • CesiumVerticalOrigin.BASELINE

    • EllipsoidGraphics.Shadows (get / set)

    • LabelGraphics.ShowBackground (get / set)

    • LabelGraphics.BackgroundColor (get / set)

    • LabelGraphics.BackgroundPadding (get / set)

    • LinkGraphics.Shadows (get / set)

    • ModelGraphics.Color (get / set)

    • ModelGraphics.ColorBlendAmount (get / set)

    • ModelGraphics.ColorBlendMode (get / set)

    • ModelGraphics.Shadows (get / set)

    • ModelGraphics.SilhouetteColor (get / set)

    • ModelGraphics.SilhouetteSize (get / set)

Bug Fixes

  • Fixed a bug when writing CZML that produced incorrect output when using a CompositePoint or CompositeAxes with the same point or axes contained in multiple intervals.

  • Fixed a bug when writing CZML with a CompositePoint or CompositeAxes where the axes or points contained by the composite could be evaluated outside of the interval over which the composite contains them, which could cause an exception while sampling.

  • Fixed an issue where DenseMatrix computed its hash code incorrectly.

STK Components for Java 2016 r4

Breaking Changes

New Features


  • Added JplDE430, which loads JPL DE430 ephemeris data.

  • ImpulsiveManeuverSegment will now honor the Orientation (get / set) of the ImpulsiveManeuverInformation, and the StateElementAdapter for the propagated point, when run as a single segment, or when it is the first segment in a sequence producing ephemeris. This requires a StateElementAdapter to be set for the propagated point in those cases. If an adapter for the point is specified on an ImpulsiveManeuverSegment and it is not the first segment producing ephemeris, that adapter will be used at propagation time when producing the ephemeris.

  • Improved the exception message thrown by Sgp4Propagator when estimation of orbital elements fails.

  • LifetimeOrbitPropagator has been changed to match recent changes in STK. Specifically, a correction has been made to the J2^2 effects to eliminate unexpected eccentricity growth which could result in prediction of orbital lifetimes that were too short.

Bug Fixes

  • Fixed a bug when writing CZML that caused auxiliary properties, such as reference frame, interpolation settings, etc., to be incorrectly omitted from subsequent intervals after the first when using an interpolator with segment boundary times. These auxiliary properties are scoped in CZML at the interval level, so they must be included in all intervals in order to be loaded correctly.

  • Fixed an issue where an AxesAlignedConstrained would produce the incorrect orientation when configured with the principal axes as the AxisIndicator.SECOND and the reference axes as the AxisIndicator.FIRST.

  • Fixed a bug in MultivariableFunctionDifferentialSolver where the maximum step of variables was misapplied. This fix will improve the numerical stability of the differential corrector.

  • Fixed an issue where EllipsoidSurfaceRegion.isPointInsideRegion could return incorrect results in cases where the region under consideration is very large relative to the size of the central body.

  • Fixed incorrect coefficients in finite differencing in the Route Design Library that affected derivatives in certain edge cases.

STK Components for Java 2016 r3

Breaking Changes

  • Subclasses of InterpolationAlgorithm must now implement IEquatableDefinition by implementing checkForSameDefinition and computeCurrentDefinitionHashCode. Typically, most algorithms have no state, so definitional equality is solely determined by the type.

  • BoundingRectangle has been moved from Insight3D to the package in the Core library. Additionally, the Width (get) and Height (get) properties previously returned incorrect results and have been corrected.

  • In the Cesium library, BillboardGraphics.AlignedAxis (get / set) has been changed to a CesiumProperty<UnitCartesian>. The value was always required to be unit magnitude in order to work correctly in Cesium, but the new type enforces this constraint.

  • SegmentResults.StateForNextSegment (get) is no longer settable.

  • In the Curve class and all subclasses, ArcLength was inappropriately named and has been marked obsolete. Use the more accurately named AngleSubtended (get) property instead. Similarly, interpolateUsingArcLength is obsolete and replaced by interpolateUsingAngleSubtended.

  • The approach for cloning functions used with SolvableMultivariableFunction has changed. As such, the createClonesOfFunctionForParallelEvaluation methods are now obsolete, and SolvableMultivariableFunctionOperations.computeJacobianNumerically no longer takes an array of cloned functions.

  • The overload of PropagateSegmentResults.addStoppingConditionBackwardsAdapters taking a StoppingCondition has been marked obsolete. Use the overload taking a SegmentDefinition.

  • In SegmentResults, addEphemerid was misnamed and has been marked obsolete. Use addEphemerisPoint instead.

  • In RinexObservationHeader, Runby has been replaced by RunBy (get), and TimeOfLastObservaton has been marked obsolete and replaced by TimeOfLastObservation (get).

  • In EvaluatorHelper, collectionsAreSame has been marked obsolete and will be removed in a future release. Also, the overload of dispose taking a boolean flag has been marked obsolete. Instead, use the overload that does not take a boolean flag.

  • Removed the following types and properties, which were marked obsolete in a previous release: GainPattern, ReceivingAntennaExtension, TransmittingAntennaExtension, CraneRainAttenuationModel.UseRainRateOverride, CraneRainAttenuationModel.RainRateOverride, CraneRainAttenuationModel.UseRainHeightOverride, CraneRainAttenuationModel.RainHeightOverride, RainAttenuationModelItuRP618.UseRainRateOverride, RainAttenuationModelItuRP618.RainRateOverride, RainAttenuationModelItuRP618.UseRainHeightOverride, RainAttenuationModelItuRP618.RainHeightOverride, InvalidFuelStateException.PropagationElementThanRanOut. Removed setter overloads taking double from the following types: CloudFogAttenuationModelItuRP840, TiremPropagationModel3_18, SimpleSatcomAtmosphericAttenuationModel.

New Features


Bug Fixes

  • Previously, ephemeris would not be constructed properly for SegmentLists whose child segments were going in different directions in time, or if there were time discontinuities in the segments. This has been corrected.

  • ReturnSegment will no longer change the adapters for the segment list it is returning from, and now honors the PassAllElementsToNextSegment (get) flag.

  • Auto-sequences in a PropagateSegment are now reported in the original propagate segment's defined-in axes and frame.

  • SegmentListResults that are completely eclipsed by later overlapping segments now have no ephemeris in its ephemeris lists.

  • RasterStream now correctly honors the orientation specified by RasterAttributes.Orientation (get).

  • Fixed an issue where Covariance3By3SizeAndOrientationInterpolator modified CovarianceData (get / set) while getting an evaluator, causing evaluator caching to fail. Getting an evaluator now correctly leaves the definitional object unmodified.

  • Corrected a race condition that could cause the number of worker threads used to parallelize calculations to be incorrectly determined to be zero, leading to a crash.

  • Fixed an exception in SolarRadiationBoundaryMitigation when propagating with a PropagationNewtonianPoint configured with IncludeHighestDerivativeInOutput (get / set) set to true.

  • Fixed an issue in Ellipsoid that could cause tangent points to be returned that were slightly off the ellipsoid.

  • Fixed an issue where PointAtAltitude would throw an exception if requested to evaluate at an order higher than it was capable of.

  • Corrected documentation for Sgp4Propagator.ReferenceFrame (get) which incorrectly stated that the frame was TEME of Epoch.

STK Components for Java 2016 r2

Breaking Changes

New Features


Bug Fixes

STK Components for Java 2016 r1

Breaking Changes

  • ICesiumUriResolver.resolveUri now takes a string instead of a URI. This avoids problems with URIs that can be too long for the URI type (e.g. data URIs). Similarly, CesiumResource.Uri (get) is now a string.

New Features


  • Embedding resources in CZML now works with non-HTTP URIs (e.g. file URIs).

  • NumericalPropagator now catches exceptions thrown during propagation and raises a new ExceptionDuringPropagation (add / remove) event.

Bug Fixes

  • Fixed an issue where a non-thread-safe AccessConstraintEvaluator was not always copied before being used from another thread, specifically when evaluating access with an interval collection with more than one interval, and when one of those intervals is zero-duration.

  • Fixed an issue where ScalarOccultation could throw an exception in rare cases where a platform is very far away from a central body.

  • Corrected an issue where CZML name and parent properties would only be written if the item also had other CZML graphical properties defined. These properties are now written by new NameCesiumSource and ParentCesiumSource objects.

STK Components for Java 2015 r3

Breaking Changes

  • The following properties have changed from double to ScalarDependentOnLink, allowing the values used by the models to vary based on time, or the positions of transmitter or receiver. A constant double value can be converted to a ScalarDependentOnLink by calling the ScalarDependentOnLink.toScalarDependentOnLink helper method.

    • CloudFogAttenuationModelItuRP840.CloudCeiling (get / set)

    • CloudFogAttenuationModelItuRP840.CloudLayerThickness (get / set)

    • CloudFogAttenuationModelItuRP840.CloudLiquidWaterDensity (get / set)

    • CloudFogAttenuationModelItuRP840.CloudTemperature (get / set)

    • SimpleSatcomAtmosphericAttenuationModel.SurfaceTemperature (get / set)

    • SimpleSatcomAtmosphericAttenuationModel.WaterVaporConcentration (get / set)

    • TiremPropagationModel3_18.SurfaceConductivity (get / set)

    • TiremPropagationModel3_18.SurfaceHumidity (get / set)

    • TiremPropagationModel3_18.SurfaceRefractivity (get / set)

    • TiremPropagationModel3_18.SurfaceRelativePermittivity (get / set)

  • Several types that were specific to RF communications have been renamed, and the previous version are now obsolete. Specifically, GainPattern is replaced by RadioFrequencyGainPattern, ReceivingAntennaExtension is replaced by RadioFrequencyReceivingAntennaExtension, and TransmittingAntennaExtension is replaced by RadioFrequencyTransmittingAntennaExtension.

  • The following properties are now obsolete:

    • CraneRainAttenuationModel.RainHeightOverride

    • CraneRainAttenuationModel.RainRateOverride

    • CraneRainAttenuationModel.UseRainHeightOverride

    • CraneRainAttenuationModel.UseRainRateOverride

    • RainAttenuationModelItuRP618.RainHeightOverride

    • RainAttenuationModelItuRP618.RainRateOverride

    • RainAttenuationModelItuRP618.UseRainHeightOverride

    • RainAttenuationModelItuRP618.UseRainRateOverride

    Instead, customize the models using these new properties:

    • CraneRainAttenuationModel.CustomRainHeight (get / set)

    • CraneRainAttenuationModel.CustomRainRate (get / set)

    • RainAttenuationModelItuRP618.CustomRainHeight (get / set)

    • RainAttenuationModelItuRP618.CustomRainRate (get / set)

  • InvalidFuelStateException.PropagationElementThanRanOut was misspelled and has been marked obsolete. Use InvalidFuelStateException.PropagationElementThatRanOut (get) instead.

New Features

  • You can now specify custom weather-related values that vary with time or position when using signal propagation models in the Communications Library, by providing a ScalarDependentOnLink instance. Previously, these values had to be constant values.

  • Added new high level communications objects for modeling digital communications at optical wavelengths: OpticalTransmitter and OpticalReceiver.

  • Added photodiode photodetector objects to model the detector output signal-to-noise ratio, including both sky and sun background light noise: AvalanchePhotodiode and PinPhotodiode.

  • Added an optical antenna gain pattern, GaussianOpticalGainPattern, for modeling the beam profile of the transmit or receive optics. The model takes the aperture diameter and divergence angle as input and also includes the ability to provide a fixed pointing offset from the link line-of-sight vector.

  • Added TropoScintAttenuationModelItuRP1814, which implements the ITU-R P.1814 (Section 5 Scintillation effects) tropospheric scintillation propagation loss model for modeling scintillation loss in the optical frequency band. The model can use a custom RefractiveIndexStructureParameterModel, or by default uses the new HufnagelValleyRefractiveIndexStructureParameterModel, which implements the Hufnagel-Valley (H-V) model.

  • Added BeerLambertLawAtmosphericAttenuationModel, which implements the Beer-Lambert Law atmospheric absorption model for modeling atmospheric absorption/scattering in the optical frequency band.

  • Added ModulationOok, which implements the On-off Keying (OOK) modulation scheme, typically used in digital optical communications, for modeling Bit-Error-Rate vs Eb/No.

  • Added PointAtAltitude which projects a reference point's motion onto a surface of constant altitude.


Bug Fixes

  • AccessQuery now honors the ExtremaCrossingUncertaintyFactor (get / set) of the AccessConstraint.Sampling (get). The default value for the uncertainty factor has been changed to a conservative value, in order to prevent false negative results from access (missed satisfaction intervals).

  • Fixed an issue that caused an exception to be thrown, incorrectly indicating that data is not available, when computing access with a CommunicationObjectConstraint over an interval that exactly matches the availability of the transmitter.

  • All equalsEpsilon methods (for example, Cartesian.equalsEpsilon) now return true when the difference in value is exactly equal to the epsilon value. Previously, it only returned true if the difference was less than epsilon.

  • Fixed an issue with the default constructor for ComplexDigitalTransmitter which switched the default power and frequency values, causing it to incorrectly use a transmit power of 14.5e9 Watts and a frequency of 1000.0 Hz, rather than the documented power of 1000 Watts and frequency of 14.5e9 Hz.

STK Components for Java 2015 r2

Breaking Changes

  • The pattern for implementing definitional objects has changed. In general, classes that derive from DefinitionalObject must override protected methods from their base class and call the base implementation, augmenting the process of checking if two objects have the same definition. See the documentation for DefinitionalObject for more information on implementing the pattern correctly.

  • TransactionContext.doTransactionally now takes an instance of Action1. The old method, which takes Action, has been deprecated. In a future release, Action will be replaced with a delegate with no generic type that takes no parameters.

  • PerturbationValue has been removed from SolverVariableSettings. PerturbationValues (get / set) has been added to SolvableMultivariableFunction.

  • NormalFunctionEvaluationEvent and PerturbedFunctionEvaluationEvent have been moved from MultivariableFunctionSolver to TargetedSegmentListDifferentialCorrector and TargetedSegmentListFunction.

  • The MultivariableFunctionSolverIterationResults constructor that takes an array of function evaluations is obsolete. Use the constructor that takes a SolvableMultivariableFunctionDerivativeResults.

  • TransmitterIdentifier is now obsolete. See below for related changes to how IntendedSignalByTransmitter identifies signals.

  • ClassicalEquationOfEquinoxes and EntityParameter<TEntity> are now final.

  • Removed the following types, methods, and properties, which were marked obsolete in a previous release: CentralBodyObstructionConstraint.getDegreeOfObstruction, ScalarDensityJacchiaRoberts.UseApparentSunPosition, MarkerBatchPrimitive.alignToPixel, ProjectedRasterOverlay. Removed overloaded methods taking a TypeLiteral parameter: NumericalPropagationStateHistory.getDateMotionCollection, PropagationStateConverter.getDateMotionCollection, PropagationStateConverter.convertState, AuxiliaryStateElementConverter.convertState, PropagationStateElementConverter.convertState.

  • HashCode.finalizeHash is now obsolete. Hash codes are finalized automatically when calling the combine methods.

  • Signal.LowerNoiseBandwdithFrequency was misspelled and has been marked obsolete. Use LowerNoiseBandwidthFrequency (get) instead.

New Features

  • Access Queries can now optionally log debugging information about constraint satisfaction. See AccessQuery.DebuggingLogger (get / set).


Bug Fixes

  • Fixed an issue in Ellipsoid.ellipsoidSeparationDistance which would cause incorrect results for greatly distorted ellipsoidal shapes.

  • Fixed an issue in ComplexReceiver that prevented successful cloning.

  • Fixed an issue in ScalarDensityJacchia1970 which was reporting incorrect densities below the minimum altitude height of 90 km. It now returns the density at 90 km when evaluated below 90 km.

  • Fixed an issue in ScalarDensityMsis90 where daily and average F10.7 solar flux index values were incorrectly passed to the computational algorithm causing the values to be swapped.

  • Restored documentation of a number of Insight3D types, which was omitted in previous releases.

  • Fixed documentation of UnitSpherical directions when creating a CustomSensorPattern.

STK Components for Java 2015 r1

New Features


  • Improved the behavior of writing out a TwoLineElementSet with a satellite number that is less than 5 digits.

  • Added the June 2015 leap second to the default LeapSecondsFacet.

Bug Fixes

STK Components for Java 2014 r7

This release includes an updated Software License Agreement.


Bug Fixes

STK Components for Java 2014 r6


Bug Fixes

  • Fixed a crash which could occur when trying to generate CZML for an object whose ephemeris had segment boundary times.

STK Components for Java 2014 r5

Breaking Changes

  • SolarGeophysicalData now implements IThreadAware.

  • Updated EarthCentralBody.PseudoFixedFrame (get / set) to be more consistent with previous conventions so that it does not include the s-prime correction from the International Celestial Reference System.

New Features

  • Introducing the Cesium Library, which can be used to generate CZML content from STK Components objects, so that they can be visualized using Cesium.


  • All example solutions previously targeted to VS 2005 are now targeted to VS 2008.

Bug Fixes

STK Components for Java 2014 r4

New Features

  • Added support for propagating multiple TLEs in an Sgp4Propagator, using ElementSets (get) and SwitchingMethod (get / set).


Bug Fixes

STK Components for Java 2014 r3

Breaking Changes

  • TargetedSegmentList.ResetNestedTargetedSegments was replaced with TargetedSegmentList.ResetBetweenRuns (get / set). It is now the responsibility of a TargetedSegmentList to reset itself between runs if necessary, rather than determine whether its children must be reset.

  • Removed the unused ParentSegment property from TargetedSegmentListOperator.

  • Moved ImpulsiveManeuverSegment and related types from to In addition, many abstract types were moved from to

New Features

  • Added PrescribedAccelerationTransitionProfile, which allows users to specify a route profile which will apply a given thrust acceleration or deceleration over the inclined or level traversal between two waypoints.

Bug Fixes

  • Fixed a bug where constructing an EllipsoidSurfaceRegion larger than half of the ellipsoid's surface would result in the Centroid (get) property representing the centroid of the area outside of the region rather than the inside of the region.

  • Fixed improper formatting with some of the exception messages thrown by KozaiIzsakMeanElements.

STK Components for Java 2014 r2

Breaking Changes

New Features


  • Axes, Point, and Vector can now return Scalar representations of their components.

  • Added CompositeAxes. This new Axes is defined by different axes over different intervals of time.

  • Added overloads to the EllipsoidSurfaceRegion static construction methods to allow the user to manually specify a reference point as being inside or outside of the region. This allows for the definition of regions larger than half of an Ellipsoid.

Bug Fixes

  • Fixed a bug where a ProjectedRaster would not update correctly when it was not being rendered. In addition, artifacts that could be displayed beneath the surface of the CentralBody when using a ProjectedRaster were removed.

STK Components for Java 2014 r1

Breaking Changes

  • ProjectedRasterOverlay has been deprecated and replaced with the new primitive ProjectedRaster, which projects images and video onto terrain or the central body surface and contains the same functionality as the old ProjectedRasterOverlay class, but with some performance and visualization enhancements.

New Features

  • MathPlayer is no longer used in our documentation and has been removed from the install.

  • Added BallisticPropagator which allows for the easy calculation of two-body trajectories from and to fixed locations on a CentralBody. Solutions for minimum energy, minimum eccentricity, or matching specified values of delta-V, flight duration, or apogee altitude can be found.

  • Added new geometry types ScalarSine and ScalarCosine

  • Texture2DFactory can now create mipmap compatible textures.


Bug Fixes

STK Components for Java 2013 r7

Breaking Changes

New Features

  • Insight3D can now display KML super overlays.


Bug Fixes

STK Components for Java 2013 r6

New Features


STK Components for Java 2013 r5

Breaking Changes

  • A large number of types and members have been removed in this release. These items were all marked obsolete in previous releases. Please contact AGI support if you have difficulty adjusting your code to work with this release.

  • CentralBodyObstructionConstraint.getDegreeOfObstruction is now obsolete. Please use Ellipsoid.getDegreeOfObstruction instead.

  • NumericalPropagationStateHistory.insert has been removed.

  • The result of NumericalPropagationStateHistory.getDateMotionCollection is now ordered chronologically, regardless of the sorting of the history itself. This allows the returned collection to be used correctly with other objects, such as interpolators, without manipulation. However, this means that if you were previously reversing a collection manually for this purpose, you will need to change that. If a chronologically reversed collection is desired after propagating backwards in time and creating a reversed history, one can still be created by manually calling PropagationStateConverter.getDateMotionCollection and passing the reversed time and state lists as parameters.

  • Numerical propagator methods taking a type literal are now obsolete. Please use the versions without a type literal instead.

New Features


  • NumericalPropagationStateHistory now enforces ordering so that its entries will all exist in either forward- or reverse-chronological order, specified by its SortingFormat. The add methods have been reworked so that they will now add a new entry to the correct index.

Bug Fixes

  • Using an AdaptiveNumericalIntegrator to integrate backwards, while that integrator is choosing adaptive steps, and while that integrator is truncating those adaptive steps, will no longer cause an erroneous exception to be thrown.

  • Fixed several memory leaks in Insight3D.

  • Fixed a bug that caused a CompositePrimitive nested inside an OrderedCompositePrimitive to not be rendered.

STK Components for Java 2013 r4

New Features

  • Added the Navigation Advanced Library, which builds on the Navigation Accuracy Library and the Communications Library by considering how communication links contribute to GPS errors. GPS transmitters, signals, and a GPS receiver communications front end are modeled, allowing for GPS link budgets to be used in analysis, and to determine tracking using Carrier to Noise thresholds.

  • Added CentralBodySurfaceRegionSensorVolumeConstraint to constrain access based on whether a sensor can see part of a surface region (or area target) on the ground.

  • Added CompositePoint. This new Point is defined by different points over different intervals of time.

  • Added ModulationFsk to support Frequency Shift Keying (FSK) modulation.


  • STK Components no longer logs information at the DEBUG log level during calculations.

  • The embedded version of Joda Time has been upgraded to version 2.2.

Bug Fixes

  • Fixed a bug that could lead to generating coverage grids with missing grid points.

  • Fixed a bug where TerrainAzimuthElevationMask would throw an exception for some requested numbers of azimuth steps.

  • Fixed a bug in EllipsoidSurfaceCurve.getDiscretePoints which would, in rare cases, cause instances of the inherited classes to provide points which were not dense enough to fulfill the requested granularity.

STK Components for Java 2013 r3

Bug Fixes

STK Components for Java 2013 r2

New Features

Bug Fixes

  • Fixed a bug that could cause GregorianDate to incorrectly interpret invalid dates (such as the 30th day of February) as a year plus a day of the year.

  • Fixed a bug in StkAttitudeFile.configureFromAxes that caused incorrect results when using an Axes not supported by the STK Attitude file format. StkAttitudeFile.configureFromAxes now correctly transforms the input data to a supported Axes.

  • Fixed a bug where AttitudeTimeQuaternions.AttitudeData (get / set) was not consistently represented using STK Desktop's attitude convention.

  • Fixed a bug in Insight3D that could cause imagery overlay tiles to be shown before they were done loading.

STK Components for Java 2013 r1

New Features


Bug Fixes

  • The difference between TAI and UTC specified in Earth Orientation Parameters (EOP) files is now honored when converting sample times to TAI. Previously, the difference according to the LeapSecondsFacet was used, which could be different in rare circumstances. If the previous behavior is desired, it can be restored by setting EarthOrientationParametersReadOptions.InterpretTimesUsingLeapSecondsFacet (get / set) to true on the options passed to readData.

  • ScalarExponent now produces correct partial derivatives when the exponent varies with respect to the independent variables.

  • Fixed a bug in GregorianDate.toString that could cause it to report incorrect fractional seconds with seconds close to but not equal to zero.

  • Not-a-number (NaN) floating point values now appear as "NaN" and positive/negative infinity now appear as "Infinity" when they appear in strings or files written by STK Components.

STK Components for Java 2012 r7

Breaking Changes

New Features

  • SegmentBoundaryTimes (get / set) can now be specified on AxesInterpolator and RotationalMotionInterpolator. The interpolators will not interpolate over these boundary times.

  • Added a GregorianDate.roundSeconds method to round an instance's GregorianDate.Second (get) property to a specified number of digits after the decimal point.

  • Added GaussianStatistics, containing functions for use with multi-dimensional Gaussian probability distributions like position covariance.

  • Added CovarianceSeparationConstraint to constrain access based on the range between two objects while taking into account the uncertainty of position of one or both of them.

  • Added new coordinate type, Covariance3By3Derivative, representing the derivatives of the positional variance and covariance information for an object.

  • Added new geometry type, DynamicCovariance3By3, to evaluate covariance and its derivatives over time.

  • Uncertainty in the LocationPoint (get / set) of a platform can now be represented by ILocationPointCovarianceService and LocationPointCovarianceExtension.

  • Uncertainty in the LocationPoint (get / set) of a platform can now be visualized with ILocationPointCovarianceGraphicsService and LocationPointCovarianceGraphicsExtension.

  • Added a STK_COMPONENTS_NO_DEFAULT_LEAP_SECONDS environment variable that, when set, prevents the libraries from using a default table of leap seconds. As a result, if a table of leap seconds is not explicitly given, the libraries will throw an exception when leap seconds are required.

  • Added a STK_COMPONENTS_NO_DEFAULT_EARTH_ORIENTATION_PARAMETERS environment variable that, when set, prevents the libraries from using a default table of EarthOrientationParameters (EOP) data. As a result, if EOP data is not explicitly given, the libraries will throw an exception when EOP data is required.

  • Added support for two new NanuType values: NanuType.FCSTUUFN and NanuType.DECOM. For the FCSTUUFN NANU, no end date is set for the satellite outage.

  • New classes have been added, e.g. StkComponentsCore, containing easily-accessible version information about the version of STK Components being used.

  • EntityParameter<TEntity> and TransactionParameter now have a DefaultValue (get / set) property which allows the user to specify a default value for the parameter if one is not specified during evaluator parameterization.


Bug Fixes

  • The values of the AuxiliaryStateElements in the NumericalPropagator.CurrentState (get) property are now updated on the creation and reset of the propagator. Previously, these values were out-of-date until propagate was called.

  • Resetting a NumericalPropagator now restores the PropagationDirection (get) property to its original value.

  • Fixed a bug where an StkEphemerisFile containing CovarianceTimePosVel data and without the CovarianceFormat property explicitly specified would be incorrectly interpreted as UpperTriangular rather than LowerTriangular.

  • Fixed a bug where converting from UTC time to UT1 time very early, without first accessing other parts of the libraries, could throw an exception.

  • Fixed a bug that caused an exception when calling createSatelliteCollection on an SP3cEphemeris instance without velocity data.

  • Fixed a bug where EllipsoidSurfaceRegion would report a CartographicExtent including the north or south pole for extremely thin north-south regions.

  • Fixed a bug in GregorianDate.toString that could lead to rounding errors in the last decimal place in the formatted number of seconds.

  • Fixed a bug in ServiceProviderDisplay where certain types of changes would not be applied even after calling applyChanges.

STK Components for Java 2012 r6

Breaking Changes

New Features


Bug Fixes

STK Components for Java 2012 r5

Breaking Changes

  • PropagatedRoute.HasNoConfigurationErrors is obsolete. Please use HasConfigurationErrors (get) instead.

New Features

  • Added Terrain Integrated Rough Earth Model (TIREM) v3.18 for accurate communication signal propagation along terrain. For more information, see the reference documentation for TiremPropagationModel3_18.

  • PropagatedRoute now exposes a Segments (get) property and a getSegment method in order to provide access to more detailed information about individual segments in the overall route.

  • Added Ellipsoid.ellipsoidSeparationDistance to compute the separation distance between two ellipsoids.


  • Modified TerrainAvoidanceProfile so that having a large effective pitch rate will no longer cause the profile to exaggerate the height above the terrain. This includes alternative heuristics to avoid cases where noisy terrain can cause problems when trying to navigate over local peaks. TerrainAvoidanceProfile should now be more reliable and create reasonable routes in most cases, though configuration errors may still result from certain difficult geometries.

  • Improved the reliability of the StandardTransitionProfileSegment to prevent numerical noise from causing conflict between the boundary conditions between profiles. The height of the profile at the end of a long surface segment will now be more precise with respect to the requested boundary condition.

  • Added a new multiply method to Cartesian to multiply a Cartesian (treated as a row vector) by a Matrix3By3.

  • Added a constructor to Matrix3By3Symmetric that rounds the non-diagonal elements of a Matrix3By3. This provides a better way of constructing a symmetric matrix from a matrix which has become slightly non-symmetric due to numerical noise from the fromLowerTriangular and fromUpperTriangular methods.

Bug Fixes

  • Fixed a bug in ReceivingAntennaExtension that could lead to exceptions when using a ComplexReceiver created from a SimpleReceiver.

  • Fixed a bug in GregorianDate.toIso8601String that caused single-digit numbers of seconds to be formatted without a leading zero. In addition, ISO8601 dates are now formatted consistently regardless of the current culture.

  • Fixed a bug in LinkVisualizer that could cause multiple links visualized with ServiceProviderDisplay to be incorrectly displayed in the same color.

STK Components for Java 2012 r4

Breaking Changes

  • RinexNavigationEphemeris.AvailabilityIntervals (get) is now computed from the time of transmission rather than from the time of ephemeris.

  • StkEphemerisFile no longer automatically converts distances to meters and angles to radians on load. However, the interpolator accessible via the Interpolator (get / set) property still offers data in meters and radians for easier interfacing with other parts of STK Components.

  • When an exception occurs during function evaluation, TimeIntervalFinder now wraps the exception in a ThreadException even when it is operating in a single-threaded mode. This is consistent with the behavior in the rest of STK Components and allows user code to catch the same exception regardless of whether the operation ended up being multithreaded.

New Features


Bug Fixes

STK Components for Java 2012 r3

Breaking Changes

New Features


  • StkEphemerisFile now supports the EphemerisLLRTimePos and EphemerisLLRTimePosVel formats.

  • BrentFindExtremum no longer throws an exception when the values it's given are already converged based on the independent variable tolerance.

Bug Fixes

STK Components for Java 2012 r2

Breaking Changes

New Features


  • AGI Components has been renamed to STK Components!

  • Improved terrain performance by about 10% in many important use-cases.

  • StkEphemerisFile now treats two (or more) successive ephemeris points with the same time as implicit SegmentBoundaryTimes (get / set).

  • Improved EvaluatorGroup algorithm for selecting where to insert caches for evaluators that include parameters. This will result in improved performance when using parameterized evaluators.

  • Improved performance for common cases involving Communications Library propagation models and antenna patterns.

  • Improved performance of repeated calls to GeometryTransformer.observePoint with different points but where each point is defined in the same reference frame.

Bug Fixes

  • Fixed a bug in StkEphemerisFile that caused distances to be read incorrectly when the file specified the DistanceUnit property.

  • Fixed a bug preventing CommunicationSystem from being used with CoverageDefinitionOnCentralBody.

  • Fixed a bug in TranslationalMotionInterpolator that caused it to arbitrarily return either of the two values when evaluated exactly on a segment boundary time. Now, it always returns the second value.

  • Fixed a bug in various caching evaluators that could cause them to return incorrect results when the underlying evaluator threw an exception and then the cache was evaluated again at the same time.

  • Fixed a bug where CoverageDefinitionOnCentralBody would report incorrect access results for assets defined to include an AccessQueryOr.

  • Fixed a bug that caused TwoLineElementSet.toTleString to write a negative exponent for BStar (get / set) and MeanMotionDotDot (get / set) even in the rare case that their exponents are positive.

  • Fixed a bug that could prevent a ScreenOverlay from being returned in a call to pick when an application had multiple Insight3D controls.

AGI Components for Java 2012 r1a


  • Added the recently-announced June 30, 2012 leap second to the default list of leap seconds.

AGI Components for Java 2012 r1

Breaking Changes

New Features


Bug Fixes

  • Fixed a bug where some AccessEvaluators would report true for IsTimeVarying (get) instead of false, leading to inefficient evaluator performance in cases where the access result was static.

  • Fixed a bug in CubicRealPolynomial that could cause an exception when attempting to project a ComplexConic sensor.

  • Fixed a bug in Ellipsoid.tangents that caused it to always report that there were no tangents when the specified half angle was greater than 90 degrees.

  • Fixed a bug that resulted in a NullPointerException when copying a NumericalPropagator with auxiliary elements.

  • TextBatchPrimitive now works correctly when one or more of the strings is an empty string.

AGI Components for Java 2011 r9

Breaking Changes

New Features


Bug Fixes

  • StkEphemerisFile now reads the InterpolationSamplesM1 property written by recent versions of STK. Previously, it ignored the property, which could result in incorrect interpolation.

  • Fixed a bug in TranslationalMotionInterpolator that could cause it to interpolate using more points than expected when used with HermitePolynomialApproximation.

  • References to a single instance of a NumericalPropagator held by multiple objects will now get updated properly when those objects are cloned.

  • Fixed a bug where specifying values near zero for the minimum threshold of a CommunicationObjectConstraint would cause the constraint to incorrectly report that access is not available.

  • Fixed a bug in Covariance3By3SizeAndOrientationInterpolator that could lead to incorrect results when the values of SigmaDegree (get / set) and RotationDegree (get / set) were different.

  • Fixed a bug in BrentFindExtremum that could cause it to produce NaNs and attempt to evaluate the function at invalid independent variable values when a function evaluated to positive or negative infinity.

  • Attempting to stop the cache thread for a TerrainCacheGroup that was already stopped now throws an exception instead of hanging.

  • Fixed a bug that could rarely cause an exception to be thrown when setting valid ModelPrimitive articulation values.

AGI Components for Java 2011 r8

Breaking Changes

  • Two AxesAlignedConstrained properties, Principle and PrincipleAxis, were spelled incorrectly and have been marked obsolete. Please use Principal (get / set) and PrincipalAxis (get / set) instead.

  • ThreadingPolicyFacet, NumberOfProcessorsThreadingPolicyFacet, and ConstantThreadingPolicyFacet are now obsolete. Please use ThreadingPolicy instead.

  • Removed constructor overloads for BingMapsForEnterpriseImageGlobeOverlay taking an account ID and password, because the account ID and password are no longer required. These constructors were previously marked obsolete.

New Features


  • Improved the numerical stability of the QuarticRealPolynomial.realRoots method.

  • JplDE now uses the equation of the equinoxes to model the longitude of the mean ascending node of the moon for nutation. Previously, it was always 0.0.

  • EarthOrientationParameters now implements IEquatableDefinition.

  • Sgp4Propagator now returns an approximate acceleration which is the same as the acceleration produced by the J4Propagator. Since the SGP4 theory itself is an approximation, and even its position and velocity do not correspond exactly, the fact that the acceleration is not exact is deemed an appropriate approximation. Having acceleration available from the propagator is extremely useful throughout other parts of the system.

  • AGI Components now consistently honors the ThreadingPolicy.ThreadSource (get / set) property when executing parallelizable operations in multiple threads.

Bug Fixes

  • Fixed a bug in PointPropagationParameter that could cause isSameDefinition to erroneously return true.

  • Fixed a bug in StkEphemerisFile and StkAttitudeFile that caused them to generate incorrect results when working in a non-standard reference frame or set of axes.

  • Fixed a bug where a Signal created with a NoiseTemperature (get) of 0.0 and a NoiseBandwidth (get) of positive or negative infinity would end up with a NoisePower (get) of NaN instead of 0.0.

  • Fixed a bug in EllipsoidSurfaceCurve that could cause EllipsoidGridRegions to produce grid points far outside the desired region.

  • Fixed a bug that prevented markers in KML documents in Insight3D from working with the newest NVidia GPU drivers and when running on certain other GPUs.

  • Fixed a bug where Insight3D would crash in situations with multiple AWT EventQueues running when native resources were cleaned up by finalizers and the finalization thread chose the wrong EventQueue thread. In particular, this could happen in a Java applet.

AGI Components for Java 2011 r7

Breaking Changes

New Features


  • LinkInstantaneous and LinkSpeedOfLight now have Name (get / set) properties.

  • In Matrix3By3, the associated reordering of the eigenvectors to produce the proper sorting of the eigenvalues in the eigen decomposition of a symmetric matrix is now performed in such a manner as to preserve the "right-handedness" and rotational characteristic of the underlying Schur decomposition.

  • Improved performance and reduced memory requirements when writing an StkEphemerisFile that contains covariance information.

  • Due to a new license agreement between AGI and Microsoft, BingMapsForEnterpriseImageGlobeOverlay no longer shows an evaluation banner when not using a licensed account. All Insight3D applications can now use imagery from the Microsoft Bing Maps public servers free of charge.

Bug Fixes

  • TwoLineElementSet.toTleString now throws an exception when the values of the properties cannot be represented as a TLE string. Previously, it would generate an invalid TLE.

  • Starting in AGI Components 2011 r4, EndianBitConverter would throw different exceptions depending on whether the desired endianness matched the system. This regression has been fixed, and the exceptions thrown by EndianBitConverter once again match those thrown by the standard bit converter.

  • Fixed an issue with Sgp4Propagator.estimateElements which would cause a matrix to become singular for some orbits.

  • Sgp4Propagator.estimateElements now produces results for MeanMotionDot (get) for epochs that do not coincide with the initial ephemeris point of the fit data.

  • Fixed a bug in UsgsDigitalElevationModel where numbers expressed in Fortran scientific notation were not parsed correctly, leading to a FormatException.

AGI Components for Java 2011 r6

Breaking Changes

New Features


Bug Fixes

  • Fixed a bug where the ParameterizedPoint.checkForSameDefinition method did not examine the ReferenceFrame (get / set) property.

  • Fixed a bug where the ParameterizedVector.checkForSameDefinition method did not examine the DefinedInAxes (get / set) property.

  • Fixed a bug where the ScalarDotProduct.checkForSameDefinition method mistakenly returned true when comparing scalars representing "vectorA 'dot' vectorB" and "vectorB 'dot' vectorA". While the values are likely to be the same, the definitions should be considered different.

  • JplDEFile now uses BarycentricDynamicalTime (get) as opposed to TerrestrialTime (get), as is stipulated by JPL.

  • Fixed a bug in Insight3D that caused it to crash at startup when run on a Linux system under WINE. Insight3D is still not officially supported on non-Windows platforms.

  • Fixed a bug in Insight3D that could cause textures on MDL models to disappear under some circumstances.

AGI Components for Java 2011 r5

Breaking Changes

  • VectorDotProduct is now obsolete. Use ScalarDotProduct instead.

  • Parameter evaluators now throw an exception if they are evaluated without first being parameterized. Previously, they returned a default value.

  • TrackingTypeArchiverCollection.addPrimitive has been removed. A new addEnumeration method is provided to register an enumeration type for default archiving. Any other type should use the add method and pass a custom archiver class.

  • Constructors for BingMapsForEnterpriseImageGlobeOverlay that take an account ID and password are now obsolete because Microsoft is discontinuing support for Token Service authentication on March 30, 2012. Instead, use the new constructors that take an application ID and utilize the Key Service.

New Features


  • Added the ScaleByInverse (get / set) property to VectorScaled in order to make it more convenient to scale by the reciprocal of a scalar.

  • Evaluating many Scalars and Vectors without derivatives is now slightly more efficient.

Bug Fixes

  • Fixed a bug where parameters in a parameterized evaluator sometimes returned false from their IsTimeVarying (get) property, leading to improper caching of their value.

  • Fixed a bug where TerrainAlongLine would report an obscured view if the one of the points was very slightly below the terrain surface. It is common to end up placing objects very slightly below terrain when attempting to put them on terrain, due to floating point rounding.

  • Fixed a bug in PointVectorToPoint that caused an exception when comparing it to another point of a different type.

  • DateMotionCollection1<T>.addRange now properly sets the Order (get) property when invoked on an empty collection.

  • When using ServiceProviderDisplay, completely static models would not appear until the initial update call, instead of appearing immediately after the call to applyChanges.

  • Fixed several memory leaks in Insight3D.

  • Fixed an exception that could occur in WebMapServiceCachedImageGlobeOverlay.

AGI Components for Java 2011 r4

Breaking Changes

New Features


  • Improved the performance of AGIProcessedDataTerrain.

  • Improved the performance of AGIWorldTerrain.

  • ThreadedCalculation now installs a ConstantThreadingPolicyFacet specifying one thread in each thread that is used to do the computation. This ensures that parallelizable computations invoked within the thread are not themselves parallelized. As a result, the number of threads is closer to the number of cores in common use-cases, which improves performance by reducing context switch overhead. For example, when splitting a large coverage grid among multiple threads, the individual access computations that are performed for each grid point will not themselves be multithreaded.

  • Delayed transformation of CovarianceData (get / set) when reading a StkEphemerisFile until the covariance data is accessed.

Bug Fixes

  • Fixed a bug where a ScreenOverlay would not honor its parent's ClipToParent (get / set) status when determining the parent's bounding rectangle.

  • Fixed a bug that could lead to an exception when PerItemPickingEnabled (get / set) was set to true on a primitive with an empty collection of batch items.

  • Fixed a bug where ServiceProviderDisplay showed graphics for points, markers, links, and text when the DisplayParameters.Display (get / set) property was set to a constant value of false.

  • Fixed a bug that could cause some tiles of irregular, high-resolution PDTT files to not be rendered.

  • Fixed a bug that caused textures on MDL models to disappear when rendered in the same view as a TextBatchPrimitive.

  • Fixed a bug that prevented evaluation of AGIWorldTerrain heights very close to -180 degrees longitude or 90 degrees latitude.

  • Fixed a bug that caused AGIProcessedDataTerrain to incorrectly return heights of 0.0 for some regions of irregular, high-resolution terrain.

  • Fixed several bugs in the Insight3D Applet example. The location of the VC90 runtime DLLs inside the native JAR was corrected, and the applet's destroy method was adjusted to avoid a threading crash.

AGI Components for Java 2011 r3

Bug Fixes

  • Fixed a bug that could lead to an access violation when using imagery overlays in Insight3D. This bug was introduced in AGI Components 2011 r2.

AGI Components for Java 2011 r2

Breaking Changes

New Features


  • Insight3D terrain and imagery now use per-pixel lighting on supported hardware, which improves visual quality.

  • Orbital element types now consistently throw an IllegalStateException describing the issue when initialized from a rectilinear orbit. Previously, some types would throw a ArithmeticException.

Bug Fixes

AGI Components for Java 2011 r1

New Features

  • Added OrderedCompositePrimitive for z-ordering primitives on the surface. See the Ordered Composite Primitive topic for more information.

  • Added NetworkContext, which controls whether the Java networking libraries should be used when acquiring resources from URIs in Insight3D. For instance, you can now set a proxy, set credentials, or configure SSL certificate policies using the built-in Java APIs.


Bug Fixes

  • Fixed a bug in DoubleFunctionExtrema, DurationFunctionExtrema, and JulianDateFunctionExtrema that could lead to an exception when evaluating over an extremely short interval.

  • Fixed a bug in DoubleFunctionExtrema that could cause it to report incorrect extrema.

  • Fixed a bug in DoubleFunctionThreshold that could cause it to report incorrect threshold crossings.

  • Fixed a bug in CoverageGridResult where the boundary vertices, if set beforehand, would become null after calling applyFilter.

  • Fixed a bug that incorrectly caused multiple items to be picked on older video cards or over Remote Desktop when TextBatchPrimitive.PerItemPickingEnabled (get / set) was set.

  • Fixed rendering problems with PathPrimitive on older (OpenGL 1.1) graphics cards.

  • Fixed a bug where KML network links would fail to refresh in certain configurations.

  • Fixed a bug in KmlNetworkLink that could lead to an exception when using query strings to request data.

  • Fixed a bug that could lead to an exception when visualizing a link using ServiceProviderDisplay.

AGI Components for Java 2010 r11

New Features

  • Insight3D can now load and display KML documents and provide basic access to the underlying document object model (DOM). See the KML topic for more information. This functionality was previously only available in the .NET version of AGI Components.

  • Added PathPrimitive, which is similar to PolylinePrimitive, except it allows efficient addition and removal of points from the front or back of the polyline. See the Path Primitive topic.

  • Added PacketAcquirementYieldTime (get / set), PacketBufferLimit (get / set), and AllowFrameDrop (get / set) properties to VideoStream, to provide more customization for video stream buffering and performance.

  • Added PrimitiveFactory to simplify creating primitives for common use cases such as polygons, circles, and latitude-longitude grids.


  • Improved accuracy when calculating Earth Rotation Angle, particularly at times far removed from J2000.

  • AzimuthElevationMask now throws a more informative exception when its ElevationMasks are incorrectly defined.

  • Improvements to ProjectedRasterOverlay. See the Raster and Projection Streams topic for more information. Improvements include:

    • Projection onto models.

    • Visualization of the far plane.

    • Projection borders.

    • Color filtering.

    • Colors and translucency of various aspects of the visualization can now be customized.

    • Support for Rasters with alpha channels.

    • Access to the direction vectors that define the projection's frustum.

    • ProjectedRasterOverlay now behaves more like a standard GlobeImageOverlay when added to the CentralBodyGraphics.Imagery (get) collection, including support for Z-ordering.

    • Visual properties can now be set dynamically while visualization is occurring.

    • Other fixes and performance enhancements.

  • PrimitiveManager and CompositePrimitive now implement Iterable<Primitive>

Bug Fixes

AGI Components for Java 2010 r10

Breaking Changes

  • The StartTime property and the propagate method of RoutePropagator were marked obsolete. Instead, use the propagateFromTime method.

  • EarthOrientationParameters.getUt1MinusUtc was marked obsolete. Use the equivalent computeUt1MinusUtc method instead.

New Features


Bug Fixes

  • Fixed a bug that prevented the AntiAliasing (get / set) property from working as expected.

  • Fixed an issue with AxesFromBankAngle that could cause a discontinuity when several tight turns were performed close together.

  • Fixed a bug in EvaluatorGroup that could cause top-level evaluators to not be cached even when retrieved multiple times.

  • Fixed an issue with StandardTransitionProfile where the profile was not using the user's SpeedReference (get) in all cases. Also, in the event that the profile attempts a near-vertical path, the profile will now try to reconfigure the path to create a more flat profile to avoid an error where there is a discontinuity in speed in the middle of the profile.

  • Fixed a bug that could cause ModelPrimitives using some MDL models to be lit incorrectly.

  • Fixed a bug that caused ModelVisualizer to try to evaluate an object at the wrong time, leading to an exception.

AGI Components for Java 2010 r9

Breaking Changes

  • AccessQueryOptions is now obsolete. Please specify the time observer directly rather than wrapping it in AccessQueryOptions.

  • Ellipsoid.surfacePoint is now obsolete. Please use surfacePosition instead.

  • TerrainProvider.Cache has been removed. It was previously marked obsolete.

  • The SetPositionRadius, SetPositionAzimuthElevation, TryCartographicToWindowCoordinate, CartographicToWindowCoordinate, TryWindowCoordinateToCartographic, WindowCoordinateToCartographic, ViewExtent (obsolete overloads only), and ViewSphere methods of Camera were removed. They were previously marked obsolete.

New Features

  • A new library, Platform Graphics, has been added that makes it easy and flexible to visualize Platforms, links, and other IServiceProviders, as well as the results of analyzing these objects, in Insight3D. For more information, see the Visualizing Platforms topic. This library was previously only available in the .NET version of AGI Components.

  • A new library, Tracking Graphics, has been added that makes it easy to visualize Tracking Library entities in Insight3D. See the Visualization with Insight3D® topic for more information. This library was previously only available in the .NET version of AGI Components.

  • Added the AGIProcessedTerrainWriter class to enable conversion of various terrain formats to PDTT so that they can be visualized with Insight3D. This class was previously only available in the .NET version of AGI Components.

  • Added support for rendering imagery from a WMS-C server to the Insight3D globe via the WebMapServiceCachedImageGlobeOverlay class. This class was previously only available in the .NET version of AGI Components.

  • Added startInThreadPoolThread and startInNewThread methods to start a MessageQueue with explicit control over what type of thread to use. startInNewThread optionally allows you to specify the name of the thread. The existing startInAnotherThread method uses either a thread pool thread or a newly created thread depending on the state of a new property: ThreadingPolicyFacet.UseThreadPool, which is true by default to maintain the previous behavior.

  • Added a selectTransactionally method to TransactionContext to allow code to be executed transactionally and a result to be returned.

  • Added a AntiAliasing (get / set) property to SceneManager to allow control over the use of multisample anti-aliasing (MSAA) to render scenes.

  • Added a Rendering (add / remove) event to SceneManager that is raised when any Scene is rendered.


  • Added default constructors for CentralBodySurfaceCurve and CentralBodySurfaceRegion, and made the CentralBodySurfaceCurve.SurfaceCurve (get / set) and CentralBodySurfaceRegion.SurfaceRegion (get / set) properties settable.

  • Improved the algorithm used by BrentFindRoot to converge more quickly in most cases and to more closely match Brent's published algorithm.

  • TimeGenerator now generates time in the nearest arithmetic-safe time standard (such as TAI) when given times in a non-safe standard (such as UTC).

  • Access Queries now accept a null time observer when all links in the query are LinkInstantaneous. Previously, an exception was thrown even though the time observer did not affect the results.

Bug Fixes

AGI Components for Java 2010 r8

Breaking Changes

  • AGI Components now throws ArgumentNullException and ArgumentOutOfRangeException in many cases where it previously threw NullPointerException and IndexOutOfBoundsException, respectively. These new exception types are subclasses of the more appropriate IllegalArgumentException and improve consistency with AGI Components for .NET.

  • Classes that derive from CentralBody must now implement the PrincipalFrame (get / set) property and the synchronizeOrigins method.

  • The StkEphemerisFile class now only provides a valid interpolator for ephemeris files with Lagrange and Hermite interpolation methods. For GreatArc and other methods, users must construct an interpolator manually. Previous versions returned a partially-constructed but unusable interpolator for unsupported interpolation methods.

  • IsTimeVarying (get) is now abstract on evaluator classes. If you are implementing your own evaluators, you will need to override this property.

New Features

  • This release includes Insight3D®, a flexible and high-performance 3D visualization component. It is a technically accurate 3D globe with excellent support for visualizing time-dynamic geometry. For more information, see the Visualization with Insight3D® topic in the documentation.

  • Sgp4Propagator can now estimate Sgp4Elements based on ephemeris data. The results of the estimation can be used to produce a TwoLineElementSet.

  • Added a new class, CentralBodyInertialAxes, which represents an inertial axes for a central body that is consistent with STK Desktop's default central body inertial axes.


  • Sgp4Propagator has been updated to reflect recent work by CSSI and to match the SGP4 propagator in STK 9.

  • TerrainAlongLine.computeTerrainIntersection now only returns the starting point if it lies exactly on the terrain surface and the direction of interest is toward the surface.

  • Messages can now be posted to a MessageQueue even after it has been terminated. The messages will be processed if and when the queue is restarted.

  • Improved BrentFindExtremum performance by using Golden section instead of bisection when one end of the bracketing interval remains stationary over two iterations.

  • Access Queries have been given a more prominent place in the documentation and examples. We recommend that you use them instead of AccessComputation.

Bug Fixes

  • All evaluators now correctly implement IsTimeVarying (get) when they do not vary with time. Previously, many evaluators simply returned true, which did not cause incorrect results but could negatively impact performance in certain cases.

  • Fixed an issue in HeightTransitionProcedure that would cause a discontinuity for some cases when exiting a left-handed spiral.

  • Fixed an issue where the speed reported by the StandardTransitionProfile segment was zero when extrapolating before the "Start" or after the "Stop" times of the route. This fixes an issue where AxesFromBankAngle threw an exception when evaluated slightly before the start or slightly after the stop times.

  • Fixed an issue in TimeIntervalFinder that would cause LocalMaximum or LocalMinimum events at the function threshold or within the tolerance of the function threshold to incorrectly start or end an interval.

  • Fixed an issue where AccessQuery evaluation at a single date could return inconsistent results if an interval of consideration had been previously analyzed.

  • Fixed an issue in TerrainAlongLine.computeElevationAngleAboveTerrain where the incorrect end point could be used for part of the computation.

AGI Components for Java 2010 r7

Breaking Changes

New Features


AGI Components for Java 2010 r6

Breaking Changes

New Features


Bug Fixes

AGI Components for Java 2010 r5

New Features

  • Introducing the Route Design Library, which provides simple ways to represent and analyze routes for vehicles, such as aircraft, ground vehicles, and ships, operating near the surface of the Earth or other central body. For more information on the Route Design Library, see the Route Design topic.

  • Added the ability to obtain the gradient, hessian, and surface normals at a point in a TerrainProvider, by calling the getGradient, getHessian, and getNormal methods. The gradient can be used to compute a directional derivative of height along the surface. First and second partial derivatives are also now available, by calling the getFirstPartials and getSecondPartials methods.

  • Added preloadExtent and unloadExtent methods to TerrainProvider. preloadExtent is used to load the terrain data for a specified region into the terrain cache. unloadExtent unloads preloaded data from the cache. See the Terrain topic for more information.


AGI Components for Java 2010 r4

Breaking Changes

  • LinearApproximation now throws an exception when given the same value for x0 and x1. Previously, it would return the average of y0 and y1.


  • RecurringTaskScheduler.removeTask now returns the final set of performance metrics for the removed task.

  • Tracking Library now provides default archivers for all AGI Components relevant value types and enumerations.

  • Implemented an improved algorithm in CubicRealPolynomial with better numerical properties.

  • Default-constructed GregorianDate and YearMonthDay objects now represent valid times and will stably convert to and from JulianDate.

Bug Fixes

  • Fixed a bug that could cause an ArithmeticException in certain circumstances when computing sensor projections.

AGI Components for Java 2010 r3

Breaking Changes

  • LagrangePolynomialApproximation now uses additional derivatives in the input data, if available. Previously, only the input coordinate values were used to compute the Lagrange polynomial. Higher-order output, if requested, was computed from that polynomial. Now, the Lagrange polynomial for a given output order is computed from the input data with the highest-order less than or equal to the output order. For example, if both position and velocity information are provided as source data for interpolation but position, velocity, and acceleration are requested as output, the position and velocity information are interpolated independently and the derivatives of the velocity interpolating polynomials are used to compute the acceleration.

  • LinearApproximation now linearly interpolates across all given orders of input. If higher order outputs are requested, the output order one higher than the highest input order is the constant slope for that segment, and any higher outputs are zero. Previously, input derivatives were ignored, the first derivative on output was constant, and higher derivatives were zero.

  • InterpolationAlgorithm now has an additional method, getRequiredDataPoints, which takes a degree and an input order and returns the number of independent variables that must be interpolated over in order to attain the specified degree of polynomial approximation.

New Features

  • LagrangePolynomialApproximation can now compute any requested output order. In previous releases, interpolated values only up to the second derivative could be computed.

  • HermitePolynomialApproximation can now use any number of input derivatives (including zero), and return any number of output derivatives.


Bug Fixes

  • When converting a JulianDate to a Joda DateTime, the number of milliseconds was computed by truncation instead of by rounding. The conversion now yields the closest time that is representable by Joda.

  • Fixed problems loading StkSatelliteDatabase, StkFacilityDatabase, StkCityDatabase, and GTOPO30Terrain from directories containing periods in the name.

  • Fixed a bug in HermitePolynomialApproximation that caused it to interpolate with a much higher degree than specified when used with large data sets, resulting in extremely slow performance.

  • Fixed a bug in LinearApproximation that caused it to throw an exception when the requested output order was larger than the input order. Now it returns the slope of the line for the output order one higher than the input order and zero for any additional output orders.

AGI Components for Java 2010 r2

Breaking Changes

New Features

  • Introducing Tracking Library, which seamlessly integrates the processing, and analysis of dynamically acquired data in AGI Components. See the Tracking topic for more information.

  • Added the Ellipsoid.apparentAngularSize method.

  • The maximum number of items in a MessageQueue can now be specified with the MaximumQueueLength (get / set) property.


Bug Fixes

  • Fixed several bugs related to reading and writing of data files in non-English locales.

  • Terrain readers now work reliably with streams that have read methods that can return fewer bytes than requested.

  • Fixed a race in RasterTerrainCache that could cause a NullPointerException in the TerrainCacheGroup thread.

AGI Components for Java 2010 r1

Breaking Changes

New Features

  • YearMonthDay can now be constructed from a year and a day-of-the-year.

  • Added EndianBitConverter to enable conversion between values in fixed byte order formats.


  • Numerous improvements to the examples and documentation.

  • The performance of SensorVolumeConstraint has been improved.

  • TimeIntervalCollection now implements List<TimeInterval>.

  • Improved numerical results for finding roots of a QuadraticRealPolynomial when the linear term is zero and the constant term is small in relation to the quadratic term.

  • GridTimeSampledValues.computeData now creates grid points and figure of merit scalars in multiple threads simultaneously according to the ThreadingPolicyFacet.

  • AccessSampling now ensures that access constraint functions are sampled at least three times over each interval. Previously, small intervals might be sampled only twice and access events could be missed.

Bug Fixes

  • Fixed a bug in DoubleFunctionThreshold and JulianDateFunctionThreshold that could cause them to throw an exception claiming that the "threshold crossings of the function are not consistent" when two crossings of the threshold are close together.

  • Fixed a bug that caused AccessSampling to ignore the AccessSampling.TrendingStep property if it was smaller than the AccessSampling.MinimumStep.

AGI Components 2009 r8

The first release of AGI Components for Java!