private void Awake() { m_Instance = this; m_CurrentTime = DateTime.Now; m_VirtualTime = m_CurrentTime; m_CurrentJulianDate = PlanetPositionUtility.GetJulianDate(m_CurrentTime); m_VirtualJulianDate = m_CurrentJulianDate; }
public virtual CelestialVector3 CalculatePosition(double julianDate) { double radiusVector; double eclipticalLongitude; double eclipticLatitude; GetHeliocentricEclipticalCoordinates(julianDate, out radiusVector, out eclipticalLongitude, out eclipticLatitude); return(PlanetPositionUtility.GetPositionFromHeliocentricEclipticalCoordinates(radiusVector, eclipticalLongitude, eclipticLatitude)); }
public override List <Vector3> GetOrbit(double currentJulianDate, double resolution) { double orbitalPeriodInDays = GetOrbitalPeriod(); double julianDaysPerPosition = (orbitalPeriodInDays / resolution); List <Vector3> orbit = new List <Vector3>(); // Start at 1/2 orbit in the past double julianDate = currentJulianDate - (orbitalPeriodInDays * 0.5); double radiusVector; double eclipticalLongitude; double eclipticLatitude; GetHeliocentricEclipticalCoordinates(julianDate, out radiusVector, out eclipticalLongitude, out eclipticLatitude); // In case a planet makes it in here without an orbit, abort if (radiusVector != 0.0f) { double initialRotation = eclipticalLongitude; double difference = 0.0; bool closing = false; while (true) { double newDifference = Math.Abs(initialRotation - eclipticalLongitude); if (closing) { if (newDifference > difference) { break; } } else if (newDifference < difference) { closing = true; } difference = newDifference; CelestialVector3 position = PlanetPositionUtility.GetPositionFromHeliocentricEclipticalCoordinates(radiusVector, eclipticalLongitude, eclipticLatitude); orbit.Add((Vector3)(position / GlobalConstants.CelestialUnit)); julianDate += julianDaysPerPosition; GetHeliocentricEclipticalCoordinates(julianDate, out radiusVector, out eclipticalLongitude, out eclipticLatitude); } } return(orbit); }
private void Update() { if (m_Increasing || m_Decreasing) { m_PressDuration += Time.deltaTime; // Treat press like a single click until the button is held more than a certain duration if (m_PressDuration > 0.5f) { m_CurrentTimeIncrement += (long)(100 * Time.deltaTime); if (m_CurrentTimeIncrement > m_MaxCurrentTimeIncrement) { m_CurrentTimeIncrement = m_MaxCurrentTimeIncrement; } long timeIncrement = m_TimeIncrementUnit * (m_CurrentTimeIncrement * m_CurrentTimeIncrement); m_VirtualTime = new DateTime(m_VirtualTime.Ticks + ((m_Increasing) ? timeIncrement : -timeIncrement)); m_VirtualJulianDate = PlanetPositionUtility.GetJulianDate(m_VirtualTime); } } m_CurrentTime = DateTime.Now; m_CurrentJulianDate = PlanetPositionUtility.GetJulianDate(m_CurrentTime); if (m_CurrentJulianDateText != null) { m_CurrentJulianDateText.text = m_CurrentJulianDate.ToString(".00000"); } if (m_CurrentTimeText != null) { m_CurrentTimeText.text = GetTimeString(m_CurrentTime); } if (m_Synced) { m_VirtualJulianDate = m_CurrentJulianDate; m_VirtualTime = m_CurrentTime; } if (m_VirtualJulianDateText != null) { m_VirtualJulianDateText.text = m_VirtualJulianDate.ToString(".00000"); } if (m_VirtualTimeText != null) { m_VirtualTimeText.text = GetTimeString(m_VirtualTime); } }
public override void GetHeliocentricEclipticalCoordinates(double julianDate, out double radiusVector, out double eclipticalLongitude, out double eclipticLatitude) { PlanetPositionUtility.GetLunaHeliocentricEclipticalCoordinates(julianDate, out radiusVector, out eclipticalLongitude, out eclipticLatitude); }