All Versions
Latest Version
Avg Release Cycle
26 days
Latest Release
731 days ago

Changelog History
Page 1

  • v2.9.4.1 Changes

    December 03, 2020
    • πŸ›  Fixes UTM parser issue that can occur when Easting and Northing string length are not consistent.
  • v2.9.3.1 Changes

    December 02, 2020
    • πŸ›  Fixes UPS parser issue that can occur when Easting and Northing string length are not consistent.
  • v2.9.2.1 Changes

    December 01, 2020

    πŸ›  -Fixes issue with subsolar/sublunar points jumping to wrong position during tracking. Only effects new features in v2.9.#.#.

  • v2.9.1.3 Changes

    November 30, 2020
    • πŸ›  Fixes critical parsing bug with MGRS coordinates at identifiers MN and ME Issue 171.
    • πŸ›  Fixes float point rounding bug causing seconds and decimal minutes to display "60" instead of "0" Issue 170.
    • πŸ“¦ Prepares library for optional extension packages coming soon (magnetic declination, NodaTime handles).
    • βž• Adds ability to get solar and lunar coordinates, useful for creating over Earth tracks Issue 164.

      //Accessible through CoordinateCoordinate c = new Coordinate(45, 45, new DateTime(2020, 11, 19, 12, 30, 0));Console.WriteLine(c.CelestialInfo.LunarCoordinates.SublunarLatitude);//-24.0341Console.WriteLine(c.CelestialInfo.LunarCoordinates.SublunarLongitude);//51.6318//Static Methodlc = Celestial.Get_Lunar_Coordinate(new DateTime(2020, 11, 19, 12, 30, 0));Console.WriteLine(lc.SublunarLatitude);//-24.0341Console.WriteLine(lc.SublunarLongitude);//51.6318

  • v2.8.1.1 Changes

    October 14, 2020
    • βž• Adds Condition property to AltitudeEvents class, allowing users to determine the sun's rise/set condition for a date at specified altitudes.


    Coordinate c = new Coordinate(47.40615, -122.24517, new DateTime(2020, 8, 11));//Determine times the sun passes through 57.8 degrees.var t = Celestial.Get\_Time\_at\_Solar\_Altitude(c, 57.8);t.Rising; //Nullt.Setting; //Null;//Should show DownAllDay as the sun never reaches a height of 57.8 degree at the specified location and date.t.Condition; //DownAllDay
    • βž• Adds ability to output UTM/MGRS rounded and centimeter strings.

    UTM/MGRS coordinates are truncated per standard. Though this makes sense in terms of operating in those systems, it can have adverse impacts when converting back and forth between UTM/MGRS and Lat/Long as precision loss will occur. Rounded and Centimeter versions of these systems are also available for output. These values may be more reliable if converting back and forth between UTM/MGRS and Lat/Long systems.


    Coordinate c = new Coordinate(40.57682, -70.75678);c.MGRS.ToRoundedString(); // Outputs 19T CE 51308 93265c.MGRS.ToCentimterString(); // Outputs 19T CE 51307.55707 93264.83597
    • πŸ‘Œ Improves parsers.

    πŸ“œ Uneven spacing should no longer effect parsers: "N45 E 45" will now parse.

    βž• Adds CoordinateSharp.Formatters namespace containing useful mathematical functions to convert things such as radians, degrees, HMS, etc.

    βœ… Completes unit tests port.

  • v2.7.3.2 Changes

    September 01, 2020
    • πŸ‘Œ Improves MGRS_GridBox Marching/Scanning Algorithm.
    • πŸ›  Various XML Fixes.
  • v2.7.2.1 Changes

    August 17, 2020
    • πŸ”¦ Exposes solar noon property allowing users to obtain solar noon data points.
    • βž• Adds ability to get time of day from a provided sun altitude and position.
    • βž• Adds ability to get MGRS square identifier corner points for specified MGRS coordinate.
    • πŸ“œ Parser/XML improvements.

    Solar Noon Example

    var c = new Coordinate(45.2,-112.4);c.CelestialInfo.SolarNoon;

    Getting Time of Day from Position, Date and Solar Altitude

    //lat, long, date, altitude in degrees, UTC offset (if desired).AltitudeEvents aev = Celestial.Get\_Time\_at\_Solar\_Altitude(47.4, -122.6, new DateTime(2020,8,11), 41.6, -7);//Altitude point crossed time during solar risingif(aev.Rising.HasValue) { aev.Rising; //8/11/2020 10:22:12 AM }//Altitude point crossed time during solar settingif(aev.Setting.HasValue) { aev.Setting; //8/11/2020 4:11:33 PM

    Obstaining MGRS 100km Square Points/Boundaries

    //Create MGRS Coordinate at a Grid Zone Junction Point (partial square)MilitaryGridReferenceSystem mgrs = new MilitaryGridReferenceSystem("N", 21, "SA", 66037, 61982);//Set EagerLoad to MGRS only for efficiency//Only applicable if pulling Lat/Long Coordinate values from box cornersEagerLoad el = new EagerLoad(EagerLoadType.UTM\_MGRS);var gb = mgrs.Get\_Box\_Boundaries(el);//Check if box is Valid first (if not corners will be null)if(!gb.IsBoxValid){return;}//Get Bottom Left MGRS Objectgb.Bottom\_Left\_MGRS\_Point; //21N SA 66022 00000//Get Bottom Left Corodinate Object//Will throw exception if MGRS is not\_Left\_Coordinate\_Point; //N 0ΒΊ 0' 0" W 59ΒΊ 59' 59.982"
  • v2.7.1.1 Changes

    July 13, 2020

    -Adds ability to get Equinox and Solstice information Issue 144.
    🐎 -Adds Solstice/Equinox eager loading extension specification (to turn off new feature and save on performance).
    πŸ“œ -Fixes bug with "TryParse" throwing exceptions under certain conditions Issue 146.
    πŸ›  -Fixes .NET Core 3.X specific round-tripping issue Issue 147.
    πŸ›  -Fixes MGRS eager loading specification issues Issue 148 and Issue 150.

    Solstice Example

    Coordinate c = new Coordinate(45,112, new DateTime(2020,3,6));Console.WriteLine(c.CelestialInfo.Solstices.Summer);//20-Jun-2020 21:44 (UTC)
  • v2.6.2.1 Changes

    June 19, 2020
  • v2.6.1.1 Changes

    June 01, 2020

    -Adds a strong named key to the assembly allowing for use of the assembly in strong named applications.