コード例 #1
0
        public void FreezeView()
        {
            targetAlt = alt;
            targetAz  = az;

            TargetCamera = ViewCamera.Copy();
        }
コード例 #2
0
ファイル: IViewMover.cs プロジェクト: spamarti/wwt-web-client
        public ViewMoverKenBurnsStyle(CameraParameters from, CameraParameters to, double time, Date fromDateTime, Date toDateTime, InterpolationType type)
        {
            InterpolationType = type;

            if (Math.Abs(from.Lng - to.Lng) > 180)
            {
                if (from.Lng > to.Lng)
                {
                    from.Lng -= 360;
                }
                else
                {
                    from.Lng += 360;
                }
            }

            this.fromDateTime = fromDateTime;
            this.toDateTime = toDateTime;

            dateTimeSpan = toDateTime - fromDateTime;

            this.from = from.Copy();
            this.to = to.Copy();
            fromTime = Date.Now;
            toTargetTime = time;
        }
コード例 #3
0
        public ViewMoverKenBurnsStyle(CameraParameters from, CameraParameters to, double time, Date fromDateTime, Date toDateTime, InterpolationType type)
        {
            InterpolationType = type;

            if (Math.Abs(from.Lng - to.Lng) > 180)
            {
                if (from.Lng > to.Lng)
                {
                    from.Lng -= 360;
                }
                else
                {
                    from.Lng += 360;
                }
            }

            this.fromDateTime = fromDateTime;
            this.toDateTime   = toDateTime;

            dateTimeSpan = toDateTime - fromDateTime;

            this.from    = from.Copy();
            this.to      = to.Copy();
            fromTime     = Date.Now;
            toTargetTime = time;
        }
コード例 #4
0
        public static ViewMoverSlew CreateUpDown(CameraParameters from, CameraParameters to, double upDowFactor)
        {
            ViewMoverSlew temp = new ViewMoverSlew();

            temp.upTimeFactor = temp.downTimeFactor = upDowFactor;
            temp.Init(from.Copy(), to.Copy());
            return(temp);
        }
コード例 #5
0
ファイル: WWTControl.cs プロジェクト: spamarti/wwt-web-client
        public void GotoTargetFull(bool noZoom, bool instant, CameraParameters cameraParams, Imageset studyImageSet, Imageset backgroundImageSet)
        {
            RenderNeeded = true;
            //if (cameraParams == this.viewCamera)
            //{
            //    instant = true;
            //}
            tracking = false;
            trackingObject = null;
            targetStudyImageset = studyImageSet;
            targetBackgroundImageset = backgroundImageSet;

            if (noZoom)
            {
                cameraParams.Zoom = RenderContext.ViewCamera.Zoom;
                cameraParams.Angle = RenderContext.ViewCamera.Angle;
                cameraParams.Rotation = RenderContext.ViewCamera.Rotation;
            }
            else
            {
                if (cameraParams.Zoom == -1 || cameraParams.Zoom == 0)
                {
                    if (RenderContext.Space)
                    {
                        cameraParams.Zoom = 1.40625;
                    }
                    else
                    {
                        cameraParams.Zoom = 0.09F;
                    }
                }
            }

            // if (instant || (Math.Abs(ViewLat - cameraParams.Lat) < .000000000001 && Math.Abs(ViewLong - cameraParams.Lng) < .000000000001 && Math.Abs(ZoomFactor - cameraParams.Zoom) < .000000000001))
            if (instant || (Math.Abs(RenderContext.ViewCamera.Lat - cameraParams.Lat) < .000000000001 && Math.Abs(RenderContext.ViewCamera.Lng - cameraParams.Lng) < .000000000001 && Math.Abs(RenderContext.ViewCamera.Zoom - cameraParams.Zoom) < .000000000001))
            {
                Mover = null;
                RenderContext.TargetCamera = cameraParams.Copy();
                RenderContext.ViewCamera = RenderContext.TargetCamera.Copy();

                //if (Space && Settings.Active.LocalHorizonMode)
                //{
                //    Coordinates currentAltAz = Coordinates.EquitorialToHorizon(Coordinates.FromRaDec(viewCamera.RA, viewCamera.Dec), SpaceTimeController.Location, SpaceTimeController.Now);

                //    targetAlt = alt = currentAltAz.Alt;
                //    targetAz = az = currentAltAz.Az;
                //}
                mover_Midpoint();
                moving = true;
            }
            else
            {

                Mover = ViewMoverSlew.Create(RenderContext.ViewCamera, cameraParams);
                RenderNeeded = true;
                Mover.Midpoint = mover_Midpoint;
            }
        }
