private void AltUnitsChoice_SelectedIndexChanged(object sender, EventArgs e) { ResetFailure(); ComboBox Selector = (ComboBox)sender; AltUnits NewUnits = DecideAltUnits((string)Selector.SelectedItem); try { if (CurrentAltUnits == NewUnits) { return; } if (!RwyElevationInput.Text.Equals(string.Empty)) { double CurrElev = double.Parse(RwyElevationInput.Text); if (CurrentAltUnits == AltUnits.FEET) { RwyElevationInput.Text = Math.Round(InputCleaner.FeetToMeters(CurrElev)).ToString(); } else { RwyElevationInput.Text = Math.Round(InputCleaner.MetersToFeet(CurrElev)).ToString(); } } } catch { FailedUnitsConversion(); } CurrentAltUnits = NewUnits; }
public MainWindow() { InitializeComponent(); CurrentAltUnits = AltUnits.FEET; CurrentUnits = PrimaryUnits.METRIC; this.AltUnitsChoice.SelectedIndex = 0; this.WeightUnitsChoice.SelectedIndex = 0; this.RwyCondSel.SelectedIndex = 0; this.FlapsSettingSel.SelectedIndex = 0; }
public static double GetMeters(double distance, AltUnits units) { double scaleFactor = 1.0; switch (units) { case AltUnits.Meters: scaleFactor = 1.0; break; case AltUnits.Feet: scaleFactor = 1.0 / 3.2808399; break; case AltUnits.Inches: scaleFactor = (1.0 / 3.2808399) / 12; break; case AltUnits.Miles: scaleFactor = 1609.344; break; case AltUnits.Kilometers: scaleFactor = 1000; break; case AltUnits.AstronomicalUnits: scaleFactor = UiTools.KilometersPerAu * 1000; break; case AltUnits.LightYears: scaleFactor = UiTools.AuPerLightYear * UiTools.KilometersPerAu * 1000; break; case AltUnits.Parsecs: scaleFactor = UiTools.AuPerParsec * UiTools.KilometersPerAu * 1000; break; case AltUnits.MegaParsecs: scaleFactor = UiTools.AuPerParsec * UiTools.KilometersPerAu * 1000 * 1000000; break; case AltUnits.Custom: scaleFactor = 1; break; default: break; } return(distance * scaleFactor); }
public double GetScaleFactor(AltUnits AltUnit, double custom) { double factor = 1; switch (AltUnit) { case AltUnits.Meters: factor = 1; break; case AltUnits.Feet: factor = 1 * 0.3048; break; case AltUnits.Inches: factor = (1.0 / 12.0) * 0.3048; break; case AltUnits.Miles: factor = 5280 * 0.3048; break; case AltUnits.Kilometers: factor = 1000; break; case AltUnits.AstronomicalUnits: factor = 1000 * UiTools.KilometersPerAu; break; case AltUnits.LightYears: factor = 1000 * UiTools.KilometersPerAu * UiTools.AuPerLightYear; break; case AltUnits.Parsecs: factor = 1000 * UiTools.KilometersPerAu * UiTools.AuPerParsec; break; case AltUnits.MegaParsecs: factor = 1000 * UiTools.KilometersPerAu * UiTools.AuPerParsec * 1000000; break; case AltUnits.Custom: factor = custom; break; default: break; } return(factor); }
public virtual void InitializeFromXml(XmlNode node) { Name = node.Attributes.GetNamedItem("Name").Value; Parent = node.Attributes.GetNamedItem("Parent").Value; ReferenceFrameType = (ReferenceFrameTypes)Enums.Parse("ReferenceFrameTypes", node.Attributes.GetNamedItem("ReferenceFrameType").Value); Reference = (ReferenceFrames)Enums.Parse("ReferenceFrames", node.Attributes.GetNamedItem("Reference").Value); ParentsRoationalBase = Boolean.Parse(node.Attributes.GetNamedItem("ParentsRoationalBase").Value); MeanRadius = Double.Parse(node.Attributes.GetNamedItem("MeanRadius").Value); Oblateness = Double.Parse(node.Attributes.GetNamedItem("Oblateness").Value); Heading = Double.Parse(node.Attributes.GetNamedItem("Heading").Value); Pitch = Double.Parse(node.Attributes.GetNamedItem("Pitch").Value); Roll = Double.Parse(node.Attributes.GetNamedItem("Roll").Value); Scale = Double.Parse(node.Attributes.GetNamedItem("Scale").Value); Tilt = Double.Parse(node.Attributes.GetNamedItem("Tilt").Value); Translation = Vector3d.Parse(node.Attributes.GetNamedItem("Translation").Value); if (ReferenceFrameType == ReferenceFrameTypes.FixedSherical) { Lat = Double.Parse(node.Attributes.GetNamedItem("Lat").Value); Lng = Double.Parse(node.Attributes.GetNamedItem("Lng").Value); Altitude = Double.Parse(node.Attributes.GetNamedItem("Altitude").Value); } RotationalPeriod = Double.Parse(node.Attributes.GetNamedItem("RotationalPeriod").Value); ZeroRotationDate = Double.Parse(node.Attributes.GetNamedItem("ZeroRotationDate").Value); RepresentativeColor = Color.Load(node.Attributes.GetNamedItem("RepresentativeColor").Value); ShowAsPoint = Boolean.Parse(node.Attributes.GetNamedItem("ShowAsPoint").Value); if (node.Attributes.GetNamedItem("StationKeeping") != null) { StationKeeping = Boolean.Parse(node.Attributes.GetNamedItem("StationKeeping").Value); } if (ReferenceFrameType == ReferenceFrameTypes.Orbital) { ShowOrbitPath = Boolean.Parse(node.Attributes.GetNamedItem("ShowOrbitPath").Value); SemiMajorAxis = Double.Parse(node.Attributes.GetNamedItem("SemiMajorAxis").Value); SemiMajorAxisUnits = (AltUnits)Enums.Parse("AltUnits", node.Attributes.GetNamedItem("SemiMajorAxisScale").Value); Eccentricity = Double.Parse(node.Attributes.GetNamedItem("Eccentricity").Value); Inclination = Double.Parse(node.Attributes.GetNamedItem("Inclination").Value); ArgumentOfPeriapsis = Double.Parse(node.Attributes.GetNamedItem("ArgumentOfPeriapsis").Value); LongitudeOfAscendingNode = Double.Parse(node.Attributes.GetNamedItem("LongitudeOfAscendingNode").Value); MeanAnomolyAtEpoch = Double.Parse(node.Attributes.GetNamedItem("MeanAnomolyAtEpoch").Value); MeanDailyMotion = Double.Parse(node.Attributes.GetNamedItem("MeanDailyMotion").Value); Epoch = Double.Parse(node.Attributes.GetNamedItem("Epoch").Value); } }
public void FromTLE(string line1, string line2, double gravity) { Epoch = SpaceTimeController.TwoLineDateToJulian(line1.Substr(18, 14)); Eccentricity = double.Parse("0." + line2.Substr(26, 7)); Inclination = double.Parse(line2.Substr(8, 8)); LongitudeOfAscendingNode = double.Parse(line2.Substr(17, 8)); ArgumentOfPeriapsis = double.Parse(line2.Substr(34, 8)); double revs = double.Parse(line2.Substr(52, 11)); MeanAnomolyAtEpoch = double.Parse(line2.Substr(43, 8)); MeanDailyMotion = revs * 360.0; double part = (86400.0 / revs) / (Math.PI * 2.0); SemiMajorAxis = Math.Pow((part * part) * gravity, 1.0 / 3.0); SemiMajorAxisUnits = AltUnits.Meters; }
private void ComputeBtn_Click(object sender, EventArgs e) { ResetFailure(); ResetOutput(); PrimaryUnits Units = DecideUnits((string)WeightUnitsChoice.SelectedValue); AltUnits AltitudeUnits = DecideAltUnits((string)AltUnitsChoice.SelectedValue); FlapsSetting Flaps = DecideFlapsSetting((string)FlapsSettingSel.SelectedValue); LandingSpeedValues BaseValues = new LandingSpeedValues { Units = Units, Flaps = Flaps, }; bool ConvertSuccess = double.TryParse(OATInput.Text, out double OAT); ConvertSuccess &= double.TryParse(WeightInput.Text, out double WeightDouble); if (!ConvertSuccess) { FailedToClean(); return; } BaseValues.OAT = (int)Math.Round(OAT); BaseValues.Weight = (int)Math.Round(WeightDouble); // Compute Landing bool CleanSuccess = InputCleaner.CleanedLandingSpeeds(BaseValues, out LandingSpeedValues CleanedLandingVals); if (!CleanSuccess) { FailedToClean(); return; } LandingComputation LandingComp = new LandingComputation(CleanedLandingVals); if (LandingComp.Failed) { FailedToCompute(); return; } // Display landing data DisplayLandingData(LandingComp.Output); TakeoffSpeedValues TakeOffValues = new TakeoffSpeedValues(); // ALT Units, AntiIce, Runway HDG, Wind HFG, Wind Speed, Elevation, RWY Conditions TakeOffValues.BasicVals = CleanedLandingVals; bool ConvertValsSuccess = double.TryParse(RwyElevationInput.Text, out double RwyElev); ConvertValsSuccess &= double.TryParse(RwyHdgInput.Text, out double RwyHdg); double WindHdg = 0; double WindSpd = 0; try { string[] WindInfo = RwyWindInput.Text.Split('/'); ConvertValsSuccess &= double.TryParse(WindInfo[0], out WindHdg); ConvertValsSuccess &= double.TryParse(WindInfo[1], out WindSpd); } catch { FailedToCleanTO(); return; } if (!ConvertValsSuccess) { FailedToCleanTO(); return; } TakeOffValues.Elevation = (int)Math.Round(RwyElev); TakeOffValues.RunwayHdg = (int)Math.Round(RwyHdg); TakeOffValues.WindHdg = (int)Math.Round(WindHdg); TakeOffValues.WindSpd = (int)Math.Round(WindSpd); TakeOffValues.Conditions = DecideRunwayConditions((string)RwyCondSel.SelectedItem); TakeOffValues.AntiIce = DeIceOnCheckbox.Checked; CleanSuccess = InputCleaner.CleanedTakeoffSpeeds(TakeOffValues, out TakeoffSpeedValues CleanedTakeOffVals); if (!CleanSuccess) { FailedTakeoffComputation(); return; } TakeoffComputation TakeoffComp = new TakeoffComputation(CleanedTakeOffVals); if (TakeoffComp.Failed) { FailedTakeoffComputation(); return; } // Display Takeoff Data DisplayTakeoffData(TakeoffComp.Output); Success(); }
//public virtual void SaveToXml(System.Xml.XmlTextWriter xmlWriter) //{ // xmlWriter.WriteStartElement("ReferenceFrame"); // xmlWriter.WriteAttributeString("Name", Name); // xmlWriter.WriteAttributeString("Parent", Parent); // xmlWriter.WriteAttributeString("ReferenceFrameType", ReferenceFrameType.ToString()); // xmlWriter.WriteAttributeString("Reference", Reference.ToString()); // xmlWriter.WriteAttributeString("ParentsRoationalBase",ParentsRoationalBase.ToString() ); // xmlWriter.WriteAttributeString("MeanRadius", MeanRadius.ToString()); // xmlWriter.WriteAttributeString("Oblateness", Oblateness.ToString()); // xmlWriter.WriteAttributeString("Heading", Heading.ToString()); // xmlWriter.WriteAttributeString("Pitch", Pitch.ToString()); // xmlWriter.WriteAttributeString("Roll", Roll.ToString()); // xmlWriter.WriteAttributeString("Scale", Scale.ToString()); // xmlWriter.WriteAttributeString("Tilt", Tilt.ToString()); // xmlWriter.WriteAttributeString("Translation", Translation.ToString()); // if (ReferenceFrameType == ReferenceFrameTypes.FixedSherical) // { // xmlWriter.WriteAttributeString("Lat", Lat.ToString()); // xmlWriter.WriteAttributeString("Lng", Lng.ToString()); // xmlWriter.WriteAttributeString("Altitude", Altitude.ToString()); // } // xmlWriter.WriteAttributeString("RotationalPeriod", RotationalPeriod.ToString()); // xmlWriter.WriteAttributeString("ZeroRotationDate", ZeroRotationDate.ToString()); // xmlWriter.WriteAttributeString("RepresentativeColor",SavedColor.Save(RepresentativeColor)); // xmlWriter.WriteAttributeString("ShowAsPoint", ShowAsPoint.ToString()); // xmlWriter.WriteAttributeString("StationKeeping", StationKeeping.ToString()); // if (ReferenceFrameType == ReferenceFrameTypes.Orbital) // { // xmlWriter.WriteAttributeString("ShowOrbitPath", ShowOrbitPath.ToString()); // xmlWriter.WriteAttributeString("SemiMajorAxis", SemiMajorAxis.ToString()); // xmlWriter.WriteAttributeString("SemiMajorAxisScale", this.SemiMajorAxisUnits.ToString()); // xmlWriter.WriteAttributeString("Eccentricity", Eccentricity.ToString()); // xmlWriter.WriteAttributeString("Inclination", Inclination.ToString()); // xmlWriter.WriteAttributeString("ArgumentOfPeriapsis", ArgumentOfPeriapsis.ToString()); // xmlWriter.WriteAttributeString("LongitudeOfAscendingNode", LongitudeOfAscendingNode.ToString()); // xmlWriter.WriteAttributeString("MeanAnomolyAtEpoch", MeanAnomolyAtEpoch.ToString()); // xmlWriter.WriteAttributeString("MeanDailyMotion", MeanDailyMotion.ToString()); // xmlWriter.WriteAttributeString("Epoch", Epoch.ToString()); // } // xmlWriter.WriteEndElement(); //} public virtual void InitializeFromXml(XmlNode node) { Name = node.Attributes.GetNamedItem("Name").Value; Parent = node.Attributes.GetNamedItem("Parent").Value; switch (node.Attributes.GetNamedItem("ReferenceFrameType").Value) { case "FixedSherical": ReferenceFrameType = ReferenceFrameTypes.FixedSherical; break; case "Orbital": ReferenceFrameType = ReferenceFrameTypes.Orbital; break; case "Trajectory": ReferenceFrameType = ReferenceFrameTypes.Trajectory; break; default: break; } switch (node.Attributes.GetNamedItem("Reference").Value) { case "Sky": Reference = ReferenceFrames.Sky; break; case "Ecliptic": Reference = ReferenceFrames.Ecliptic; break; case "Galactic": Reference = ReferenceFrames.Galactic; break; case "Sun": Reference = ReferenceFrames.Sun; break; case "Mercury": Reference = ReferenceFrames.Mercury; break; case "Venus": Reference = ReferenceFrames.Venus; break; case "Earth": Reference = ReferenceFrames.Earth; break; case "Mars": Reference = ReferenceFrames.Mars; break; case "Jupiter": Reference = ReferenceFrames.Jupiter; break; case "Saturn": Reference = ReferenceFrames.Saturn; break; case "Uranus": Reference = ReferenceFrames.Uranus; break; case "Neptune": Reference = ReferenceFrames.Neptune; break; case "Pluto": Reference = ReferenceFrames.Pluto; break; case "Moon": Reference = ReferenceFrames.Moon; break; case "Io": Reference = ReferenceFrames.Io; break; case "Europa": Reference = ReferenceFrames.Europa; break; case "Ganymede": Reference = ReferenceFrames.Ganymede; break; case "Callisto": Reference = ReferenceFrames.Callisto; break; case "Custom": Reference = ReferenceFrames.Custom; break; case "Identity": Reference = ReferenceFrames.Identity; break; default: break; } ParentsRoationalBase = Boolean.Parse(node.Attributes.GetNamedItem("ParentsRoationalBase").Value); MeanRadius = Double.Parse(node.Attributes.GetNamedItem("MeanRadius").Value); Oblateness = Double.Parse(node.Attributes.GetNamedItem("Oblateness").Value); Heading = Double.Parse(node.Attributes.GetNamedItem("Heading").Value); Pitch = Double.Parse(node.Attributes.GetNamedItem("Pitch").Value); Roll = Double.Parse(node.Attributes.GetNamedItem("Roll").Value); Scale = Double.Parse(node.Attributes.GetNamedItem("Scale").Value); Tilt = Double.Parse(node.Attributes.GetNamedItem("Tilt").Value); Translation = Vector3d.Parse(node.Attributes.GetNamedItem("Translation").Value); if (ReferenceFrameType == ReferenceFrameTypes.FixedSherical) { Lat = Double.Parse(node.Attributes.GetNamedItem("Lat").Value); Lng = Double.Parse(node.Attributes.GetNamedItem("Lng").Value); Altitude = Double.Parse(node.Attributes.GetNamedItem("Altitude").Value); } RotationalPeriod = Double.Parse(node.Attributes.GetNamedItem("RotationalPeriod").Value); ZeroRotationDate = Double.Parse(node.Attributes.GetNamedItem("ZeroRotationDate").Value); RepresentativeColor = Color.Load(node.Attributes.GetNamedItem("RepresentativeColor").Value); ShowAsPoint = Boolean.Parse(node.Attributes.GetNamedItem("ShowAsPoint").Value); if (node.Attributes.GetNamedItem("StationKeeping") != null) { StationKeeping = Boolean.Parse(node.Attributes.GetNamedItem("StationKeeping").Value); } if (ReferenceFrameType == ReferenceFrameTypes.Orbital) { ShowOrbitPath = Boolean.Parse(node.Attributes.GetNamedItem("ShowOrbitPath").Value); SemiMajorAxis = Double.Parse(node.Attributes.GetNamedItem("SemiMajorAxis").Value); switch (node.Attributes.GetNamedItem("SemiMajorAxisScale").Value) { case "Meters": SemiMajorAxisUnits = AltUnits.Meters; break; case "Feet": SemiMajorAxisUnits = AltUnits.Feet; break; case "Inches": SemiMajorAxisUnits = AltUnits.Inches; break; case "Miles": SemiMajorAxisUnits = AltUnits.Miles; break; case "Kilometers": SemiMajorAxisUnits = AltUnits.Kilometers; break; case "AstronomicalUnits": SemiMajorAxisUnits = AltUnits.AstronomicalUnits; break; case "LightYears": SemiMajorAxisUnits = AltUnits.LightYears; break; case "Parsecs": SemiMajorAxisUnits = AltUnits.Parsecs; break; case "MegaParsecs": SemiMajorAxisUnits = AltUnits.MegaParsecs; break; case "Custom": SemiMajorAxisUnits = AltUnits.Custom; break; default: break; } Eccentricity = Double.Parse(node.Attributes.GetNamedItem("Eccentricity").Value); Inclination = Double.Parse(node.Attributes.GetNamedItem("Inclination").Value); ArgumentOfPeriapsis = Double.Parse(node.Attributes.GetNamedItem("ArgumentOfPeriapsis").Value); LongitudeOfAscendingNode = Double.Parse(node.Attributes.GetNamedItem("LongitudeOfAscendingNode").Value); MeanAnomolyAtEpoch = Double.Parse(node.Attributes.GetNamedItem("MeanAnomolyAtEpoch").Value); MeanDailyMotion = Double.Parse(node.Attributes.GetNamedItem("MeanDailyMotion").Value); Epoch = Double.Parse(node.Attributes.GetNamedItem("Epoch").Value); } }
public double GetScaleFactor(AltUnits AltUnit, double custom) { double factor = 1; switch (AltUnit) { case AltUnits.Meters: factor = 1; break; case AltUnits.Feet: factor = 1 * 0.3048; break; case AltUnits.Inches: factor = (1.0 / 12.0) * 0.3048; break; case AltUnits.Miles: factor = 5280 * 0.3048; break; case AltUnits.Kilometers: factor = 1000; break; case AltUnits.AstronomicalUnits: factor = 1000 * UiTools.KilometersPerAu; break; case AltUnits.LightYears: factor = 1000 * UiTools.KilometersPerAu * UiTools.AuPerLightYear; break; case AltUnits.Parsecs: factor = 1000 * UiTools.KilometersPerAu * UiTools.AuPerParsec; break; case AltUnits.MegaParsecs: factor = 1000 * UiTools.KilometersPerAu * UiTools.AuPerParsec * 1000000; break; case AltUnits.Custom: factor = custom; break; default: break; } return factor; }
//public virtual void SaveToXml(System.Xml.XmlTextWriter xmlWriter) //{ // xmlWriter.WriteStartElement("ReferenceFrame"); // xmlWriter.WriteAttributeString("Name", Name); // xmlWriter.WriteAttributeString("Parent", Parent); // xmlWriter.WriteAttributeString("ReferenceFrameType", ReferenceFrameType.ToString()); // xmlWriter.WriteAttributeString("Reference", Reference.ToString()); // xmlWriter.WriteAttributeString("ParentsRoationalBase",ParentsRoationalBase.ToString() ); // xmlWriter.WriteAttributeString("MeanRadius", MeanRadius.ToString()); // xmlWriter.WriteAttributeString("Oblateness", Oblateness.ToString()); // xmlWriter.WriteAttributeString("Heading", Heading.ToString()); // xmlWriter.WriteAttributeString("Pitch", Pitch.ToString()); // xmlWriter.WriteAttributeString("Roll", Roll.ToString()); // xmlWriter.WriteAttributeString("Scale", Scale.ToString()); // xmlWriter.WriteAttributeString("Tilt", Tilt.ToString()); // xmlWriter.WriteAttributeString("Translation", Translation.ToString()); // if (ReferenceFrameType == ReferenceFrameTypes.FixedSherical) // { // xmlWriter.WriteAttributeString("Lat", Lat.ToString()); // xmlWriter.WriteAttributeString("Lng", Lng.ToString()); // xmlWriter.WriteAttributeString("Altitude", Altitude.ToString()); // } // xmlWriter.WriteAttributeString("RotationalPeriod", RotationalPeriod.ToString()); // xmlWriter.WriteAttributeString("ZeroRotationDate", ZeroRotationDate.ToString()); // xmlWriter.WriteAttributeString("RepresentativeColor",SavedColor.Save(RepresentativeColor)); // xmlWriter.WriteAttributeString("ShowAsPoint", ShowAsPoint.ToString()); // xmlWriter.WriteAttributeString("StationKeeping", StationKeeping.ToString()); // if (ReferenceFrameType == ReferenceFrameTypes.Orbital) // { // xmlWriter.WriteAttributeString("ShowOrbitPath", ShowOrbitPath.ToString()); // xmlWriter.WriteAttributeString("SemiMajorAxis", SemiMajorAxis.ToString()); // xmlWriter.WriteAttributeString("SemiMajorAxisScale", this.SemiMajorAxisUnits.ToString()); // xmlWriter.WriteAttributeString("Eccentricity", Eccentricity.ToString()); // xmlWriter.WriteAttributeString("Inclination", Inclination.ToString()); // xmlWriter.WriteAttributeString("ArgumentOfPeriapsis", ArgumentOfPeriapsis.ToString()); // xmlWriter.WriteAttributeString("LongitudeOfAscendingNode", LongitudeOfAscendingNode.ToString()); // xmlWriter.WriteAttributeString("MeanAnomolyAtEpoch", MeanAnomolyAtEpoch.ToString()); // xmlWriter.WriteAttributeString("MeanDailyMotion", MeanDailyMotion.ToString()); // xmlWriter.WriteAttributeString("Epoch", Epoch.ToString()); // } // xmlWriter.WriteEndElement(); //} public virtual void InitializeFromXml(XmlNode node) { Name = node.Attributes.GetNamedItem("Name").Value; Parent = node.Attributes.GetNamedItem("Parent").Value; switch (node.Attributes.GetNamedItem("ReferenceFrameType").Value) { case "FixedSherical": ReferenceFrameType = ReferenceFrameTypes.FixedSherical; break; case "Orbital": ReferenceFrameType = ReferenceFrameTypes.Orbital; break; case "Trajectory": ReferenceFrameType = ReferenceFrameTypes.Trajectory; break; default: break; } switch (node.Attributes.GetNamedItem("Reference").Value) { case "Sky": Reference = ReferenceFrames.Sky; break; case "Ecliptic": Reference = ReferenceFrames.Ecliptic; break; case "Galactic": Reference = ReferenceFrames.Galactic; break; case "Sun": Reference = ReferenceFrames.Sun; break; case "Mercury": Reference = ReferenceFrames.Mercury; break; case "Venus": Reference = ReferenceFrames.Venus; break; case "Earth": Reference = ReferenceFrames.Earth; break; case "Mars": Reference = ReferenceFrames.Mars; break; case "Jupiter": Reference = ReferenceFrames.Jupiter; break; case "Saturn": Reference = ReferenceFrames.Saturn; break; case "Uranus": Reference = ReferenceFrames.Uranus; break; case "Neptune": Reference = ReferenceFrames.Neptune; break; case "Pluto": Reference = ReferenceFrames.Pluto; break; case "Moon": Reference = ReferenceFrames.Moon; break; case "Io": Reference = ReferenceFrames.Io; break; case "Europa": Reference = ReferenceFrames.Europa; break; case "Ganymede": Reference = ReferenceFrames.Ganymede; break; case "Callisto": Reference = ReferenceFrames.Callisto; break; case "Custom": Reference = ReferenceFrames.Custom; break; case "Identity": Reference = ReferenceFrames.Identity; break; default: break; } ParentsRoationalBase = Boolean.Parse(node.Attributes.GetNamedItem("ParentsRoationalBase").Value); MeanRadius = Double.Parse(node.Attributes.GetNamedItem("MeanRadius").Value); Oblateness = Double.Parse(node.Attributes.GetNamedItem("Oblateness").Value); Heading = Double.Parse(node.Attributes.GetNamedItem("Heading").Value); Pitch = Double.Parse(node.Attributes.GetNamedItem("Pitch").Value); Roll = Double.Parse(node.Attributes.GetNamedItem("Roll").Value); Scale = Double.Parse(node.Attributes.GetNamedItem("Scale").Value); Tilt = Double.Parse(node.Attributes.GetNamedItem("Tilt").Value); Translation = Vector3d.Parse(node.Attributes.GetNamedItem("Translation").Value); if (ReferenceFrameType == ReferenceFrameTypes.FixedSherical) { Lat = Double.Parse(node.Attributes.GetNamedItem("Lat").Value); Lng = Double.Parse(node.Attributes.GetNamedItem("Lng").Value); Altitude = Double.Parse(node.Attributes.GetNamedItem("Altitude").Value); } RotationalPeriod = Double.Parse(node.Attributes.GetNamedItem("RotationalPeriod").Value); ZeroRotationDate = Double.Parse(node.Attributes.GetNamedItem("ZeroRotationDate").Value); RepresentativeColor = Color.Load(node.Attributes.GetNamedItem("RepresentativeColor").Value); ShowAsPoint = Boolean.Parse(node.Attributes.GetNamedItem("ShowAsPoint").Value); if (node.Attributes.GetNamedItem("StationKeeping")!= null) { StationKeeping = Boolean.Parse(node.Attributes.GetNamedItem("StationKeeping").Value); } if (ReferenceFrameType == ReferenceFrameTypes.Orbital) { ShowOrbitPath = Boolean.Parse(node.Attributes.GetNamedItem("ShowOrbitPath").Value); SemiMajorAxis = Double.Parse(node.Attributes.GetNamedItem("SemiMajorAxis").Value); switch (node.Attributes.GetNamedItem("SemiMajorAxisScale").Value) { case "Meters": SemiMajorAxisUnits = AltUnits.Meters; break; case "Feet": SemiMajorAxisUnits = AltUnits.Feet; break; case "Inches": SemiMajorAxisUnits = AltUnits.Inches; break; case "Miles": SemiMajorAxisUnits = AltUnits.Miles; break; case "Kilometers": SemiMajorAxisUnits = AltUnits.Kilometers; break; case "AstronomicalUnits": SemiMajorAxisUnits = AltUnits.AstronomicalUnits; break; case "LightYears": SemiMajorAxisUnits = AltUnits.LightYears; break; case "Parsecs": SemiMajorAxisUnits = AltUnits.Parsecs; break; case "MegaParsecs": SemiMajorAxisUnits = AltUnits.MegaParsecs; break; case "Custom": SemiMajorAxisUnits = AltUnits.Custom; break; default: break; } Eccentricity = Double.Parse(node.Attributes.GetNamedItem("Eccentricity").Value); Inclination = Double.Parse(node.Attributes.GetNamedItem("Inclination").Value); ArgumentOfPeriapsis = Double.Parse(node.Attributes.GetNamedItem("ArgumentOfPeriapsis").Value); LongitudeOfAscendingNode = Double.Parse(node.Attributes.GetNamedItem("LongitudeOfAscendingNode").Value); MeanAnomolyAtEpoch = Double.Parse(node.Attributes.GetNamedItem("MeanAnomolyAtEpoch").Value); MeanDailyMotion = Double.Parse(node.Attributes.GetNamedItem("MeanDailyMotion").Value); Epoch = Double.Parse(node.Attributes.GetNamedItem("Epoch").Value); } }