/// <summary> /// Показывает, видно ли когда-нибудь звезду. /// </summary> /// <param name="s">Звезда.</param> /// <param name="gcs">Координаты наблюдателя.</param> /// <returns>Потенциальная видимость звезды.</returns> public static bool IsEverVisible(Star s, GeographicCS gcs) { // Широта наблюдателя. int degree = gcs.Latitude.Degrees; // Если он на экваторе, все звёзды когда-нибудь будут видны. if (degree == 0) { return(true); } // Координаты ближайшего полюса. VerticalCord vertical = (degree > 0) ? VerticalCord.GetMax() : VerticalCord.GetMin(); // Минимальная склонение видимости звёзд. VerticalCord minLatitude = (vertical - gcs.Latitude) * (-1); return((degree > 0) ? minLatitude <s.Location.Declination : minLatitude> s.Location.Declination); }
/// <summary> /// Показывает, постоянно линаходится звезда над горизонтом. /// </summary> /// <param name="s">Звезда</param> /// <param name="gcs">Земные координаты наблюдателя</param> /// <returns>Постоянство нахождения над горизонтом</returns> public static bool IsAlwaysVisible(Star s, GeographicCS gcs) { // Широта наблюдателя. int degree = gcs.Latitude.Degrees; // Если он на экваторе, нет незаходящих звёзд. if (degree == 0) { return(false); } // Координаты ближайшего полюса. VerticalCord vertical = (degree > 0) ? VerticalCord.GetMax() : VerticalCord.GetMin(); // Минимальное склонение незаходящих звёзд. VerticalCord minLatitude = vertical - gcs.Latitude; return((degree > 0) ? minLatitude <s.Location.Declination : minLatitude> s.Location.Declination); }