コード例 #1
0
ファイル: intersectBucket.cs プロジェクト: iscumd/Yeti2017
        /// <summary>
        ///
        /// </summary>
        /// <param name="passedList"></param>
        /// <param name="index"></param>
        /// <param name="minCommonality"></param>
        /// <returns>the intersectBucket is created By comBing the passedList[idex] with all passedList[index + i] that have a min percentage points ie common. the int is the first idex nOT comined     </returns>
        private static Tuple <intersectBucket, int> combinefoward(List <intersectBucket> passedList, int index, int minCommonality)
        {
            intersectBucket returnBucket      = passedList[index];
            int             i                 = index + 1;
            int             consecutiveMisses = 0;

            for (i = index + 1; consecutiveMisses <= 3 && i < passedList.Count(); i++)
            {
                int comparevalue = compare(returnBucket, passedList[i]);
                if (comparevalue > minCommonality)
                {
                    List <LidarPoint> pointsToAdd = setSubtraction(passedList[i], returnBucket);
                    foreach (LidarPoint thispoint in pointsToAdd)
                    {
                        returnBucket.AddPoint(thispoint);
                    }
                    consecutiveMisses = 0;
                }
                else
                {
                    consecutiveMisses++;
                }
            }
            return(new Tuple <intersectBucket, int>(returnBucket, i - consecutiveMisses));
        }
コード例 #2
0
ファイル: intersectBucket.cs プロジェクト: iscumd/Yeti2017
        static private List <LidarPoint> setSubtraction(intersectBucket LeftBucket, intersectBucket rightBucket)
        {
            return(LeftBucket.points.Except(rightBucket.points, new LidarPointCompare()).ToList());

            /*
             * List<LidarPoint> returvalue = new List<LidarPoint>();
             * foreach (LidarPoint p1 in LeftBucket.points)
             * {
             *  bool found = false;
             *  foreach (LidarPoint p2 in rightBucket.points)
             *  {
             *
             *      if (p1.id == p2.id)
             *      {
             *          found = true;
             *          break;
             *      }
             *
             *      if (!found)
             *      {
             *          returvalue.Add(p1);
             *      }
             *  }
             * }
             *
             * return returvalue;
             */
        }
コード例 #3
0
ファイル: intersectBucket.cs プロジェクト: iscumd/Yeti2017
        /// <summary>
        ///
        /// </summary>
        /// <param name="Bucket2"></param>
        /// <returns>an numBer Between 0 and 100. 0 -> no point in common. 100 -> the smaller list is a suset of the larger list. Other value is a percetage of commonality</returns>

        public static int compare(intersectBucket Bucket1, intersectBucket Bucket2)
        {
            List <LidarPoint> itersection = setItersection(Bucket1, Bucket2);

            if (Bucket1.points.Count() < Bucket2.points.Count())
            {
                return(100 * itersection.Count() / Bucket1.points.Count());
            }
            else
            {
                return(100 * itersection.Count() / Bucket2.points.Count());
            }

            /*
             * Unable to cast object of type '<IntersectIterator>d__92`1[Yeti2015.Hardware.Lidar.LidarPoint]' to type 'System.Collections.Generic.List`1[Yeti2015.Hardware.Lidar.LidarPoint]'.
             */
        }
コード例 #4
0
ファイル: intersectBucket.cs プロジェクト: iscumd/Yeti2017
        /// <summary>
        /// geerates the set itersectio. that is the poits commo to oth uckets
        /// </summary>
        /// <param name="Bucket1"></param>
        /// <param name="Bucket2"></param>
        /// <returns></returns>

        static private List <LidarPoint> setItersection(intersectBucket Bucket1, intersectBucket Bucket2)
        {
            return(Bucket1.points.Intersect(Bucket2.points, new LidarPointCompare()).ToList());

            /*
             * List<LidarPoint> returvalue = new List<LidarPoint>();
             * foreach(LidarPoint p1 in Bucket1.points)
             * {
             *  foreach (LidarPoint p2 in Bucket2.points)
             *  {
             *      if (p1.id == p2.id)
             *      {
             *          returvalue.Add(p1);
             *          break;
             *      }
             *
             *
             *  }
             * }
             *
             * return returvalue;
             */
        }