Exemple #1
0
        private int BuscaVíaFueraDeLímites(Vía laVía)
        {
            int númeroDeProblemasDetectados = 0;

            // Retorna si el mapa no tiene límites.
            if (misLímitesDelMapa == null)
            {
                return(númeroDeProblemasDetectados);
            }

            // Busca si alguna de las coordenadas de la vía está fuera de los límites del mapa.
            foreach (Coordenadas coordenadas in laVía.Coordenadas)
            {
                if (!misLímitesDelMapa.Contains(coordenadas))
                {
                    ++númeroDeProblemasDetectados;
                    misAlertas.Add(laVía, new List <string>()
                    {
                        "A101: Vía fuera de límites del mapa."
                    });
                    break;
                }
            }

            return(númeroDeProblemasDetectados);
        }
Exemple #2
0
		public void TestContainsPoint()
		{
			PolygonF polygon = new PolygonF(new PointF[] {new PointF(0, 0), new PointF(1, 0), new PointF(1, 1), new PointF(0, 1)});
			Assert.IsTrue(polygon.Contains(new PointF(0.5f, 0.5f))); // inside
			Assert.IsFalse(polygon.Contains(new PointF(0.5f, 1.5f))); // above
			Assert.IsFalse(polygon.Contains(new PointF(0f, 1.5f))); // above

			Assert.IsTrue(polygon.Contains(new PointF(0f, 0.5f))); // left edge
			Assert.IsFalse(polygon.Contains(new PointF(1f, 0.5f))); // right edge
			Assert.IsTrue(polygon.Contains(new PointF(0.5f, 0f))); // bottom edge
			Assert.IsFalse(polygon.Contains(new PointF(0.5f, 1f))); // top edge

			Assert.IsTrue(polygon.Contains(new PointF(0f, 0f))); // bottom left corner
			Assert.IsFalse(polygon.Contains(new PointF(0f, 1f))); // top left corner
			Assert.IsFalse(polygon.Contains(new PointF(1f, 0f))); // bottom right corner
			Assert.IsFalse(polygon.Contains(new PointF(1f, 1f))); // top right corner
		}
Exemple #3
0
        public void Polygon_Contains_Point_Test()
        {
            var vertices = new[]
            {
                new Vector2(0, 0),
                new Vector2(10, 0),
                new Vector2(10, 10),
                new Vector2(0, 10)
            };

            var polygon = new PolygonF(vertices);

            Assert.IsTrue(polygon.Contains(new Vector2(5, 5)));
            Assert.IsTrue(polygon.Contains(new Vector2(0.01f, 0.01f)));
            Assert.IsTrue(polygon.Contains(new Vector2(9.99f, 9.99f)));
            Assert.IsFalse(polygon.Contains(new Vector2(-1f, -1f)));
            Assert.IsFalse(polygon.Contains(new Vector2(-11f, -11f)));
        }
        public void Polygon_Contains_Point_Test()
        {
            var vertices = new[]
            {
                new Vector2(0, 0),
                new Vector2(10, 0),
                new Vector2(10, 10),
                new Vector2(0, 10)
            };

            var polygon = new PolygonF(vertices);

            Assert.IsTrue(polygon.Contains(new Vector2(5, 5)));
            Assert.IsTrue(polygon.Contains(new Vector2(0.01f, 0.01f)));
            Assert.IsTrue(polygon.Contains(new Vector2(9.99f, 9.99f)));
            Assert.IsFalse(polygon.Contains(new Vector2(-1f, -1f)));
            Assert.IsFalse(polygon.Contains(new Vector2(-11f, -11f)));
        }
Exemple #5
0
        /// <summary>
        /// Procesa una Vía.
        /// </summary>
        /// <param name="laVía">La Vía.</param>
        /// <returns>El número de problemas detectados al procesar el elemento.</returns>
        protected override int ProcesaElemento(Vía laVía)
        {
            int númeroDeProblemasDetectados = 0;

            // Por cada ciudad, si una coordenada de la Vía está adentro de la ciudad entonces
            // se le actualiza el Indice de Ciudad.
            bool seEncontróUnaCiudad = false;

            foreach (Ciudad ciudad in ManejadorDeMapa.Ciudades)
            {
                PolygonF polígono = new PolygonF(ciudad.CoordenadasComoPuntos);
                foreach (Coordenadas coordenadas in laVía.Coordenadas)
                {
                    if (polígono.Contains(coordenadas))
                    {
                        bool cambió = laVía.ActualizaCampoIndiceDeCiudad(
                            ciudad.Indice,
                            string.Format("M100: La Vía pertenece a la Ciudad {0}.", ciudad));
                        if (cambió)
                        {
                            ++númeroDeProblemasDetectados;
                        }

                        // La Vía solo puede pertenecer a una sola ciudad.
                        // Así que nos salimos del ciclo.
                        seEncontróUnaCiudad = true;
                        break;
                    }
                }

                // La Vía solo puede pertenecer a una sola ciudad.
                // Así que nos salimos del ciclo.
                if (seEncontróUnaCiudad)
                {
                    break;
                }
            }

            // Si no se encontró una ciudad entonces hay que quitarle el campo si lo tiene.
            if (!seEncontróUnaCiudad)
            {
                bool cambió = laVía.RemueveCampoIndiceDeCiudad("M101: La vía no pertenece a ninguna ciudad.");
                if (cambió)
                {
                    ++númeroDeProblemasDetectados;
                }
            }

            return(númeroDeProblemasDetectados);
        }
