Esempio n. 1
0
        private void ChooseLocation_Click(object sender, EventArgs e)
        {
            LocationSetup dialog = new LocationSetup();

            dialog.Sky = false;

            dialog.Latitude     = Coordinates.Parse(this.latText.Text);
            dialog.Longitude    = Coordinates.Parse(this.lngText.Text);
            dialog.LocationName = this.locationName.Text;
            dialog.Altitude     = Convert.ToDouble(this.Altitude.Text.Replace("m", "").Replace("'", ""));

            if (dialog.ShowDialog(this) == DialogResult.OK)
            {
                this.latText.Text            = Coordinates.FormatDMS(Properties.Settings.Default.LocationLat = dialog.Latitude);
                this.lngText.Text            = Coordinates.FormatDMS(Properties.Settings.Default.LocationLng = dialog.Longitude);
                this.locationName.Text       = Properties.Settings.Default.LocationName = dialog.LocationName;
                this.Altitude.Text           = (Properties.Settings.Default.LocationAltitude = dialog.Altitude).ToString() + "m";
                SpaceTimeController.Altitude = Properties.Settings.Default.LocationAltitude;
                SpaceTimeController.Location = Coordinates.FromLatLng(Properties.Settings.Default.LocationLat, Properties.Settings.Default.LocationLng);
            }
        }
        bool IUiController.MouseMove(object sender, MouseEventArgs e)
        {
            if (drag)
            {
                Coordinates cursor = Earth3d.MainWindow.GetCoordinatesForScreenPoint(e.X, e.Y);

                switch (dragCorner)
                {
                case DragCorners.NW:
                    Overlay.north = cursor.Lat;
                    Overlay.west  = cursor.Lng;
                    break;

                case DragCorners.N:
                    Overlay.north = cursor.Lat;
                    break;

                case DragCorners.NE:
                    Overlay.north = cursor.Lat;
                    Overlay.east  = cursor.Lng;
                    break;

                case DragCorners.W:
                    Overlay.west = cursor.Lng;
                    break;

                case DragCorners.C:
                    Overlay.north -= (mouseDown.Lat - cursor.Lat);
                    Overlay.west  -= (mouseDown.Lng - cursor.Lng);
                    Overlay.south -= (mouseDown.Lat - cursor.Lat);
                    Overlay.east  -= (mouseDown.Lng - cursor.Lng);

                    break;

                case DragCorners.E:
                    Overlay.east = cursor.Lng;
                    break;

                case DragCorners.SW:
                    Overlay.south = cursor.Lat;
                    Overlay.west  = cursor.Lng;
                    break;

                case DragCorners.S:
                    Overlay.south = cursor.Lat;
                    break;

                case DragCorners.SE:
                    Overlay.south = cursor.Lat;
                    Overlay.east  = cursor.Lng;
                    break;

                default:
                    break;
                }
                mouseDown = cursor;
                UpdateTextBoxes();
                UpdateLines();
                return(true);
            }
            else
            {
                Control wnd    = (Control)sender;
                double  width  = Overlay.east - Overlay.west;
                double  height = Overlay.north - Overlay.south;

                double      range      = Math.Max(width / 40, height / 40);
                Coordinates cursor     = Earth3d.MainWindow.GetCoordinatesForScreenPoint(e.X, e.Y);
                DragCorners dragCorner = DragCorners.None;
                if (cursor.Distance(Coordinates.FromLatLng(Overlay.north, Overlay.west)) < range)
                {
                    dragCorner = DragCorners.NW;
                }
                if (cursor.Distance(Coordinates.FromLatLng(Overlay.north, (Overlay.west + Overlay.east) / 2)) < range)
                {
                    dragCorner = DragCorners.N;
                }
                if (cursor.Distance(Coordinates.FromLatLng(Overlay.north, Overlay.east)) < range)
                {
                    dragCorner = DragCorners.NE;
                }

                if (cursor.Distance(Coordinates.FromLatLng((Overlay.north + Overlay.south) / 2, Overlay.west)) < range)
                {
                    dragCorner = DragCorners.W;
                }

                if (cursor.Distance(Coordinates.FromLatLng((Overlay.north + Overlay.south) / 2, (Overlay.west + Overlay.east) / 2)) < range)
                {
                    dragCorner = DragCorners.C;
                }

                if (cursor.Distance(Coordinates.FromLatLng((Overlay.north + Overlay.south) / 2, Overlay.east)) < range)
                {
                    dragCorner = DragCorners.E;
                }

                if (cursor.Distance(Coordinates.FromLatLng(Overlay.south, Overlay.west)) < range)
                {
                    dragCorner = DragCorners.SW;
                }

                if (cursor.Distance(Coordinates.FromLatLng(Overlay.south, (Overlay.west + Overlay.east) / 2)) < range)
                {
                    dragCorner = DragCorners.S;
                }

                if (cursor.Distance(Coordinates.FromLatLng(Overlay.south, Overlay.east)) < range)
                {
                    dragCorner = DragCorners.SE;
                }

                switch (dragCorner)
                {
                case DragCorners.SE:
                case DragCorners.NW:
                    wnd.Cursor = Cursors.SizeNWSE;
                    break;

                case DragCorners.N:
                case DragCorners.S:
                    wnd.Cursor = Cursors.SizeNS;
                    break;

                case DragCorners.W:
                case DragCorners.E:
                    wnd.Cursor = Cursors.SizeWE;
                    break;

                case DragCorners.C:
                    wnd.Cursor = Cursors.Hand;
                    break;

                case DragCorners.SW:
                case DragCorners.NE:
                    wnd.Cursor = Cursors.SizeNESW;
                    break;

                default:
                    wnd.Cursor = Cursors.Default;
                    break;
                }
            }
            return(false);
        }
        bool IUiController.MouseDown(object sender, MouseEventArgs e)
        {
            double width  = Overlay.east - Overlay.west;
            double height = Overlay.north - Overlay.south;

            double      range  = Math.Max(width / 40, height / 40);
            Coordinates cursor = Earth3d.MainWindow.GetCoordinatesForScreenPoint(e.X, e.Y);

            if (cursor.Distance(Coordinates.FromLatLng(Overlay.north, Overlay.west)) < range)
            {
                dragCorner = DragCorners.NW;
                drag       = true;
            }
            if (cursor.Distance(Coordinates.FromLatLng(Overlay.north, (Overlay.west + Overlay.east) / 2)) < range)
            {
                dragCorner = DragCorners.N;
                drag       = true;
            }
            if (cursor.Distance(Coordinates.FromLatLng(Overlay.north, Overlay.east)) < range)
            {
                dragCorner = DragCorners.NE;
                drag       = true;
            }

            if (cursor.Distance(Coordinates.FromLatLng((Overlay.north + Overlay.south) / 2, Overlay.west)) < range)
            {
                dragCorner = DragCorners.W;
                drag       = true;
            }

            if (cursor.Distance(Coordinates.FromLatLng((Overlay.north + Overlay.south) / 2, (Overlay.west + Overlay.east) / 2)) < range)
            {
                dragCorner = DragCorners.C;
                drag       = true;
            }

            if (cursor.Distance(Coordinates.FromLatLng((Overlay.north + Overlay.south) / 2, Overlay.east)) < range)
            {
                dragCorner = DragCorners.E;
                drag       = true;
            }

            if (cursor.Distance(Coordinates.FromLatLng(Overlay.south, Overlay.west)) < range)
            {
                dragCorner = DragCorners.SW;
                drag       = true;
            }

            if (cursor.Distance(Coordinates.FromLatLng(Overlay.south, (Overlay.west + Overlay.east) / 2)) < range)
            {
                dragCorner = DragCorners.S;
                drag       = true;
            }

            if (cursor.Distance(Coordinates.FromLatLng(Overlay.south, Overlay.east)) < range)
            {
                dragCorner = DragCorners.SE;
                drag       = true;
            }

            if (drag)
            {
                mouseDown = cursor;
            }
            return(drag);
        }
