Ejemplo n.º 1
0
        //Mise à jour Z
        internal void UpdatePointsTests_Z(ref List <BeanPoint_internal> p_points, BeanParamGenerationAutoDePointsTests p_paramGenerationPointsTest)
        {
            try
            {
                switch (p_paramGenerationPointsTest.p02_modeGenerationEnZ)
                {
                case enumMethodeGenerationValeursEnZ.altitudeConstante:
                    UpdatePointsTests_Z_constante(ref p_points, p_paramGenerationPointsTest);
                    break;

                case enumMethodeGenerationValeursEnZ.plan:
                    UpdatePointsTests_Z_NonConstante(ref p_points, p_paramGenerationPointsTest);
                    break;

                case enumMethodeGenerationValeursEnZ.paraboloideElliptique:
                    UpdatePointsTests_Z_NonConstante(ref p_points, p_paramGenerationPointsTest);
                    break;

                case enumMethodeGenerationValeursEnZ.paraboloideHyperbolique:
                    UpdatePointsTests_Z_NonConstante(ref p_points, p_paramGenerationPointsTest);
                    break;

                default:
                    throw new Exception("Méthode " + p_paramGenerationPointsTest.p02_modeGenerationEnZ + " non implémentée");
                }
            }
            catch (Exception)
            {
                throw;
            }
        }
Ejemplo n.º 2
0
        //Couverture XY
        internal List <BeanPoint_internal> GetPointsTestsXY(BeanParamGenerationAutoDePointsTests p_paramGenerationPointsTest)
        {
            List <BeanPoint_internal> v_pointsToTest = new List <BeanPoint_internal>();

            try
            {
                switch (p_paramGenerationPointsTest.p01_modeGenerationXY)
                {
                case enumMethodeGenerationPtsEnXetY.repartitionAleatoireUniforme:
                    v_pointsToTest = GetPointsTestsXY_RepartitionUniforme(p_paramGenerationPointsTest);
                    break;

                case enumMethodeGenerationPtsEnXetY.carroyageRegulierParPas:
                    v_pointsToTest = GetPointsTestsXY_RepartitionReguliere(p_paramGenerationPointsTest);
                    break;

                default:
                    throw new Exception("Méthode " + p_paramGenerationPointsTest.p01_modeGenerationXY + " non implémentée");
                }
            }
            catch (Exception)
            {
                throw;
            }
            return(v_pointsToTest);
        }
Ejemplo n.º 3
0
        private Dictionary <enumCoeffRecalage, double> RenormalisationDuPlanXY(BeanParamGenerationAutoDePointsTests p_paramGenerationPointsTest)
        {
            Dictionary <enumCoeffRecalage, double> v_coeff = new Dictionary <enumCoeffRecalage, double>();

            try
            {
                double v_origineX = p_paramGenerationPointsTest.p11_pointBasGaucheX;
                double v_origineY = p_paramGenerationPointsTest.p12_pointBasGaucheY;

                double v_centreX = ((p_paramGenerationPointsTest.p13_pointHautDroitX - p_paramGenerationPointsTest.p11_pointBasGaucheX) / 2) + p_paramGenerationPointsTest.p11_pointBasGaucheX;
                double v_centreY = ((p_paramGenerationPointsTest.p14_pointHautDroitY - p_paramGenerationPointsTest.p12_pointBasGaucheY) / 2) + p_paramGenerationPointsTest.p12_pointBasGaucheY;
                //
                double v_extensionX = Math.Abs(p_paramGenerationPointsTest.p13_pointHautDroitX - p_paramGenerationPointsTest.p11_pointBasGaucheX);
                double v_extensionY = Math.Abs(p_paramGenerationPointsTest.p14_pointHautDroitY - p_paramGenerationPointsTest.p12_pointBasGaucheY);

                double v_coeff_X = (p_paramGenerationPointsTest.p42_recalageMaxX - p_paramGenerationPointsTest.p41_recalageMinX) / v_extensionX;
                double v_coeff_Y = (p_paramGenerationPointsTest.p44_recalageMaxY - p_paramGenerationPointsTest.p43_recalageMinY) / v_extensionY;
                //
                v_coeff.Add(enumCoeffRecalage.centreX, v_centreX);
                v_coeff.Add(enumCoeffRecalage.centreY, v_centreY);
                v_coeff.Add(enumCoeffRecalage.origineX, v_origineX);
                v_coeff.Add(enumCoeffRecalage.origineY, v_origineY);
                //
                v_coeff.Add(enumCoeffRecalage.coeffRecalageY, v_coeff_Y);
                v_coeff.Add(enumCoeffRecalage.coeffRecalageX, v_coeff_X);
            }
            catch (Exception)
            {
                throw;
            }
            return(v_coeff);
        }