Exemple #6
0
        public void TestContainsPoint2()
        {
            PolygonF polygon = new PolygonF(
                new PointF(250, 208),
                new PointF(247, 201),
                new PointF(245, 208),
                new PointF(245, 213),
                new PointF(249, 215),
                new PointF(251, 215),
                new PointF(254, 215),
                new PointF(251, 210),
                new PointF(255, 209),
                new PointF(254, 201));

            Assert.IsTrue(polygon.Contains(new PointF(249, 209)));
        }
        private int BuscaVíaFueraDeLímites(Pdi elPdi)
        {
            int númeroDeProblemasDetectados = 0;

            // Retorna si el mapa no tiene límites.
            if (misLímitesDelMapa == null)
            {
                return(númeroDeProblemasDetectados);
            }

            // Busca si el PDI está fuera de los límites del mapa.
            if (!misLímitesDelMapa.Contains(elPdi.Coordenadas))
            {
                ++númeroDeProblemasDetectados;
                misAlertas.Add(elPdi, new List <string> {
                    Properties.Recursos.A000
                });
            }

            return(númeroDeProblemasDetectados);
        }
Exemple #8
0
        public void TestContainsPoint()
        {
            PolygonF polygon = new PolygonF(new PointF[] { new PointF(0, 0), new PointF(1, 0), new PointF(1, 1), new PointF(0, 1) });

            Assert.IsTrue(polygon.Contains(new PointF(0.5f, 0.5f)));         // inside
            Assert.IsFalse(polygon.Contains(new PointF(0.5f, 1.5f)));        // above
            Assert.IsFalse(polygon.Contains(new PointF(0f, 1.5f)));          // above

            Assert.IsTrue(polygon.Contains(new PointF(0f, 0.5f)));           // left edge
            Assert.IsFalse(polygon.Contains(new PointF(1f, 0.5f)));          // right edge
            Assert.IsTrue(polygon.Contains(new PointF(0.5f, 0f)));           // bottom edge
            Assert.IsFalse(polygon.Contains(new PointF(0.5f, 1f)));          // top edge

            Assert.IsTrue(polygon.Contains(new PointF(0f, 0f)));             // bottom left corner
            Assert.IsFalse(polygon.Contains(new PointF(0f, 1f)));            // top left corner
            Assert.IsFalse(polygon.Contains(new PointF(1f, 0f)));            // bottom right corner
            Assert.IsFalse(polygon.Contains(new PointF(1f, 1f)));            // top right corner
        }
Exemple #9
0
 /// <summary>
 /// Tests to see if the given point is contained within the region of interest.
 /// </summary>
 /// <remarks>
 /// Regions of interest have no notion of coordinate system. All coordinates are inherently
 /// given relative to the image pixel space (i.e. <see cref="CoordinateSystem.Source"/>.)
 /// </remarks>
 /// <param name="point">The point to test.</param>
 /// <returns>True if the point is defined as within the region of interest; False otherwise.</returns>
 public override bool Contains(PointF point)
 {
     return(_polygon != null && _polygon.Contains(point));
 }
Exemple #10
0
        /// <summary>
        /// Procesa un PDI.
        /// </summary>
        /// <param name="elPdi">El PDI.</param>
        /// <returns>El número de problemas detectados al procesar el elemento.</returns>
        protected override int ProcesaElemento(Pdi elPdi)
        {
            // Retorna si el PDI es una ciudad.
            if (elPdi.EsCiudad)
            {
                return(0);
            }

            int númeroDeProblemasDetectados = 0;

            // Por cada ciudad, si el PDI está adentro de la ciudad entonces
            // se le actualiza el Indice de Ciudad.
            Ciudad ciudadDelPdi = null;
            Ciudad estadoDelPdi = null;

            foreach (Ciudad ciudad in ManejadorDeMapa.Ciudades)
            {
                PolygonF polígono = new PolygonF(ciudad.CoordenadasComoPuntos);
                if (polígono.Contains(elPdi.Coordenadas))
                {
                    // Tipo 0x4a representa un Estado.
                    if (ciudad.Tipo.Value.TipoPrincipal == 0x4a)
                    {
                        estadoDelPdi = ciudad;
                    }
                    else
                    {
                        // El PDI solo puede pertenecer a una sola ciudad.
                        ciudadDelPdi = ciudad;
                        break;
                    }
                }
            }
            if (ciudadDelPdi != null)
            {
                bool cambió = elPdi.ActualizaCampoIndiceDeCiudad(
                    ciudadDelPdi.Indice,
                    string.Format(Properties.Recursos.M000, ciudadDelPdi));
                if (cambió)
                {
                    ++númeroDeProblemasDetectados;
                }
            }
            else if (estadoDelPdi != null)
            {
                bool cambió = elPdi.ActualizaCampoIndiceDeCiudad(
                    estadoDelPdi.Indice,
                    string.Format(Properties.Recursos.M008, estadoDelPdi));
                if (cambió)
                {
                    ++númeroDeProblemasDetectados;
                }
            }
            else
            {
                bool cambió = elPdi.RemueveCampoIndiceDeCiudad(Properties.Recursos.M001);
                if (cambió)
                {
                    ++númeroDeProblemasDetectados;
                }
            }

            return(númeroDeProblemasDetectados);
        }
Exemple #11
0
		public void TestContainsPoint2()
		{
			PolygonF polygon = new PolygonF(
				new PointF(250, 208),
				new PointF(247, 201),
				new PointF(245, 208),
				new PointF(245, 213),
				new PointF(249, 215),
				new PointF(251, 215),
				new PointF(254, 215),
				new PointF(251, 210),
				new PointF(255, 209),
				new PointF(254, 201));
			Assert.IsTrue(polygon.Contains(new PointF(249, 209)));
		}