예제 #1
0
        private void Calcola(object sender, EventArgs e)
        {
            //controlla l'input dul numero di lati
            string strLlati = lLati.Text;
            string strNlati = NumeroLati.Text;

            //controllo per l'input dei dati
            if (InputCheckNLati(strNlati) || InputCheckLlati(strLlati))
            {
                DisplayAlert("Attenzione", "Il numero/lunghezza dei lati inserito non è accettato", "Ok");
            }
            else
            {
                Poligono figura = new Poligono(Convert.ToDouble(strNlati), Convert.ToDouble(strLlati));

                figura.CalcoloApotema();

                figura.CalcoloFisso();

                figura.CalcoloPerimetro();
                figura.CalcoloArea();

                //stampa per il nome del calcolo
                lblRisultatoCol1.Text = $"Risultati:\r\nArea: \r\nPerimetro: \r\nApotema: \r\nNumero fisso: \r\nNome: ";

                //stampa per i risultati
                lblRisultatoCol2.Text = $"\r\n{figura.Area:n2} cm^2\r\n{figura.Perimetro:n2} cm\r\n{figura.Apotema:n2} cm\r\n{figura.Fisso:n2}\r\n{figura.Nome()}";
            }
        }
예제 #2
0
    public void drawStar()
    {
        double arriba    = Math.PI / 2;
        double derecha   = 0;
        double izquierda = Math.PI;
        double abajo     = 3 * (Math.PI / 2);

        Poligono p1, p2, p3, p4, p5, centro;

        centro = p1 = new Poligono(5, Color.Yellow, 0, 0);
        p1.draw(0.2f, abajo);


        p1 = new Poligono(3, Color.Yellow, 0, 0.25);
        p1.draw(0.13f, arriba);
        //p1.getMatrix();

        p2 = new Poligono(3, Color.Yellow, 0.235, 0.08);
        p2.draw(0.13f, Math.PI / 10);
        //p2.getMatrix();

        p3 = new Poligono(3, Color.Yellow, -0.235, 0.08);
        p3.draw(0.13f, 2 * Math.PI / 9);
        //p3.getMatrix();

        p4 = new Poligono(3, Color.Yellow, 0.15, -0.20);
        p4.draw(0.13f, 3 * Math.PI / 8);
        //p4.getMatrix();

        p5 = new Poligono(3, Color.Yellow, -0.15, -0.2);
        p5.draw(0.13f, 3.05 * Math.PI / 5);
        //p1.getMatrix();
    }
예제 #3
0
        public int SalvarPoligono(int PoligonoId, int CamadaId, string Geojson, bool Ativo = true)
        {
            if (PoligonoId == -1)
            {
                var poligono = new Poligono()
                {
                    CamadaId = CamadaId,
                    Geojson  = Geojson,
                    Ativo    = Ativo
                };

                new PoligonoCore().Inserir(poligono);

                poligono.Geojson = poligono.Geojson.Replace("\"PoligonoId\":\"-1\"", "\"PoligonoId\":\"" + poligono.Id + "\"");

                new PoligonoCore().Alterar(poligono);

                return(poligono.Id);
            }
            else
            {
                var poligono = new PoligonoCore().RetornarPorId(PoligonoId);

                poligono.Geojson = Geojson;

                new PoligonoCore().Alterar(poligono);

                return(poligono.Id);
            }
        }
예제 #4
0
        public void Calculate(Direccion dire, Poligono poly)
        {
            if (dire == null &&
                poly == null)
            {
                Latitude  = 0;
                Longitude = 0;
                return;
            }

            if (dire != null)
            {
                Latitude  = dire.Latitud;
                Longitude = dire.Longitud;
            }

            HasPoligono = (poly != null);
            if (poly != null)
            {
                if (dire == null)
                {
                    Latitude  = poly.Centro.Y;
                    Longitude = poly.Centro.X;
                }
                Puntos = poly.ToPointFList();
                Radio  = poly.Radio;
                MinY   = poly.MinY;
                MaxY   = poly.MaxY;
                MinX   = poly.MinX;
                MaxX   = poly.MaxX;
                CalculateBounds();
            }
        }
