Пример #1
0
        public bool IsPointClose(Coordonnees coordonneesPoint, double precision)
        {
            /*double differenceLatitude, differenceLongitude;
             * differenceLatitude = Math.Abs(this.Latitude - coordonneesPoint.Latitude);
             * differenceLongitude = Math.Abs(this.Longitude - coordonneesPoint.Longitude);
             *
             * if (differenceLatitude <= precision && differenceLongitude <= precision)
             * {
             *  return true;
             * }
             * else
             *  return false;*/
            double x1, y1, distance;

            x1 = base.Latitude;
            y1 = base.Longitude;

            distance = MathUtilFct.Distance2Points(coordonneesPoint.Latitude, coordonneesPoint.Longitude, x1, y1);
            if (distance <= precision)
            {
                //Console.WriteLine("Le point est proche !");
                return(true);
            }
            //Console.WriteLine("Le point est trop eloigné !");
            return(false);
        }
Пример #2
0
        public double longueurPolyline()
        {
            int    i     = 0;
            double somme = 0;

            for (i = 0; i < (CollectionDeCoordonnes.Count - 1); i++)
            {
                somme = somme + MathUtilFct.LongueurD_unSegment(this.CollectionDeCoordonnes[i].Latitude, this.CollectionDeCoordonnes[i].Longitude, this.CollectionDeCoordonnes[i + 1].Latitude, this.CollectionDeCoordonnes[i + 1].Longitude);
            }

            return(somme);
        }
Пример #3
0
        public double surfaceBoundingBox()
        {
            double valMax_X = 0, valMax_Y = 0, valMin_X, valMin_Y;
            int    i;

            for (i = 0; i < CollectionDeCoordonnes.Count; i++)
            {
                if (valMax_X < CollectionDeCoordonnes[i].Latitude)
                {
                    valMax_X = CollectionDeCoordonnes[i].Latitude;
                }
                if (valMax_Y < CollectionDeCoordonnes[i].Longitude)
                {
                    valMax_Y = CollectionDeCoordonnes[i].Longitude;
                }
            }

            valMin_X = valMax_X;
            valMin_Y = valMax_Y;
            for (i = 0; i < CollectionDeCoordonnes.Count; i++)
            {
                if (valMin_X > CollectionDeCoordonnes[i].Latitude)
                {
                    valMin_X = CollectionDeCoordonnes[i].Latitude;
                }
                if (valMin_Y > CollectionDeCoordonnes[i].Longitude)
                {
                    valMin_Y = CollectionDeCoordonnes[i].Longitude;
                }
            }

            double []   longueurCote = new double[4];
            Coordonnees coordonneesA = new Coordonnees(valMin_X, valMax_Y);
            Coordonnees coordonneesB = new Coordonnees(valMax_X, valMax_Y);
            Coordonnees coordonneesC = new Coordonnees(valMin_X, valMin_Y);
            Coordonnees coordonneesD = new Coordonnees(valMax_X, valMin_Y);

            longueurCote[0] = MathUtilFct.LongueurD_unSegment(coordonneesA.Latitude, coordonneesA.Longitude, coordonneesB.Latitude, coordonneesB.Longitude); //cote A-B
            longueurCote[1] = MathUtilFct.LongueurD_unSegment(coordonneesB.Latitude, coordonneesB.Longitude, coordonneesD.Latitude, coordonneesD.Longitude); //cote B-D
            longueurCote[2] = MathUtilFct.LongueurD_unSegment(coordonneesD.Latitude, coordonneesD.Longitude, coordonneesC.Latitude, coordonneesC.Longitude); //cote D-C
            longueurCote[3] = MathUtilFct.LongueurD_unSegment(coordonneesC.Latitude, coordonneesC.Longitude, coordonneesA.Latitude, coordonneesA.Longitude); //cote C-A

            double plusGrandCote = longueurCote[0], plusPetitCote;

            for (i = 1; i < 4; i++)
            {
                if (plusGrandCote < longueurCote[i])
                {
                    plusGrandCote = longueurCote[i];
                }
            }
            plusPetitCote = plusGrandCote;
            for (i = 0; i < 4; i++)
            {
                if (plusPetitCote > longueurCote[i])
                {
                    plusPetitCote = longueurCote[i];
                }
            }

            double surfaceBoundingBox;

            surfaceBoundingBox = plusPetitCote * plusGrandCote;

            return(surfaceBoundingBox);
        }