Exemplo n.º 1
0
 //--------------------------------------------------------------------------------------
 public void AddSetPoint(CSetPoint pOtherSet)
 {
     foreach (CPoint lPoint in pOtherSet)
     {
         Add(lPoint);
     }
 }
Exemplo n.º 2
0
        //--------------------------------------------------------------------------------------
        /// <summary>
        /// разбить рисунок(в виде матрицы) на отдельные куски
        /// в виде списка матриц по методу множеств
        ///
        /// </summary>
        /// <param name="pMatrix"></param>
        /// <returns></returns>
        public List <byte[][]> SplitBySet(byte[][] pMatrix)
        {
            List <CSetPoint> lContainnigSets = new List <CSetPoint>();

            fSets.Clear();

            for (int i = 0; i < pMatrix.Length; i++)
            {
                for (int j = 0; j < pMatrix[i].Length; j++)
                {
                    if (pMatrix[i][j] == 1)
                    {
                        lContainnigSets.Clear();
                        CPoint lCurrentPoint = new CPoint(i, j);
                        foreach (CSetPoint setpoint in fSets)
                        {
                            if (setpoint.ContainNeighborhood(lCurrentPoint))
                            {
                                lContainnigSets.Add(setpoint);
                            }
                        }
                        if (lContainnigSets.Count > 0)
                        {
                            lContainnigSets[0].Add(lCurrentPoint);
                            if (lContainnigSets.Count > 1)
                            {
                                for (int k = 1; k < lContainnigSets.Count; k++)
                                {
                                    lContainnigSets[0].AddSetPoint(lContainnigSets[k]);
                                }
                                for (int k = 1; k < lContainnigSets.Count; k++)
                                {
                                    fSets.Remove(lContainnigSets[k]);
                                }
                            }
                        }
                        else
                        {
                            CSetPoint lNewSet = new CSetPoint();
                            lNewSet.Add(lCurrentPoint);
                            fSets.Add(lNewSet);
                        }
                    }
                }
            }

            return(null);
        }