Ejemplo n.º 4
0
        internal List <BeanPoint_internal> GetPointsTestsXY_RepartitionReguliere(BeanParamGenerationAutoDePointsTests p_paramGenerationPointsTest)
        {
            List <BeanPoint_internal> v_pointsToTest = new List <BeanPoint_internal>();

            try
            {
                BeanPoint_internal v_point;
                double[]           v_coord;

                double v_coordX = p_paramGenerationPointsTest.p11_pointBasGaucheX;
                double v_coordY = p_paramGenerationPointsTest.p12_pointBasGaucheY;
                while (v_coordX < p_paramGenerationPointsTest.p13_pointHautDroitX)
                {
                    v_coordY = p_paramGenerationPointsTest.p12_pointBasGaucheY;
                    while (v_coordY < p_paramGenerationPointsTest.p14_pointHautDroitY)
                    {
                        v_coord    = new double[3];
                        v_coord[0] = v_coordX;
                        v_coord[1] = v_coordY;
                        v_point    = new BeanPoint_internal(v_coord, p_paramGenerationPointsTest.p10_srid);
                        v_pointsToTest.Add(v_point);
                        //
                        v_coordY += p_paramGenerationPointsTest.p32_pasEntrePointsEnM;
                    }
                    v_coordX += p_paramGenerationPointsTest.p32_pasEntrePointsEnM;
                    v_coordY  = p_paramGenerationPointsTest.p12_pointBasGaucheY;
                }
            }
            catch (Exception)
            {
                throw;
            }
            return(v_pointsToTest);
        }
Ejemplo n.º 5
0
 private void RemonteParametres()
 {
     _paramGenerationPoints = new BeanParamGenerationAutoDePointsTests();
     _paramGenerationPoints.p51_hauteurRefEnM     = Convert.ToDouble(tb_hauteurMinEnM.Text);
     _paramGenerationPoints.p31_nbrePoints        = Convert.ToInt32(tb_NbrePoints.Text);
     _paramGenerationPoints.p11_pointBasGaucheX   = Convert.ToDouble(tb_pointBasGaucheX.Text);
     _paramGenerationPoints.p12_pointBasGaucheY   = Convert.ToDouble(tb_pointBasGaucheY.Text);
     _paramGenerationPoints.p13_pointHautDroitX   = Convert.ToDouble(tb_pointHautDroitX.Text);
     _paramGenerationPoints.p14_pointHautDroitY   = Convert.ToDouble(tb_pointHautDroitY.Text);
     _paramGenerationPoints.p32_pasEntrePointsEnM = Convert.ToDouble(tb_pasSeparationEntrePoints.Text);
     _paramGenerationPoints.p32_seed = Convert.ToInt32(tb_seed.Text);
     //
     _paramGenerationPoints.p01_modeGenerationXY = (enumMethodeGenerationPtsEnXetY)Enum.Parse(typeof(enumMethodeGenerationPtsEnXetY), lb_modeGenerationXY.SelectedItem.ToString(), true);
     //
     _paramGenerationPoints.p02_modeGenerationEnZ = (enumMethodeGenerationValeursEnZ)Enum.Parse(typeof(enumMethodeGenerationValeursEnZ), lb_modeGenerationZ.SelectedItem.ToString(), true);
     //
     if (lb_srid.SelectedItem.ToString() == enumSrid.Lambert93.ToString())
     {
         _paramGenerationPoints.p10_srid = 2154;
     }
     else
     {
         throw new Exception("Méthode " + lb_srid.SelectedItem.ToString() + " non implémentée");
     }
     //
     _paramGenerationPoints.p41_recalageMinX = Convert.ToDouble(tb_recalageMinX.Text);
     _paramGenerationPoints.p42_recalageMaxX = Convert.ToDouble(tb_recalageMaxX.Text);
     _paramGenerationPoints.p43_recalageMinY = Convert.ToDouble(tb_recalageMinY.Text);
     _paramGenerationPoints.p44_recalageMaxY = Convert.ToDouble(tb_recalageMaxY.Text);
     //
     _paramGenerationPoints.p52_coeff_X = Convert.ToDouble(tb_coeffX.Text);
     _paramGenerationPoints.p53_coeff_Y = Convert.ToDouble(tb_coeffY.Text);
 }
