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); }
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 }
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))); }
/// <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); }
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); }
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 }
/// <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)); }
/// <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); }