Esempio n. 1
0
        /// <summary>
        /// Determina si un punto esta contenido dentro de un triangulo.
        /// </summary>
        /// <see cref="http://www.dma.fi.upm.es/personal/mabellanas/tfcs/kirkpatrick/Aplicacion/algoritmos.htm#puntoInterior"/>
        /// <seealso cref="http://stackoverflow.com/questions/2049582/how-to-determine-if-a-point-is-in-a-2d-triangle"/>
        /// <param name="puntoAAveriguar">Punto que se quiere averiguar si esta dentro del triángulo.</param>
        /// <param name="punto1">Punto del triángulo.</param>
        /// <param name="punto2">Punto del triángulo</param>
        /// <param name="punto3">Punto del triángulo</param>
        /// <returns></returns>
        public static bool EsPuntoAdentroTriangulo(CoordenadasCartesianas puntoAAveriguar,
                                                   CoordenadasCartesianas punto1,
                                                   CoordenadasCartesianas punto2,
                                                   CoordenadasCartesianas punto3)
        {
            bool b1, b2, b3;

            b1 = OrientacionTiangulo(puntoAAveriguar, punto1, punto2) < 0.0f;
            b2 = OrientacionTiangulo(puntoAAveriguar, punto2, punto3) < 0.0f;
            b3 = OrientacionTiangulo(puntoAAveriguar, punto3, punto1) < 0.0f;

            return((b1 == b2) && (b2 == b3));
        }
        public void ConvertirACartesianasTest()
        {
            string strMethod  = Logger.TraceStartMethod();
            int    iDistancia = 2;

            Dictionary <CoordenadasPolares, CoordenadasCartesianas> ResultadosCorrectos = new Dictionary <CoordenadasPolares, CoordenadasCartesianas>()
            {
                { new CoordenadasPolares()
                  {
                      Distancia = iDistancia, Angulo = 0
                  }, new CoordenadasCartesianas()
                  {
                      X = 0, Y = 2
                  } },
                { new CoordenadasPolares()
                  {
                      Distancia = iDistancia, Angulo = 45
                  }, new CoordenadasCartesianas()
                  {
                      X = 1.41, Y = 1.41
                  } },
                { new CoordenadasPolares()
                  {
                      Distancia = iDistancia, Angulo = 90
                  }, new CoordenadasCartesianas()
                  {
                      X = 2, Y = 0
                  } },
                { new CoordenadasPolares()
                  {
                      Distancia = iDistancia, Angulo = 135
                  }, new CoordenadasCartesianas()
                  {
                      X = 1.41, Y = -1.41
                  } },
                { new CoordenadasPolares()
                  {
                      Distancia = iDistancia, Angulo = 180
                  }, new CoordenadasCartesianas()
                  {
                      X = 0, Y = -2
                  } },
                { new CoordenadasPolares()
                  {
                      Distancia = iDistancia, Angulo = 225
                  }, new CoordenadasCartesianas()
                  {
                      X = -1.41, Y = -1.41
                  } },
                { new CoordenadasPolares()
                  {
                      Distancia = iDistancia, Angulo = 270
                  }, new CoordenadasCartesianas()
                  {
                      X = -2, Y = 0
                  } },
                { new CoordenadasPolares()
                  {
                      Distancia = iDistancia, Angulo = 315
                  }, new CoordenadasCartesianas()
                  {
                      X = -1.41, Y =
                          1.41
                  } }
            };
            bool blResultadoMetodo = true;

            foreach (var cPolar in ResultadosCorrectos)
            {
                CoordenadasCartesianas cCartesianaCalculada = cPolar.Key.ConvertirACartesianas();
                string strMsgFormat = string.Format("{0} -> {1} = {2}",
                                                    cPolar.Key.ToString(), cCartesianaCalculada.ToString(), cPolar.Value.ToString());
                string strResultadoComparacion;

                if (cPolar.Value.X == Math.Round(cCartesianaCalculada.X, 2) && cPolar.Value.Y == Math.Round(cCartesianaCalculada.Y, 2))
                {
                    strResultadoComparacion = TestsConstants.CORRECTO;
                }
                else
                {
                    strResultadoComparacion = TestsConstants.FALLO;
                    blResultadoMetodo       = false;
                }
                Logger.Trace(TraceEventType.Information, string.Format("{0} : {1}.", strMsgFormat, strResultadoComparacion));
            }

            base.TraceResultMethod_EvaluaAssert(strMethod, blResultadoMetodo);
        }
Esempio n. 3
0
 /// <summary>
 /// Calcula la orientacion de un triángulo.
 /// </summary>
 /// <param name="punto1">Punto del triángulo.</param>
 /// <param name="punto2">Punto del triángulo</param>
 /// <param name="punto3">Punto del triángulo</param>
 /// <returns></returns>
 private static double OrientacionTiangulo(CoordenadasCartesianas punto1,
                                           CoordenadasCartesianas punto2,
                                           CoordenadasCartesianas punto3)
 {
     return((punto1.X - punto3.X) * (punto2.Y - punto3.Y) - (punto2.X - punto3.X) * (punto1.Y - punto3.Y));
 }
Esempio n. 4
0
 /// <summary>
 /// Determina la distancia entre 2 puntos.
 /// </summary>
 /// <see cref="http://www.profesorenlinea.cl/geometria/Distancia_entre_dos_puntos.html"/>
 /// <param name="punto1"></param>
 /// <param name="punto2"></param>
 /// <returns></returns>
 public static double DistanciaEntre2Puntos(CoordenadasCartesianas punto1,
                                            CoordenadasCartesianas punto2)
 {
     return(Math.Sqrt(Math.Pow(punto2.X - punto1.X, 2) + Math.Pow(punto2.Y - punto1.Y, 2)));
 }
Esempio n. 5
0
 /// <summary>
 /// Devuelve el perímetro de un triángulo.
 /// </summary>
 /// <param name="punto1">Punto del triángulo.</param>
 /// <param name="punto2">Punto del triángulo</param>
 /// <param name="punto3">Punto del triángulo</param>
 /// <returns></returns>
 public static double PerimetroTriangulo(CoordenadasCartesianas punto1,
                                         CoordenadasCartesianas punto2,
                                         CoordenadasCartesianas punto3)
 {
     return(PerimetroPoligono(punto1, punto2, punto3));
 }
 public Triangulo(CoordenadasCartesianas punto1, CoordenadasCartesianas punto2, CoordenadasCartesianas punto3)
 {
     this.Punto1 = punto1;
     this.Punto2 = punto2;
     this.Punto3 = punto3;
 }