DistanceTo() public méthode

Calculate Euclidean distance between two points.
public DistanceTo ( IntPoint anotherPoint ) : float
anotherPoint IntPoint Point to calculate distance to.
Résultat float
Exemple #1
0
 public void Add(IntPoint point)
 {
     if (Points.Count != 0)
     {
         Length += point.DistanceTo(Points.Last());
     }
     Points.Add(point);
 }
Exemple #2
0
        /* fonction cubes */
        private void mergePosition(List<Cub> lst)
        {
            List<bool> tab = new List<bool>();
            for (int i = 0; i < LstCube.Count; i++)
                tab.Add(false);
            // Parcours de la liste des cubes recu par l'image
            for (int i = 0; i < lst.Count; i++)
            {
                bool trouv = false;
                // Si il y a déjà des cubes dans la liste
                if (LstCube.Count > 0)
                {
                    for (int j = 0; j < LstCube.Count; j++)
                    {
                        // Verification de la couleur
                        if (LstCube[j].Color == lst[i].Color)
                        {
                            IntPoint milieu = new IntPoint(lst[i].rec.X + lst[i].rec.Width / 2, lst[i].rec.Y + lst[i].rec.Height / 2);
                            //milieu.X = (int)(milieu.X * ratioCmParPixel[0]);
                            //milieu.Y = (int)(milieu.Y * ratioCmParPixel[1]);
                            float distance = milieu.DistanceTo(new IntPoint(LstCube[j].contour.X + LstCube[j].contour.Width / 2, LstCube[j].contour.Y + LstCube[j].contour.Height / 2));
                            if (distance < ( LstCube[j].contour.Width + LstCube[j].contour.Height) * 1.1) // Verification de la proximite
                            {
                                if (tab[j] == false)
                                {
                                    LstCube[j].Update(lst[i].rec);
                                    tab[j] = true;
                                }
                                trouv = true;
                                break;
                            }
                        }
                    }

                }
                if (trouv == false) // Aucun cube correspondant => AJOUT DU CUBE
                {
                    LstCube.Add(new ObjColor(lst[i].rec, lst[i].Color, lastIdCube++));
                    tab.Add(true);
                }
            }

            // Preparation de la liste pour envoie
            if (LstCube.Count > 0)
            {
                List<int> delete = new List<int>();
                List<PositionCube> lstpos = new List<PositionCube>();
                for (int i = 0; i < LstCube.Count; i++)
                {
                    PositionCube po = new PositionCube();
                    po.ID = LstCube[i].Identifiant;
                    po.IDZone = LstCube[i].Color;
                    po.Position = new PositionElement();
                    // Position en pixel
                    IntPoint milieu = new IntPoint(LstCube[i].contour.X + LstCube[i].contour.Width / 2, LstCube[i].contour.Y + LstCube[i].contour.Height / 2);
                    TimeSpan t = DateTime.Now - LstCube[i].DerniereVisualisation;
                    if (t.Seconds > 3)
                    {
                        po.Position.X = -1;
                        po.Position.Y = -1;
                        delete.Add(i);
                    }
                    else
                    {
                        po.Position.X = (int)(milieu.X * ratioCmParPixel[0]);
                        po.Position.Y = (int)(milieu.Y * ratioCmParPixel[1]);
                    }
                    lstpos.Add(po);
                }
                envoieListe(lstpos);
                if (delete.Count > 0)
                {
                    for(int i = delete.Count -1; i>=0;i--)
                    {
                        LstCube.RemoveAt(delete[i]);
                    }
                    Logger.GlobalLogger.debug("Suppression de " + delete.Count + " Cubes");
                }
            }
        }
Exemple #3
0
 /* Fonction Robot */
 private void mergePosition(List<PositionRobot> LstTmp)
 {
     if (LstTmp.Count == 0)
         return;
     List<PositionRobot> ListEnvoi = new List<PositionRobot>();
     for (int i = 0; i < LstTmp.Count; i++)
     {
         bool Trouve = false;
         PositionRobot tmp = LstTmp[i];
         tmp.Position.X = (int)(ratioCmParPixel[0] * tmp.Position.X);
         tmp.Position.Y = (int)(ratioCmParPixel[1] * tmp.Position.Y);
         for (int j = 0; j < LstRobot.Count; j++)
         {
             if (LstRobot[j].Identifiant == LstTmp[i].Identifiant)
             {
                 IntPoint itmp = new IntPoint((int)(tmp.Position.X), (int)(tmp.Position.Y));
                 IntPoint p = new IntPoint(LstRobot[j].Position.X, LstRobot[j].Position.Y);
                 if (p.DistanceTo(itmp) > 5) //  Sueil a 2 cm
                 {
                     LstRobot[j] = tmp;
                     ListEnvoi.Add(tmp);
                 }
                 tmp.DerniereModification = DateTime.Now;
                 Trouve = true;
                 break;
             }
         }
         if (Trouve == false)
         {
             tmp.DerniereModification = DateTime.Now;
             ListEnvoi.Add(tmp);
             LstRobot.Add(tmp);
         }
     }
     if (ListEnvoi.Count > 0)
     {
         //Logger.GlobalLogger.debug("" + ListEnvoi.Count);
         envoieListe(ListEnvoi);
     }
     for(int i = LstRobot.Count -1; i>=0;i--)
     {
         if (LstRobot[i].Position.X == -1)
             LstRobot.RemoveAt(i);
     }
 }