Esempio n. 4
0
        private void GoToRADec_Click(object sender, EventArgs e)
        {
            int index = coordinateType.SelectedIndex;


            double ra       = 0;
            double dec      = 0;
            bool   raValid  = false;
            bool   decValid = false;

            switch (index)
            {
            case 0:     // Equitorial
            {
                ra       = Coordinates.ParseRA(raText.Text, false);
                dec      = Coordinates.ParseDec(decText.Text);
                raValid  = Coordinates.ValidateRA(raText.Text);
                decValid = Coordinates.ValidateDec(decText.Text);
            }
            break;

            case 2:     // Galactic
            {
                double l = Coordinates.Parse(raText.Text);
                double b = Coordinates.ParseDec(decText.Text);
                raValid  = Coordinates.Validate(raText.Text);
                decValid = Coordinates.ValidateDec(decText.Text);
                if (raValid && decValid)
                {
                    double[] result = Earth3d.GalactictoJ2000(l, b);
                    ra  = result[0] / 15;
                    dec = result[1];
                }
            }
            break;

            case 3:     // Ecliptic
            {
                double l = Coordinates.Parse(raText.Text);
                double b = Coordinates.ParseDec(decText.Text);
                raValid  = Coordinates.Validate(raText.Text);
                decValid = Coordinates.ValidateDec(decText.Text);
                if (raValid && decValid)
                {
                    AstroCalc.AstroRaDec radec = AstroCalc.AstroCalc.EclipticToJ2000(l, b, SpaceTimeController.JNow);
                    ra  = radec.RA;
                    dec = radec.Dec;
                }
            }
            break;

            case 4:     // Geo
            {
                ra       = -Coordinates.Parse(raText.Text) / 15;
                dec      = Coordinates.ParseDec(decText.Text);
                raValid  = Coordinates.Validate(raText.Text);
                decValid = Coordinates.ValidateDec(decText.Text);
            }
            break;

            case 1:     // alt/az
            {
                double az  = Coordinates.Parse(raText.Text);
                double alt = Coordinates.ParseDec(decText.Text);
                raValid  = Coordinates.Validate(raText.Text);
                decValid = Coordinates.ValidateDec(decText.Text);
                Coordinates radec = Coordinates.HorizonToEquitorial(Coordinates.FromLatLng(alt, az), SpaceTimeController.Location, SpaceTimeController.Now);
                ra  = radec.RA;
                dec = radec.Dec;
            }
            break;
            }
            if (raValid && decValid)
            {
                if (Earth3d.MainWindow.SolarSystemMode)
                {
                    Vector3d pnt = Coordinates.GeoTo3dDouble(dec, Coordinates.Parse(raText.Text));


                    pnt = Vector3d.TransformCoordinate(pnt, Planets.EarthMatrix);
                    pnt.Normalize();
                    Vector2d radec = Coordinates.CartesianToLatLng(pnt);

                    Earth3d.MainWindow.TargetLat  = radec.Y;
                    Earth3d.MainWindow.TargetLong = radec.X - 90;
                }
                else
                {
                    Earth3d.MainWindow.GotoTargetRADec(ra, dec, true, false);
                }
            }
        }