예제 #5
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="PerimetroExclusion"></param>
        /// <param name="Metodo"></param>
        /// <returns></returns>
        public bool TriangularMalla(Poligono PerimetroExclusion, List <Linea> LineasRuptura, List <Punto3D> Puntos, TipoTriangulado Metodo = TipoTriangulado.Delaunay)
        {
            IList <Triangulo> ResTriang = new List <Triangulo>();

            int currentManagedThread = Environment.CurrentManagedThreadId;
            int processorCount       = Environment.ProcessorCount;

            TriangulacionMultiProceso TrianguladorMultiProceso = new TriangulacionMultiProceso(processorCount)
            {
                TipoTriangulado = Metodo,
                Perimetro       = PerimetroExclusion,
                LineasRuptura   = LineasRuptura,
                Puntos3D        = Puntos
            };

            TrianguladorMultiProceso.IniciarProceso();

            while (TrianguladorMultiProceso.EstadoProceso == TriangulacionMultiProceso.Estado.EnEjecucion)
            {
                System.Threading.Thread.Sleep(300);
            }

            if (TrianguladorMultiProceso.EstadoProceso == TriangulacionMultiProceso.Estado.Terminado)
            {
                _Resultado        = TrianguladorMultiProceso.Resultado.Resultado;
                _logTriangulacion = TrianguladorMultiProceso.LogMultiProceso;
                return(true);
            }
            else
            {
                //Informar de cada uno de los errores que an detenido cada uno de los procesos
                _logTriangulacion = TrianguladorMultiProceso.LogMultiProceso;
                return(false);
            }
        }
