Exemple #1
0
        //metodo que asigna el Tiempo de Cruce de Meta cuando solo hay una lectura de un participante
        private void estimaTCM2(Resultado r)
        {
            Lectura lec = r.aLec[0];
            if (lRes.Count >= 2)
            {
                double vel=this.obtenVelMasCercano(r);
                vel=(vel<=0)?2.00:vel;
                r.tc_meta = (lec.tiempo + lec.a_dist /vel );
            }
            else
            {
                r.tc_meta = (lec.tiempo + lec.a_dist / 2); //el 2 es velocidad tipica : 2m/s
            }
               // r.tc_meta_local = r.tc_meta + r.tiempo_ini_local + r.milis_ini_local / 1000;

            r.tc_meta_local = r.tc_meta;

            this.trabajo_rea++;
        }
Exemple #2
0
        //método que estima tiempo cruce de meta (promedio de todos los tiempos, con buen orden y sin nodos desordenados)
        private void estimaTCM(Resultado r)
        {
            int numlec = r.aLec.Count - 1;
            int numlec_efe = 0;
            double res = 0;

            for (int i = 0; i < numlec; i++)
            {
                Lectura leci = r.aLec[i];
                if (leci.bdatoc == true)
                {
                    Lectura lecj = r.aLec[i + 1];
                    if (lecj.bdatoc == true && lecj.a_dist != leci.a_dist)
                    {
                        res += lecj.tms + Math.Abs((lecj.tms - leci.tms) * lecj.a_dist / (lecj.a_dist - leci.a_dist));
                        numlec_efe++;
                    }
                }
            }

            if (numlec_efe > 0)
            {
                r.tc_meta = res / numlec_efe;
            }
            else
            {
                r.tc_meta = 0;
            }

            r.tc_meta_local = r.tc_meta + r.tiempo_ini_local + r.milis_ini_local / 1000;

            this.trabajo_rea++;
        }
Exemple #3
0
        //metodo que calcula todos los tiempos involucrados y los prepara para su insercion
        private void calculoTiemposFinales(Resultado r)
        {
            r.dt_ini = GResultados.UnixTimeStampToDateTime(r.tiempo_ini_local);

            r.dt_fin = GResultados.UnixTimeStampToDateTime(Math.Truncate(r.tc_meta_local));

            r.ts_ini = (r.tiempo_ini_local + (double)r.milis_ini_local / 1000.00);

            r.sfecha_hora_ini = r.dt_ini.ToString("yyyy-MM-dd HH:mm:ss") + "." + Math.Round(r.milis_ini_local / 10.0, 0);

            r.milis_fin = (int)Math.Truncate((r.tc_meta_local - Math.Truncate(r.tc_meta_local)) * 1000);

            r.sfecha_hora_fin = r.dt_fin.ToString("yyyy-MM-dd HH:mm:ss") + "." + Math.Round(r.milis_fin / 10.0, 0);

            r.stiempo = GResultados.ConvierteUTS2String(r.tc_meta_local - r.ts_ini);
        }
Exemple #4
0
        //método que obtiene a los participantes de cada salida distintos,
        //que previamente poseen un registro en la BD
        public int obtenParDistxOleada()
        {
            this.trabajo_accion = "Obtenemos participantes";
            lRes = new List<Resultado>();
            string sql = "SELECT DISTINCT participante.id,participante.categoria,participante.id_tag,UNIX_TIMESTAMP(fecha_hora_ini_local) as tiempo_ini_local,milis_ini_local,oleadacat.oleada,participante.numero,participante.nombre FROM tags,participante,oleadacat,salida WHERE salida.oleada=oleadacat.oleada AND oleadacat.categoria=participante.categoria AND participante.id_tag=tags.id_tag ";
            MySqlCommand cmd = new MySqlCommand(sql, dbConn);
            MySqlDataReader rdr = cmd.ExecuteReader();

            while (rdr.Read())
            {
                Resultado res = new Resultado();
                res.id_participante = System.Convert.ToInt32(rdr.GetString(0));
                res.categoria = rdr.GetString(1);
                res.id_tag = rdr.GetString(2);

                res.tiempo_ini_local = System.Convert.ToInt64(rdr.GetString(3));
                res.milis_ini_local = System.Convert.ToInt16(rdr.GetString(4));
                res.oleada = rdr.GetString(5);
                res.snumero = rdr.GetString(6);
                res.nombre = rdr.GetString(7);

                res.aLec = new List<Lectura>();

                lRes.Add(res);
                this.trabajo_rea++;
            }
            rdr.Close();
            this.trabajo_tot = this.trabajo_tot_factor * lRes.Count;
            return lRes.Count;
        }
Exemple #5
0
        //metodo que obtiene la velocidad promedio del participante mas cercano en la misma categoria
        private double obtenVelMasCercano(Resultado r)
        {
            double vel = 0;
            double dist = -1;
            double[] res;

            for (int i = 0; i < lRes.Count; i++)
            {
                Resultado rb = lRes[i];
                if (rb.categoria.Equals(r.categoria) && rb.cantidad_aLec > 1 && !rb.Equals(r))
                {

                    res = this.obtenDgV(rb.aLec, r.aLec[0]);

                    if (dist == -1)
                    {
                        dist = res[0];
                        vel = res[1];

                    }
                    else if (dist > res[0])
                    {

                        dist = res[0];
                        vel = res[1];
                    }
                }
            }

            return vel;
        }