Ejemplo n.º 6
0
 void UpdatePointsTests_Z_constante(ref List <BeanPoint_internal> p_points, BeanParamGenerationAutoDePointsTests p_paramGenerationPointsTest)
 {
     try
     {
         foreach (BeanPoint_internal v_point in p_points)
         {
             v_point.p10_coord[2] = p_paramGenerationPointsTest.p51_hauteurRefEnM;
         }
     }
     catch (Exception)
     {
         throw;
     }
 }
Ejemplo n.º 7
0
        public List <BeanPoint_internal> GetPointsTests(BeanParamGenerationAutoDePointsTests p_paramGenerationPointsTest)
        {
            List <BeanPoint_internal> v_pointsToTest = new List <BeanPoint_internal>();

            try
            {
                v_pointsToTest = GetPointsTestsXY(p_paramGenerationPointsTest);
                UpdatePointsTests_Z(ref v_pointsToTest, p_paramGenerationPointsTest);
            }
            catch (Exception)
            {
                throw;
            }
            return(v_pointsToTest);
        }
Ejemplo n.º 8
0
        internal List <BeanPoint_internal> GetPointsTestsXY_RepartitionUniforme(BeanParamGenerationAutoDePointsTests p_paramGenerationPointsTest)
        {
            List <BeanPoint_internal> v_pointsToTest = new List <BeanPoint_internal>();

            try
            {
                Random   v_random = new Random(p_paramGenerationPointsTest.p32_seed);
                double[] v_coord;
                //[Attention: nécessité de passer en int)
                int v_minX = Convert.ToInt32(Math.Round(p_paramGenerationPointsTest.p11_pointBasGaucheX, 0));
                int v_maxX = Convert.ToInt32(Math.Round(p_paramGenerationPointsTest.p13_pointHautDroitX, 0));
                int v_minY = Convert.ToInt32(Math.Round(p_paramGenerationPointsTest.p12_pointBasGaucheY, 0));
                int v_maxY = Convert.ToInt32(Math.Round(p_paramGenerationPointsTest.p14_pointHautDroitY, 0));
                //
                HashSet <string> p_codes = new HashSet <string>();
                string           p_code;
                int v_no = 0;
                for (v_no = 1; v_no <= p_paramGenerationPointsTest.p31_nbrePoints;)
                {
                    v_coord    = new double[3];
                    v_coord[0] = v_random.Next(v_minX, v_maxX);
                    v_coord[1] = v_random.Next(v_minY, v_maxY);
                    v_coord[2] = 0;
                    //
                    BeanPoint_internal v_point = new BeanPoint_internal(v_coord, p_paramGenerationPointsTest.p10_srid);
                    // p_code = FLabServices.createUtilitaires().GethCodeGeogPoint(v_coord);
                    p_code = FLabServices.createUtilitaires().GetHCodeGeogPoint(v_coord);
                    //(On évite les doublons)
                    if (!p_codes.Contains(p_code))
                    {
                        p_codes.Add(p_code);
                        v_pointsToTest.Add(v_point);
                        v_no++;
                    }
                }
            }
            catch (Exception)
            {
                throw;
            }
            return(v_pointsToTest);
        }
Ejemplo n.º 9
0
        void UpdatePointsTests_Z_NonConstante(ref List <BeanPoint_internal> p_points, BeanParamGenerationAutoDePointsTests p_paramGenerationPointsTest)
        {
            try
            {
                Dictionary <enumCoeffRecalage, double> v_coeffRecalage = RenormalisationDuPlanXY(p_paramGenerationPointsTest);
                //
                double[] v_coordRecalees;
                foreach (BeanPoint_internal v_point in p_points)
                {
                    v_coordRecalees = GetValeurXYNormalisees(v_point.p10_coord, v_coeffRecalage);
                    switch (p_paramGenerationPointsTest.p02_modeGenerationEnZ)
                    {
                    case enumMethodeGenerationValeursEnZ.plan:
                        v_point.p10_coord[2] = (v_coordRecalees[0] * p_paramGenerationPointsTest.p52_coeff_X) + (v_coordRecalees[1] * p_paramGenerationPointsTest.p53_coeff_Y) + p_paramGenerationPointsTest.p51_hauteurRefEnM;
                        break;

                    case enumMethodeGenerationValeursEnZ.paraboloideElliptique:
                        v_point.p10_coord[2] = (v_coordRecalees[0] * v_coordRecalees[0] * p_paramGenerationPointsTest.p52_coeff_X) + (v_coordRecalees[1] * v_coordRecalees[1] * p_paramGenerationPointsTest.p53_coeff_Y) + p_paramGenerationPointsTest.p51_hauteurRefEnM;
                        break;

                    case enumMethodeGenerationValeursEnZ.paraboloideHyperbolique:
                        v_point.p10_coord[2] =
                            ((
                                 ((v_coordRecalees[0] / p_paramGenerationPointsTest.p52_coeff_X) * (v_coordRecalees[0] / p_paramGenerationPointsTest.p52_coeff_X))
                                 + ((v_coordRecalees[1] / p_paramGenerationPointsTest.p53_coeff_Y) * (v_coordRecalees[1] / p_paramGenerationPointsTest.p53_coeff_Y))
                                 ) * -1)
                            + p_paramGenerationPointsTest.p51_hauteurRefEnM;
                        break;

                    default:
                        throw new Exception("Méthode " + p_paramGenerationPointsTest.p02_modeGenerationEnZ + " non implémentée.");
                    }
                }
            }
            catch (Exception)
            {
                throw;
            }
        }