コード例 #6
0
ファイル: IViewMover.cs プロジェクト: spamarti/wwt-web-client
        public void Init(CameraParameters from, CameraParameters to)
        {
            if (Math.Abs(from.Lng - to.Lng) > 180)
            {
                if (from.Lng > to.Lng)
                {
                    from.Lng -= 360;
                }
                else
                {
                    from.Lng += 360;
                }
            }

            if (to.Zoom <= 0)
            {
                to.Zoom = 360;
            }
            if (from.Zoom <= 0)
            {
                from.Zoom = 360;
            }
            this.from = from;
            this.to = to;
            fromTime = Date.Now;
            double zoomUpTarget = 360.0;
            double travelTime;

            double lngDist = Math.Abs(from.Lng - to.Lng);
            double latDist = Math.Abs(from.Lat - to.Lat);
            double distance = Math.Sqrt(latDist * latDist + lngDist * lngDist);

            zoomUpTarget = (distance / 3) * 20;
            if (zoomUpTarget > 360.0)
            {
                zoomUpTarget = 360.0;
            }

            if (zoomUpTarget < from.Zoom)
            {
                zoomUpTarget = from.Zoom;
            }

            travelTime = (distance / 180.0) * (360 / zoomUpTarget) * travelTimeFactor;

            double rotateTime = Math.Max(Math.Abs(from.Angle - to.Angle), Math.Abs(from.Rotation - to.Rotation)) ;

            double logDistUp = Math.Max(Math.Abs(Util.LogN(zoomUpTarget, 2) - Util.LogN(from.Zoom, 2)), rotateTime);
            upTargetTime = upTimeFactor * logDistUp;
            downTargetTime = upTargetTime + travelTime;
            double logDistDown = Math.Abs(Util.LogN(zoomUpTarget, 2) - Util.LogN(to.Zoom, 2));
            toTargetTime = downTargetTime + Math.Max((downTimeFactor * logDistDown),rotateTime);

            fromTop = from.Copy();
            fromTop.Zoom = zoomUpTarget;
            fromTop.Angle = (from.Angle + to.Angle) / 2.0; //todo make short wrap arounds..
            fromTop.Rotation = (from.Rotation + to.Rotation) / 2.0;
            toTop = to.Copy();
            toTop.Zoom = fromTop.Zoom;
            toTop.Angle = fromTop.Angle;
            toTop.Rotation = fromTop.Rotation;
        }
コード例 #7
0
ファイル: IViewMover.cs プロジェクト: spamarti/wwt-web-client
 public static ViewMoverSlew CreateUpDown(CameraParameters from, CameraParameters to, double upDowFactor)
 {
     ViewMoverSlew temp = new ViewMoverSlew();
     temp.upTimeFactor = temp.downTimeFactor = upDowFactor;
     temp.Init(from.Copy(), to.Copy());
     return temp;
 }
コード例 #8
0
        public void Init(CameraParameters from, CameraParameters to)
        {
            if (Math.Abs(from.Lng - to.Lng) > 180)
            {
                if (from.Lng > to.Lng)
                {
                    from.Lng -= 360;
                }
                else
                {
                    from.Lng += 360;
                }
            }

            if (to.Zoom <= 0)
            {
                to.Zoom = 360;
            }
            if (from.Zoom <= 0)
            {
                from.Zoom = 360;
            }
            this.from = from;
            this.to   = to;
            fromTime  = Date.Now;
            double zoomUpTarget = 360.0;
            double travelTime;

            double lngDist  = Math.Abs(from.Lng - to.Lng);
            double latDist  = Math.Abs(from.Lat - to.Lat);
            double distance = Math.Sqrt(latDist * latDist + lngDist * lngDist);


            zoomUpTarget = (distance / 3) * 20;
            if (zoomUpTarget > 360.0)
            {
                zoomUpTarget = 360.0;
            }

            if (zoomUpTarget < from.Zoom)
            {
                zoomUpTarget = from.Zoom;
            }

            travelTime = (distance / 180.0) * (360 / zoomUpTarget) * travelTimeFactor;

            double rotateTime = Math.Max(Math.Abs(from.Angle - to.Angle), Math.Abs(from.Rotation - to.Rotation));


            double logDistUp = Math.Max(Math.Abs(Util.LogN(zoomUpTarget, 2) - Util.LogN(from.Zoom, 2)), rotateTime);

            upTargetTime   = upTimeFactor * logDistUp;
            downTargetTime = upTargetTime + travelTime;
            double logDistDown = Math.Abs(Util.LogN(zoomUpTarget, 2) - Util.LogN(to.Zoom, 2));

            toTargetTime = downTargetTime + Math.Max((downTimeFactor * logDistDown), rotateTime);

            fromTop          = from.Copy();
            fromTop.Zoom     = zoomUpTarget;
            fromTop.Angle    = (from.Angle + to.Angle) / 2.0; //todo make short wrap arounds..
            fromTop.Rotation = (from.Rotation + to.Rotation) / 2.0;
            toTop            = to.Copy();
            toTop.Zoom       = fromTop.Zoom;
            toTop.Angle      = fromTop.Angle;
            toTop.Rotation   = fromTop.Rotation;
        }