예제 #6
0
        private void btnLeerArchivo_Click(object sender, EventArgs e)
        {
            this.Cursor = Cursors.WaitCursor;
            try
            {
                OpenFileDialog directorio = new OpenFileDialog();

                if (directorio.ShowDialog() == System.Windows.Forms.DialogResult.OK)
                {
                    poligono = new Poligono(directorio.FileName);

                    GMapOverlay        polyOverlay = new GMapOverlay("polygons");
                    List <PointLatLng> points      = new List <PointLatLng>();
                    foreach (UbicacionGeografica punto in poligono.Puntos)
                    {
                        PointLatLng p = new PointLatLng(punto.Latitud, punto.Longitud);
                        points.Add(p);
                    }
                    GMapPolygon polygon = new GMapPolygon(points, "mypolygon");
                    polygon.Fill   = new SolidBrush(Color.FromArgb(50, Color.Red));
                    polygon.Stroke = new Pen(Color.Red, 1);

                    polyOverlay.Polygons.Add(polygon);
                    gmap.Overlays.Clear();
                    gmap.Overlays.Add(polyOverlay);
                    gmap.Position = new PointLatLng(poligono.Centro.Latitud, poligono.Centro.Longitud);
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            this.Cursor = Cursors.Default;
        }
예제 #7
0
파일: FrmTest.cs 프로젝트: JBPKII/Geometry
        private void Button1_Click(object sender, EventArgs e)
        {
            Poligono Pol = new Poligono()
            {
                Vertices = new List <Punto3D>()
            };

            Pol.Vertices.Add(new Punto3D(13.9617, 0.8461, 0.0));
            Pol.Vertices.Add(new Punto3D(7.4365, 7.9198, 0.0));
            Pol.Vertices.Add(new Punto3D(10.3867, 11.7687, 0.0));
            Pol.Vertices.Add(new Punto3D(23.3678, 13.2597, 0.0));
            Pol.Vertices.Add(new Punto3D(24.0542, 7.2840, 0.0));
            Pol.Vertices.Add(new Punto3D(33.7109, 4.7990, 0.0));
            Pol.Vertices.Add(new Punto3D(32.0390, -1.2920, 0.0));
            Pol.Vertices.Add(new Punto3D(20.7450, -2.4724, 0.0));

            Triangulacion Triang = new Triangulacion();

            if (Triang.TriangularPoligono(Pol, TipoTriangulado.Delaunay))
            {
                //OK
                IList <Triangulo> LstResultado = Triang.Resultado;
            }
            else
            {
                //KO
            }
        }
예제 #8
0
    public static void Main(string[] args)
    {
        Poligono pol     = new Poligono();
        Ventana  ventana = new Ventana(600, 500);

        ventana.Run();
    }
예제 #9
0
    // Start is called before the first frame update
    void Start()
    {
        //se agregan cada uno de los polignos a la lista
        Polx.Add(pol1);
        Polx.Add(pol2);
        Polx.Add(pol3);
        Polx.Add(pol4);
        Polx.Add(pol5);
        Polx.Add(pol6);
        Polx.Add(pol7);
        //se lee el archivo de texto con la informacion de los poligonos
        string       path   = "Assets/Resources/angulos.txt";
        StreamReader reader = new StreamReader(path);
        string       line   = "";

        try
        {
            while ((line = reader.ReadLine()) != null)
            {
                //print(line);
                //se crea un poligono local para luego agregarlo a la lista
                pol_agregar = new Poligono();
                //se separa la informacion del txt y se formatea para la clase
                string[] subs = line.Split(' ');
                //print(subs[0]);
                //print(subs[1]);
                //esta variable permite identificar cual es el nombre del poligono, para separarlo de los angulos
                int posicion_contador = 0;
                //se crea esta variable para darle un largo al arreglo de la cantidad de vertices de cada poligono
                int      cantidad_vertices = subs.Length - 1;
                double[] angulos_agregar   = new double[cantidad_vertices];
                int      contador_vertices = 0;
                foreach (string dato in subs)
                {
                    //si contador es 0 significa que dato es el nombre del poligono
                    if (posicion_contador == 0)
                    {
                        pol_agregar.nombre = dato;
                        posicion_contador++;
                    }
                    else
                    {
                        //se agrega cada uno de los angulos leidos en el txt a angulos_agregar
                        angulos_agregar[contador_vertices] = double.Parse(dato);
                        contador_vertices++;
                    }
                }
                //angulos_agregar es un arreglo local el cual ahora se añade a la clase local de poligono
                pol_agregar.angulos = angulos_agregar;
                //ahora el objeto poligono local se agrega a un arreglo global de poligonos
                poligonos_clase.Add(pol_agregar);
            }
        }
        catch (System.Exception e)
        {
            print(e);
        }
        ordenar_poligonos();
    }
예제 #10
0
 public static Poligono transPoligono(Poligono poligono, Matriz matriz)
 {
     foreach (Punto punto in poligono.Puntos)
     {
         transPunto(punto, matriz);
     }
     return(poligono);
 }
예제 #11
0
        public IList <Triangulo> Triangular(Poligono Perimetro, List <Linea> LineasRuptura, List <Punto3D> Puntos)
        {
            //TODO: Algoritmo triangulación Abanico
            IList <Triangulo> ResTriang = new List <Triangulo>();


            return(ResTriang);
        }
예제 #12
0
        private void Calcularbutton_Click(object sender, EventArgs e)
        {
            Poligono area = new Poligono(Convert.ToInt32(LadostextBox.Text), Convert.ToInt32(LongitudtextBox.Text));


            Poligono perimetro = new Poligono(Convert.ToInt32(LadostextBox.Text), Convert.ToInt32(LongitudtextBox.Text), Convert.ToInt32(ApotematextBox.Text));

            MessageBox.Show(perimetro.ToString());
        }
예제 #13
0
파일: Voraz.cs 프로젝트: JBPKII/Geometry
        public IList <Triangulo> Triangular(Poligono Perimetro, List <Linea> LineasRuptura, List <Punto3D> Puntos)
        {
            //TODO: Algoritmo triangulación Voraz
            IList <Triangulo> ResTriang = new List <Triangulo>();

            //https://es.wikipedia.org/wiki/Algoritmo_de_triangulaci%C3%B3n_voraz


            return(ResTriang);
        }
예제 #14
0
        private PointF[] getPointFArray(Poligono poligono)
        {
            List <PointF> points = new List <PointF>();

            foreach (Punto punto in poligono.Puntos)
            {
                points.Add(new PointF((float)punto.X, (float)punto.Y));
            }
            return(points.ToArray());
        }
예제 #15
0
        private PuntoEntrega GetNuevoPuntoEntrega(string codigoCliente, string nombreCliente)
        {
            var cliente = DaoFactory.ClienteDAO.FindById(IdClienteDefault);

            var georef = new ReferenciaGeografica
            {
                Codigo                   = codigoCliente,
                Descripcion              = nombreCliente,
                Empresa                  = Empresa,
                EsFin                    = cliente.ReferenciaGeografica.TipoReferenciaGeografica.EsFin,
                EsInicio                 = cliente.ReferenciaGeografica.TipoReferenciaGeografica.EsInicio,
                EsIntermedio             = cliente.ReferenciaGeografica.TipoReferenciaGeografica.EsIntermedio,
                InhibeAlarma             = cliente.ReferenciaGeografica.TipoReferenciaGeografica.InhibeAlarma,
                TipoReferenciaGeografica = cliente.ReferenciaGeografica.TipoReferenciaGeografica,
                Vigencia                 = new Vigencia
                {
                    Inicio = DateTime.UtcNow
                },
                Icono = cliente.ReferenciaGeografica.TipoReferenciaGeografica.Icono
            };

            var latitud  = cliente.ReferenciaGeografica.Latitude;
            var longitud = cliente.ReferenciaGeografica.Longitude;
            var posicion = GetNewDireccion(latitud, longitud);

            var poligono = new Poligono {
                Radio = 100, Vigencia = new Vigencia {
                    Inicio = DateTime.UtcNow
                }
            };

            poligono.AddPoints(new[] { new PointF((float)longitud, (float)latitud) });

            georef.AddHistoria(posicion, poligono, DateTime.UtcNow);

            DaoFactory.ReferenciaGeograficaDAO.SaveOrUpdate(georef);

            var puntoEntrega = new PuntoEntrega
            {
                Cliente              = cliente,
                Codigo               = codigoCliente,
                Descripcion          = nombreCliente,
                Telefono             = string.Empty,
                Baja                 = false,
                ReferenciaGeografica = georef,
                Nomenclado           = true,
                DireccionNomenclada  = posicion.Descripcion,
                Nombre               = nombreCliente
            };

            DaoFactory.PuntoEntregaDAO.SaveOrUpdate(puntoEntrega);

            return(puntoEntrega);
        }
예제 #16
0
 public void dibujarPoligono(Poligono poligono, Punto factorCentro)
 {
     if (poligono.Tipo_Poligono == Poligono.TipoPoligono.Abierto)
     {
         Gr.DrawLines(Lapiz, getPointFArray(poligono, factorCentro));
     }
     else
     {
         Gr.DrawPolygon(Lapiz, getPointFArray(poligono, factorCentro));
     }
 }
예제 #17
0
파일: Form1.cs 프로젝트: Kradet/Clon-Paint
        public void ReestablecerValores()
        {
            poligonoSeleccionado = null;

            objTri = null;
            objRom = null;
            objCua = null;
            objCir = null;

            click          = false;
            herramienta    = HerramientaSeleccionada.Puntero;
            lblEstado.Text = $"Herramienta: {herramienta.ToString()}";
        }
예제 #18
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="PerimetroPoligono"></param>
        /// <param name="Metodo"></param>
        /// <returns></returns>
        public bool TriangularPoligono(Poligono PerimetroPoligono, TipoTriangulado Metodo = TipoTriangulado.Delaunay)
        {
            ITriangulador Triangulador = new Trianguladores.Delaunay.Delaunay();

            if (Triangulador != null)
            {
                _Resultado = Triangulador.Triangular(PerimetroPoligono, new List <Linea>(), PerimetroPoligono.Vertices);
                return(true);
            }
            else
            {
                return(false);
            }
        }
예제 #19
0
        public IEnumerable <Geocerca> GetGeocercasFor(int empresaId, int lineaId, Dictionary <int, Direccion> direcciones, Dictionary <int, Poligono> poligonos)
        {
            var t    = new TimeElapsed();
            var sqlQ = Session.CreateSQLQuery("exec [dbo].[sp_getReferenciasGeoVigentes] @company = :company, @branch = :branch;");

            sqlQ.SetInt32("company", empresaId);
            sqlQ.SetInt32("branch", lineaId);
            sqlQ.SetResultTransformer(Transformers.AliasToBean(typeof(Geocerca)));
            var results = sqlQ.List <Geocerca>();

            STrace.Debug("DispatcherLock", string.Format("sp_getReferenciasGeoVigentes {0} en {1} segundos", results.Count(), t.getTimeElapsed().TotalSeconds));

            t = new TimeElapsed();
            foreach (var geo in results)
            {
                Direccion direccion = null;
                if (geo.DireccionId != null)
                {
                    if (direcciones.ContainsKey(geo.DireccionId.Value))
                    {
                        direccion = direcciones[geo.DireccionId.Value];
                    }
                    else
                    {
                        STrace.Error("DispatcherLock", string.Format("ERROR DIRECCION NO ENCONTRADA EN CACHE !!! {0} ({1},{2}) ", geo.DireccionId.Value, empresaId, lineaId));
                    }
                }

                Poligono poligono = null;
                if (geo.PoligonoId != null)
                {
                    if (poligonos.ContainsKey(geo.PoligonoId.Value))
                    {
                        poligono = poligonos[geo.PoligonoId.Value];
                    }
                    else
                    {
                        STrace.Error("DispatcherLock", string.Format("ERROR POLIGONO NO ENCONTRADO EN CACHE !!! {0} ({1},{2}) ", geo.PoligonoId.Value, empresaId, lineaId));
                    }
                }

                if (direccion != null || poligono != null)
                {
                    geo.Calculate(direccion, poligono);
                }
            }
            STrace.Debug("DispatcherLock", string.Format("geo.Calculate {0} en {1} segundos", results.Count(), t.getTimeElapsed().TotalSeconds));
            return(results);
        }
예제 #20
0
        private void CalcularPerimetroButton_Click(object sender, EventArgs e)
        {
            try
            {
                int      numLados  = Convert.ToInt32(NumeroLadosMaskedText.Text);
                double   longLados = Convert.ToDouble(LongitudTextBox.Text);
                Poligono poligono  = new Poligono(numLados, longLados);

                MessageBox.Show(poligono.ToString());
            }
            catch (Exception error)
            {
                MessageBox.Show(error.ToString());
            }
        }
예제 #21
0
        private void Confronta(object sender, EventArgs e)
        {
            string strNLati = NumeroLati.Text;
            string strLLati = lLati.Text;

            double Nlati = Convert.ToDouble(strNLati);
            double Llati = Convert.ToDouble(strLLati);

            Poligono figura    = new Poligono(Nlati, Llati);
            Poligono personale = new Poligono(4, 7);

            lblRisultatoCol1.Text = $"Poligo di confronto: \r\nLati: \r\nLunghezza lato: \r\n\r\nL'esito del confronto";
            lblRisultatoCol2.Text = $"\r\n{personale.NLati}\r\n{personale.LLati}\r\n\r\n{figura.Confronta(personale)}";
            DrawPrint(Nlati);
        }
예제 #22
0
        public IList <Triangulo> Triangular(Poligono Perimetro, List <Linea> LineasRuptura, List <Punto3D> Puntos)
        {
            //TODO: Algoritmo triangulación Delaunay
            IList <Triangulo> ResTriang = new List <Triangulo>();

            //Condición de Delaunay
            //Analisis.AnalisisGeometrico.PuntoCircunscrito(Triangulo,Ptest)

            //el espacio se divide en el número de procesadores de la máquina y se lanzan sucesivos thread para resolver cada una de las zonas
            //Según terminan se van uniendo y resolviendo cada una de las divisiones en función de cuando terminen



            return(ResTriang);
        }
예제 #23
0
    protected override void OnRenderFrame(FrameEventArgs e)
    {
        base.OnRenderFrame(e);
        //poligono(3, 0.5f, Color.Azure);
        casa = new Poligono(4, Color.Black, 0, 0);
        /////Pi/4 es la medida para ponerlo derecho
        casa.draw(0.5f, Math.PI / 4);
        //casa.getMatrix();


        //drawStar();


        SwapBuffers();
    }
예제 #24
0
        private ReferenciaGeografica GetNewGeoRef(Empresa empresa, Linea linea, string codigo, string descripcion, double latitud, double longitud, string codigoTipo)
        {
            var tipo = DaoFactory.TipoReferenciaGeograficaDAO.FindByCodigo(new[] { empresa.Id }, new[] { linea != null ? linea.Id : -1 }, codigoTipo);

            if (tipo == null)
            {
                ThrowProperty("TIPO_PUNTO_ENTREGA");
            }

            var puntoDeInteres = new ReferenciaGeografica
            {
                Codigo      = codigo,
                Descripcion = descripcion,
                Empresa     = empresa,
                Linea       = linea,
                TipoReferenciaGeografica = tipo,
                Vigencia = new Vigencia {
                    Inicio = DateTime.UtcNow, Fin = DateTime.UtcNow
                },
                Icono = tipo.Icono
            };

            var posicion = GetNewDireccion(latitud, longitud);

            var poligono = new Poligono {
                Radio = 50, Vigencia = new Vigencia {
                    Inicio = DateTime.UtcNow
                }
            };

            poligono.AddPoints(new[] { new PointF((float)longitud, (float)latitud) });

            puntoDeInteres.Historia.Add(new HistoriaGeoRef
            {
                ReferenciaGeografica = puntoDeInteres,
                Direccion            = posicion,
                Poligono             = poligono,
                Vigencia             = new Vigencia {
                    Inicio = DateTime.UtcNow
                }
            });

            DaoFactory.ReferenciaGeograficaDAO.SingleSaveOrUpdate(puntoDeInteres);
            STrace.Trace("QtreeReset", "PuntoEntregaBV1 2");

            return(puntoDeInteres);
        }
예제 #25
0
        public Form1()
        {
            p1 = new Poligono(new Punto(0, 0));
            p1.addPunto(new Punto(-30, 10));
            p1.addPunto(new Punto(-10, 10));
            p1.addPunto(new Punto(-10, -10));
            p1.addPunto(new Punto(-30, -10));
            p1.addPunto(new Punto(-30, 10));

            p2 = new Poligono(new Punto(0, 0));
            p2.addPunto(new Punto(-30, 10));
            p2.addPunto(new Punto(-20, 20));
            p2.addPunto(new Punto(-10, 10));

            p3 = new Poligono(new Punto(0, 0));
            p3.addPunto(new Punto(-20, 20));
            p3.addPunto(new Punto(10, 20));
            p3.addPunto(new Punto(20, 10));
            p3.addPunto(new Punto(-20, 10));

            p4 = new Poligono(new Punto(0, 0));
            p4.addPunto(new Punto(20, 10));
            p4.addPunto(new Punto(20, -10));
            p4.addPunto(new Punto(-30, -10));



            o = new Objeto(new Punto(0, 0));
            o.addPoligono(p1);
            o.addPoligono(p2);
            o.addPoligono(p3);
            o.addPoligono(p4);


            ot = new Objeto(new Punto(0, 0));
            ot.addPoligono(p1);
            ot.addPoligono(p2);
            ot.addPoligono(p3);
            ot.addPoligono(p4);


            esc = new Escenario(new Punto(0, 0));
            esc.addObj(ot);
            l = new Dibujo();
            t = new Transformacion();
            InitializeComponent();
        }
 private IList <PuntoDePoligono> ObtenerPuntosDePoligono(Poligono poligono)
 {
     DbParameter[] parameters =
     {
         new OAParameter
         {
             ParameterName = "@POLYGON_ID",
             Value         = poligono.POLYGON_ID
         },
         new OAParameter
         {
             ParameterName = "@EXTERNAL_SOURCE_ID",
             Value         = poligono.EXTERNAL_SOURCE_ID
         }
     };
     return(BaseDeDatosServicio.ExecuteQuery <PuntoDePoligono>(BaseDeDatosServicio.Esquema + ".OP_WMS_SP_GET_POINTS_BY_POLYGON", CommandType.StoredProcedure, false, parameters).ToList());
 }
예제 #27
0
        private PoligonoCollection GerarPoligonos(Decimal[] elem_info, Decimal[] ordinates, int dimensoes, int eixoLrs, bool multiplo)
        {
            PoligonoCollection poligonoCollection = new PoligonoCollection();
            int  triplet = 0;
            bool ehLrs   = eixoLrs != 0;

            while (triplet < elem_info.Length)
            {
                if (elem_info[triplet + 1] == new Decimal(1005) || elem_info[triplet + 1] == new Decimal(1003))
                {
                    try
                    {
                        Anel     anel1    = this.GerarAnel(elem_info, ordinates, dimensoes, eixoLrs, ref triplet);
                        Poligono poligono = new Poligono(ehLrs ? dimensoes - 1 : dimensoes, ehLrs);
                        if (anel1 == null)
                        {
                            throw new Exception("Falha ao ler o anel externo");
                        }
                        poligono.Aneis.Adicionar(anel1);
                        triplet += 3;
                        while (triplet < elem_info.Length && (elem_info[triplet + 1] == new Decimal(2005) || elem_info[triplet + 1] == new Decimal(2003)))
                        {
                            Anel anel2 = this.GerarAnel(elem_info, ordinates, dimensoes, eixoLrs, ref triplet);
                            if (anel2 == null)
                            {
                                throw new Exception("Falha ao ler o anel interno");
                            }
                            poligono.Aneis.Adicionar(anel2);
                            triplet += 3;
                        }
                        triplet -= 3;
                        poligonoCollection.Adicionar(poligono);
                    }
                    catch
                    {
                    }
                    if (!multiplo)
                    {
                        return(poligonoCollection);
                    }
                }
                triplet += 3;
            }
            return(poligonoCollection);
        }
예제 #28
0
        private static void AgregarReporteDeClientesEnSector(IPolygonStatisticsVista vista, PoligonoArgumento e)
        {
            if (!vista.ReporteClientesEnSector.Count.Equals(0))
            {
                return;
            }
            vista.ReporteClientesEnSector = new List <Poligono>();
            var temporal = new Poligono
            {
                POLYGON_ID = e.Poligono.POLYGON_ID
                ,
                POLYGON_TYPE = e.Poligono.POLYGON_TYPE
                ,
                POLYGON_NAME = e.Poligono.POLYGON_NAME
            };

            vista.ReporteClientesEnSector.Add(temporal);
        }
예제 #29
0
        private void SetDireccion(ReferenciaGeografica geoRef, IList <DireccionVO> nomencladas)
        {
            if (nomencladas.Count == 1)
            {
                var direccionNomenclada = nomencladas[0];

                var dir = new Direccion
                {
                    Altura       = direccionNomenclada.Altura,
                    Calle        = direccionNomenclada.Calle,
                    Descripcion  = direccionNomenclada.Direccion.Truncate(128),
                    IdCalle      = direccionNomenclada.IdPoligonal,
                    IdEntrecalle = -1,
                    IdEsquina    = direccionNomenclada.IdEsquina,
                    IdMapa       = (short)direccionNomenclada.IdMapaUrbano,
                    Latitud      = direccionNomenclada.Latitud,
                    Longitud     = direccionNomenclada.Longitud,
                    Pais         = "Argentina",
                    Partido      = direccionNomenclada.Partido,
                    Provincia    = direccionNomenclada.Provincia,
                    Vigencia     = new Vigencia {
                        Inicio = DateTime.Now
                    }
                };



                var pol = new Poligono
                {
                    Radio    = 100,
                    Vigencia = new Vigencia {
                        Inicio = DateTime.Now
                    }
                };
                pol.AddPoints(new[]
                {
                    new PointF((float)dir.Longitud,
                               (float)dir.Latitud)
                });


                geoRef.AddHistoria(dir, pol, DateTime.UtcNow);
            }
        }
예제 #30
0
        public float menorY(Objeto o)
        {
            float menor = float.MaxValue;
            float actual;

            for (int j = 0; j < o.ListaPoligonos.Count; j++)
            {
                Poligono p = o.ListaPoligonos[j];
                for (int k = 0; k < p.ListaPuntos.Count; k++)
                {
                    actual = p.ListaPuntos[k].Y + p.CentroPol.Y + o.CentroObj.Y;
                    if (actual < menor)
                    {
                        menor = actual;
                    }
                }
            }
            return(menor);
        }
 public double Resolver(double lados, double Lvalor,string Operacion)
 {
     if (Operacion.Equals("P") || Operacion.Equals("A"))
     {
         Poligono resolver = new Poligono();
         if (Operacion.Equals("P"))
         {
             return resolver.ResolverPerimetro(lados, Lvalor);
         }
         else
         {
             return resolver.ResolverArea(lados,Lvalor);
         }
     }
     return 0;
 }
예제 #32
-2
 public void CalcularAreasPoligono(Poligono poligono)
 {
     poligono.setArea((poligono.getNumeroLado()* poligono.getLadoA()* poligono.getApotema())/2);
 }
예제 #33
-2
 public void CalcularApotemaPoligono(Poligono poligono)
 {
     poligono.setAngulo(360 / poligono.getNumeroLado());
     poligono.setApotema(poligono.getLadoA()/ (2 * Math.Tan(poligono.getAngulo() / 2)));
 }
예제 #34
-2
파일: Form1.cs 프로젝트: hamlet3/hamlet
 private void btnProcesar_Click(object sender, EventArgs e)
 {
     Poligono figura = new Poligono(float.Parse(txtAltura.Text),float.Parse(txtBase.Text));
     lbTexto.Text =figura.ToString() ;
 }