Ejemplo n.º 10
0
        public void TestOrdonnancement()
        {
            double v_xMin = 1500000;
            double v_yMin = 6000000;
            //
            //double[] v_point1;
            //double[] v_point2;
            //double[] v_point3;
            Dictionary <int, double[]> v_points = new Dictionary <int, double[]>();

            bool v_renvoyerNullSiColineaire_vf;
            bool v_horaire_vf;

            ////Triangle 1
            //v_point1 = new double[2] { v_xMin + 50, v_yMin + 100 };
            //v_point2 = new double[2] { v_xMin, v_yMin };
            //v_point3 = new double[2] { v_xMin + 100, v_yMin};

            ////Triangle 2
            //v_point1 = new double[2] { v_xMin + 50, v_yMin + 100 };
            //v_point2 = new double[2] { v_xMin, v_yMin };
            //v_point3 = new double[2] { v_xMin + 100, v_yMin-50 };

            ////Triangle 3
            //v_point1 = new double[2] { v_xMin + 50, v_yMin + 100 };
            //v_point2 = new double[2] { v_xMin, v_yMin };
            //v_point3 = new double[2] { v_xMin + 100, v_yMin+500 };

            //v_points.Add(1, v_point1);
            //v_points.Add(2, v_point2);
            //v_points.Add(3, v_point3);

            //Groupe de points:

            BeanParamGenerationAutoDePointsTests v_paramGenerationPoints = new BeanParamGenerationAutoDePointsTests();

            v_paramGenerationPoints.p51_hauteurRefEnM     = 100;
            v_paramGenerationPoints.p31_nbrePoints        = 5;
            v_paramGenerationPoints.p11_pointBasGaucheX   = v_xMin;
            v_paramGenerationPoints.p12_pointBasGaucheY   = v_yMin;
            v_paramGenerationPoints.p13_pointHautDroitX   = v_xMin + v_paramGenerationPoints.p51_hauteurRefEnM;
            v_paramGenerationPoints.p14_pointHautDroitY   = v_yMin + v_paramGenerationPoints.p51_hauteurRefEnM;
            v_paramGenerationPoints.p32_pasEntrePointsEnM = 6;
            v_paramGenerationPoints.p32_seed = 13;
            List <BeanPoint_internal> v_pointsTests;

            v_pointsTests = FServicesApplicatifs.createEchantillonsTestsServices().GetPointsTests(v_paramGenerationPoints);
            int v_indice = 0;

            v_points = v_pointsTests.ToDictionary(c => v_indice++, c => c.p10_coord);
            //
            v_renvoyerNullSiColineaire_vf = true;
            v_horaire_vf = false;


            List <int> v_pointsOrdonnances;

            v_pointsOrdonnances = FServicesApplicatifs.createCalculServicesLow_testDivers().GetOrdonnancement(v_points, v_renvoyerNullSiColineaire_vf, v_horaire_vf);
            string v_sens = "hor.";

            if (!v_horaire_vf)
            {
                v_sens = "antih.";
            }

            int v_no = 1;

            foreach (int v_id in v_pointsOrdonnances)
            {
                VisuPointSuppl(v_points[v_id], "no: " + v_no + " (pt " + v_id + " " + v_sens + ")", 2);
                v_no++;
            }
            ////SpatialTrace.ShowDialog();
        }