コード例 #1
0
 /// <summary> 搜尋最靠近車體位置的節點 </summary>
 /// <param name="a_atNodeLocal">[IN] node list </param>
 /// <param name="a_tCarInfo">[IN] car information </param>
 /// <returns> The closest node </returns>
 public static NodeId rtAGV_FindCurrentNode(rtAGV_MAP_node[] a_atNodeLocal, rtCarData a_tCarInfo)
 {
     NodeId tNodeId = new NodeId();
     double MinDistance = EMPTY_DATA;
     for (int i = 0; i < a_atNodeLocal.Length; i++)
     {
         double EachDistance = rtVectorOP_2D.GetDistance(a_atNodeLocal[i].tCoordinate, a_tCarInfo.tPosition);
         if (EachDistance <= MinDistance)
         {
             MinDistance = EachDistance;
             tNodeId = a_atNodeLocal[i].tNodeId;
         }
     }
     return tNodeId;
 }
コード例 #2
0
        /// <summary> Find Node list of Path to Destination </summary>
        /// <param name="a_lSrc">[IN] source node </param>
        /// <param name="a_lDst">[IN] Destination node </param>
        /// <param name="a_atNodeLocal">[IN] node information in current region </param>
        /// <param name="a_alMapCurrent">[IN] look up table of node in current region </param>
        /// <param name="a_lNodeNum">[IN] node number in current region </param>
        /// <param name="a_lPathLength">[INOUT] wanted path size </param>
        /// <param name="a_atPathInfo">[INOUT] wanted path </param>
        public static void rtAGV_FindPathNode2Dest(int a_lSrc, int a_lDst, rtAGV_MAP_node[] a_atNodeLocal, int[] a_alMapCurrent, int a_lNodeNum, ref int a_lPathLength, ref rtPath_Info[] a_atPathInfo)
        {
            int lCnt = 0;
            int[] alPathResult = new int[0];

            alPathResult = FindPathofNode(a_lSrc, a_lDst, a_alMapCurrent, a_lNodeNum, ref a_lPathLength);

            a_lPathLength--;    // 路徑段數比節點數少1

            a_atPathInfo = rtPath_Info.InitSet(a_lPathLength);
            
            for (lCnt = 0; lCnt < a_lPathLength; lCnt++)
            {
                a_atPathInfo[lCnt].tSrc.eX = a_atNodeLocal[alPathResult[lCnt]].tCoordinate.eX;
                a_atPathInfo[lCnt].tSrc.eY = a_atNodeLocal[alPathResult[lCnt]].tCoordinate.eY;

                a_atPathInfo[lCnt].tDest.eX = a_atNodeLocal[alPathResult[lCnt+1]].tCoordinate.eX;
                a_atPathInfo[lCnt].tDest.eY = a_atNodeLocal[alPathResult[lCnt+1]].tCoordinate.eY;
            }
        }