Exemplo n.º 1
0
        private VideoParser.Video getNearestVideo(double lat, double lon)
        {
            var videos = _nodeTree.GetAllTrackVideos();

            if (videos == null)
            {
                return(null);
            }
            VideoParser.Video nearestVideo = null;
            double            minDist      = 5.0 / 60;

            foreach (var video in videos)
            {
                double dir = 90.0 - 180.0 / Math.PI * Math.Atan2(lat - video.PanTiltUnit.Latitude, lon - video.PanTiltUnit.Longitude);
                if (dir < 0)
                {
                    dir += 360.0;
                }
                double left  = video.PanTiltUnit.LeftLimit;
                double right = video.PanTiltUnit.RightLimit;
                if (right < left)
                {
                    if (dir < right)
                    {
                        dir += 360.0;
                    }
                    right += 360.0;
                }
                if (dir > left && dir < right)
                {
                    double dist = getDist(new Point(video.PanTiltUnit.Longitude, video.PanTiltUnit.Latitude), new Point(lon, lat));
                    if (dist < minDist)
                    {
                        minDist      = dist;
                        nearestVideo = video;
                    }
                }
            }
            return(nearestVideo);
        }
Exemplo n.º 2
0
 public bool IsSameNode(VideoParser.Node node)
 {
     lock (_trackVideos)
     {
         if (_trackVideos.Count == 0)
         {
             return(false);
         }
         CCTVNodeTree newNode = new CCTVNodeTree();
         newNode.AddTrackVideo(node);
         if (isSameVideos(newNode.GetAllTrackVideos()))
         {
             return(true);
         }
         return(false);
     }
 }