void ComputePrimeFocusFov(Telescope scope, Imager chip)
 {
     double width  = (2 * Math.Atan(chip.Width / (2 * scope.FocalLength))) / RC;
     double height = (2 * Math.Atan(chip.Height / (2 * scope.FocalLength))) / RC;
 }
        static FieldOfView()
        {
            Telescopes = new List<Telescope>();
            Cameras = new List<Camera>();

            if (!Directory.Exists(Properties.Settings.Default.CahceDirectory))
            {
                Directory.CreateDirectory(Properties.Settings.Default.CahceDirectory);
            }

            if (!Directory.Exists(Properties.Settings.Default.CahceDirectory+@"data"))
            {
                Directory.CreateDirectory(Properties.Settings.Default.CahceDirectory+@"data");
            }

            DataSetManager.DownloadFile("http://www.worldwidetelescope.org/wwtweb/catalog.aspx?X=instruments", Properties.Settings.Default.CahceDirectory + @"data\instruments.xml", false, true);
            var doc = new XmlDocument();
            doc.Load(Properties.Settings.Default.CahceDirectory + @"data\instruments.xml");

            XmlNode root = doc["root"];
            var scopes = root.SelectSingleNode("Telescopes");
            foreach (XmlNode child in scopes.ChildNodes)
            {
                var scope = new Telescope(child.Attributes["Manufacturer"].Value, child.InnerText,
                    Convert.ToDouble(child.Attributes["FocalLength"].Value),
                    Convert.ToDouble(child.Attributes["Aperture"].Value),
                    child.Attributes["ManufacturerUrl"].Value,
                    child.Attributes["MountType"].Value,
                    child.Attributes["OpticalDesign"].Value);
                Telescopes.Add(scope);
            }

            var cams = root.SelectSingleNode("Cameras");
            foreach (XmlNode child in cams.ChildNodes)
            {
                var camera = new Camera
                    (
                    child.Attributes["Manufacturer"].Value,
                    child.InnerText.Trim(),
                    child.Attributes["ManufacturersURL"].Value
                    );
                foreach (XmlNode grandChild in child)
                {
                    if (grandChild.Name != "#text")
                    {
                        var imager = new Imager
                            (
                                Convert.ToInt32(grandChild.Attributes["ID"].Value),
                                grandChild.Attributes["Type"].Value,
                                Convert.ToDouble(grandChild.Attributes["Width"].Value),
                                Convert.ToDouble(grandChild.Attributes["Height"].Value),
                                Convert.ToDouble(grandChild.Attributes["HorizontalPixels"].Value),
                                Convert.ToDouble(grandChild.Attributes["VerticalPixels"].Value),
                                Convert.ToDouble(grandChild.Attributes["CenterX"].Value),
                                Convert.ToDouble(grandChild.Attributes["CenterY"].Value),
                                Convert.ToDouble(grandChild.Attributes["Rotation"].Value),
                                grandChild.Attributes["Filter"].Value);
                        camera.Chips.Add(imager);
                    }
                }
                Cameras.Add(camera);
            }
        }
        static FieldOfView()
        {
            Telescopes = new List <Telescope>();
            Cameras    = new List <Camera>();

            if (!Directory.Exists(Properties.Settings.Default.CahceDirectory))
            {
                Directory.CreateDirectory(Properties.Settings.Default.CahceDirectory);
            }

            if (!Directory.Exists(Properties.Settings.Default.CahceDirectory + @"data"))
            {
                Directory.CreateDirectory(Properties.Settings.Default.CahceDirectory + @"data");
            }

            DataSetManager.DownloadFile("http://www.worldwidetelescope.org/wwtweb/catalog.aspx?X=instruments", Properties.Settings.Default.CahceDirectory + @"data\instruments.xml", false, true);
            XmlDocument doc = new XmlDocument();

            doc.Load(Properties.Settings.Default.CahceDirectory + @"data\instruments.xml");


            XmlNode root   = doc["root"];
            XmlNode scopes = root.SelectSingleNode("Telescopes");

            foreach (XmlNode child in scopes.ChildNodes)
            {
                Telescope scope = new Telescope(child.Attributes["Manufacturer"].Value, child.InnerText,
                                                Convert.ToDouble(child.Attributes["FocalLength"].Value.ToString()),
                                                Convert.ToDouble(child.Attributes["Aperture"].Value.ToString()),
                                                child.Attributes["ManufacturerUrl"].Value.ToString(),
                                                child.Attributes["MountType"].Value.ToString(),
                                                child.Attributes["OpticalDesign"].Value.ToString());
                Telescopes.Add(scope);
            }

            XmlNode cams = root.SelectSingleNode("Cameras");

            foreach (XmlNode child in cams.ChildNodes)
            {
                Camera camera = new Camera
                                (
                    child.Attributes["Manufacturer"].Value,
                    child.InnerText.Trim(),
                    child.Attributes["ManufacturersURL"].Value.ToString()
                                );
                foreach (XmlNode grandChild in child)
                {
                    if (grandChild.Name != "#text")
                    {
                        Imager imager = new Imager
                                        (
                            Convert.ToInt32(grandChild.Attributes["ID"].Value.ToString()),
                            grandChild.Attributes["Type"].Value.ToString(),
                            Convert.ToDouble(grandChild.Attributes["Width"].Value.ToString()),
                            Convert.ToDouble(grandChild.Attributes["Height"].Value.ToString()),
                            Convert.ToDouble(grandChild.Attributes["HorizontalPixels"].Value.ToString()),
                            Convert.ToDouble(grandChild.Attributes["VerticalPixels"].Value.ToString()),
                            Convert.ToDouble(grandChild.Attributes["CenterX"].Value.ToString()),
                            Convert.ToDouble(grandChild.Attributes["CenterY"].Value.ToString()),
                            Convert.ToDouble(grandChild.Attributes["Rotation"].Value.ToString()),
                            grandChild.Attributes["Filter"].Value.ToString());
                        camera.Chips.Add(imager);
                    }
                }
                Cameras.Add(camera);
            }
        }
 void ComputePrimeFocusFov(Telescope scope, Imager chip)
 {
     var width = (2 * Math.Atan(chip.Width / (2 * scope.FocalLength))) / RC;
     var height = (2 * Math.Atan(chip.Height / (2 * scope.FocalLength))) / RC;
 }