Esempio n. 1
0
        /// <summary>
        /// Нахождение кратчайшего пути между двумя вершинами в графе по КООРДИНАТАМ в пространстве
        /// </summary>
        /// <param name="point">Координаты стартовой точки</param>
        /// <param name="xpoint">Координаты конечной точки</param>
        /// <returns>Возвращает список включающий себя список ребер из которых строится маршут из node_start к node_finish, при невозможности его построения - Null</returns>
        public ResultRoute MakeRouteResult_byNodesCoordinates(IPoint point, IPoint xpoint)
        {
            if (point == null)
            {
                throw new ArgumentNullException(nameof(point));
            }
            if (xpoint == null)
            {
                throw new ArgumentNullException(nameof(xpoint));
            }

            var start_mitm = SqrEdgesSearch.Find(point);

            var finish_mitm = SqrEdgesSearch.Find(xpoint);


            Path route = null;

            if (!start_mitm.Point_To.Equals(finish_mitm.Point_To))
            {
                route = MakePath_byNodesCoordinates(start_mitm.StartPath, finish_mitm.FinishPath);
                return(new ResultRoute(route, start_mitm, finish_mitm));
            }
            else
            {
                return(new ResultRoute(null, start_mitm, finish_mitm));
            }
        }
Esempio n. 2
0
 /// <summary>
 /// Поиск ближайшего к Point ребра в графе
 /// </summary>
 /// <param name="point"></param>
 /// <returns></returns>
 public DropOnEdge FindNearEdge(IPoint point)
 {
     return(SqrEdgesSearch.Find(point));
 }