Esempio n. 1
0
 protected override Punto CompletarPunto(Punto puntoCentro)
 {
     if (Orientacion.Equals(OrientacionesCara.Abajo))
     {
         return(puntoCentro.SumarPunto(new Punto(0, 0, Figura.PasoZ)));
     }
     else if (Orientacion.Equals(OrientacionesCara.Adelante))
     {
         return(puntoCentro.SumarPunto(new Punto(-Figura.PasoX, 0, 0)));
     }
     else if (Orientacion.Equals(OrientacionesCara.Arriba))
     {
         return(puntoCentro.SumarPunto(new Punto(0, 0, -Figura.PasoZ)));
     }
     else if (Orientacion.Equals(OrientacionesCara.Atraz))
     {
         return(puntoCentro.SumarPunto(new Punto(Figura.PasoX, 0, 0)));
     }
     else if (Orientacion.Equals(OrientacionesCara.Derecha))
     {
         return(puntoCentro.SumarPunto(new Punto(0, -Figura.PasoY, 0)));
     }
     else //if (Orientacion.Equals(OrientacionesCara.Izquierda))
     {
         return(puntoCentro.SumarPunto(new Punto(0, Figura.PasoY, 0)));
     }
 }
Esempio n. 2
0
 /// <summary>
 /// Hace anzar el dron en el eje XY en funcion de su orientacion.
 /// </summary>
 private void Avanzar()
 {
     if (Orientacion.Equals('N')) ///Norte
     {
         if (Coordenadas["Y"] < AreaPatrulla["Y"])
         {
             Coordenadas["Y"]++;
         }
     }
     else if (Orientacion.Equals('S')) ///Sur
     {
         if (Coordenadas["Y"] > 0)
         {
             Coordenadas["Y"]--;
         }
     }
     else if (Orientacion.Equals('E')) ///Este
     {
         if (Coordenadas["X"] < AreaPatrulla["X"])
         {
             Coordenadas["X"]++;
         }
     }
     else
     {
         if (Coordenadas["X"] > 0) ///Oeste
         {
             Coordenadas["X"]--;
         }
     }
 }
Esempio n. 3
0
        protected override void GenerarIndices()
        {
            this.indices = new List <int>();

            if (Orientacion.Equals(OrientacionesCara.Arriba) || Orientacion.Equals(OrientacionesCara.Abajo))
            {
                for (int indicePrimerElementoFila = 0; indicePrimerElementoFila < ((CantidadPixelesAlto - 1) * CantidadPixelesAncho); indicePrimerElementoFila += CantidadPixelesAlto)
                {
                    for (int numeroColumna = 0; numeroColumna < CantidadPixelesAncho - 1; numeroColumna++)
                    {
                        indices.Add(numeroColumna + indicePrimerElementoFila);
                        indices.Add(numeroColumna + indicePrimerElementoFila + CantidadPixelesAncho);
                        indices.Add(numeroColumna + indicePrimerElementoFila + CantidadPixelesAncho + 1);
                        indices.Add(numeroColumna + indicePrimerElementoFila + 1);
                    }
                }
            }
            else
            {
                for (int indicePrimerElementoColumna = 0; indicePrimerElementoColumna < ((CantidadPixelesAlto - 1) * CantidadPixelesAncho); indicePrimerElementoColumna += CantidadPixelesAncho)
                {
                    for (int numeroFila = 0; numeroFila < CantidadPixelesAlto - 1; numeroFila++)
                    {
                        indices.Add(numeroFila + indicePrimerElementoColumna);
                        indices.Add(numeroFila + indicePrimerElementoColumna + CantidadPixelesAlto);
                        indices.Add(numeroFila + indicePrimerElementoColumna + CantidadPixelesAlto + 1);
                        indices.Add(numeroFila + indicePrimerElementoColumna + 1);
                    }
                }
            }
        }
        protected override void CalcularExtremos()
        {
            if (Orientacion.Equals(OrientacionesCara.Izquierda))
            {
                xInicial = 0;
                xFinal   = Figura.LongitudX / 2d;
            }
            else
            {
                xInicial = Figura.LongitudX / 2d;
                xFinal   = Figura.LongitudX;
            }

            yInicial = 0;
            yFinal   = Figura.LongitudY;
            zInicial = 0;
            zFinal   = Figura.LongitudZ;

            xInicial += Figura.Posicion.X;
            xFinal   += Figura.Posicion.X;
            yInicial += Figura.Posicion.Y;
            yFinal   += Figura.Posicion.Y;
            zInicial += Figura.Posicion.Z;
            zFinal   += Figura.Posicion.Z;
        }
        private double CalcularY(double x, double z)
        {
            // El valor de y máximo depende de z
            Double yMax = (yFinal - yInicial) * (1 - ((z - zInicial) / (zFinal - zInicial)));

            // Cuanto más avanzado en x más cercano al y final
            if (Orientacion.Equals(OrientacionesCara.Izquierda))
            {
                return(yInicial + (yMax * ((x - xInicial) / (xFinal - xInicial))));
            }
            else
            {
                return(yInicial + (yMax * (1 - ((x - xInicial) / (xFinal - xInicial)))));
            }
        }
Esempio n. 6
0
        protected override void GenerarNormales()
        {
            normales = new List <Punto>();
            Boolean invertirNormal = false;
            Punto   puntoNorte     = null;
            Punto   puntoSur       = null;
            Punto   puntoEste      = null;
            Punto   puntoOeste     = null;
            Punto   puntoCentro    = null;

            if (Orientacion.Equals(OrientacionesCara.Arriba) ||
                Orientacion.Equals(OrientacionesCara.Adelante) ||
                Orientacion.Equals(OrientacionesCara.Izquierda))
            {
                invertirNormal = true;
            }

            if (Orientacion.Equals(OrientacionesCara.Arriba) || Orientacion.Equals(OrientacionesCara.Abajo))
            {
                for (int indiceFila = 0; indiceFila < CantidadPixelesAlto; indiceFila++)               // indice fila
                {
                    for (int indiceColumna = 0; indiceColumna < CantidadPixelesAncho; indiceColumna++) // indice columna
                    {
                        puntoCentro = vertices[indiceFila * CantidadPixelesAncho + indiceColumna];

                        if (indiceFila + 1 < CantidadPixelesAlto - 1) // Hay punto norte
                        {
                            puntoNorte = vertices[(indiceFila + 1) * CantidadPixelesAncho + indiceColumna];
                        }
                        else
                        {
                            puntoNorte = this.CompletarPunto(puntoCentro);
                        }

                        if (indiceFila - 1 >= 0) // Hay punto sur
                        {
                            puntoSur = vertices[(indiceFila - 1) * CantidadPixelesAncho + indiceColumna];
                        }
                        else
                        {
                            puntoSur = this.CompletarPunto(puntoCentro);
                        }

                        if (indiceColumna - 1 >= 0) // Hay punto este
                        {
                            puntoOeste = vertices[indiceFila * CantidadPixelesAncho + indiceColumna - 1];
                        }
                        else
                        {
                            puntoOeste = this.CompletarPunto(puntoCentro);
                        }

                        if (indiceColumna + 1 < CantidadPixelesAncho - 1) // Hay punto oeste
                        {
                            puntoEste = vertices[indiceFila * CantidadPixelesAncho + indiceColumna + 1];
                        }
                        else
                        {
                            puntoEste = this.CompletarPunto(puntoCentro);
                        }

                        normales.Add(Punto.CalcularNormal(puntoCentro, puntoNorte, puntoEste, puntoSur, puntoOeste, invertirNormal));
                    }
                }
            }
            else
            {
                for (int indiceColumna = 0; indiceColumna < CantidadPixelesAncho; indiceColumna++) // indice columna
                {
                    for (int indiceFila = 0; indiceFila < CantidadPixelesAlto; indiceFila++)       // indice fila
                    {
                        puntoCentro = vertices[indiceFila + (indiceColumna * CantidadPixelesAlto)];

                        if (indiceColumna + 1 < CantidadPixelesAncho - 1) // Hay punto norte
                        {
                            puntoNorte = vertices[(indiceColumna + 1) * CantidadPixelesAlto + indiceFila];
                        }
                        else
                        {
                            puntoNorte = this.CompletarPunto(puntoCentro);
                        }

                        if (indiceColumna - 1 >= 0) // Hay punto sur
                        {
                            puntoSur = vertices[(indiceColumna - 1) * CantidadPixelesAlto + indiceFila];
                        }
                        else
                        {
                            puntoSur = this.CompletarPunto(puntoCentro);
                        }

                        if (indiceFila + 1 < CantidadPixelesAlto) // Hay punto este
                        {
                            puntoEste = vertices[indiceColumna * CantidadPixelesAlto + indiceFila + 1];
                        }
                        else
                        {
                            puntoEste = this.CompletarPunto(puntoCentro);
                        }

                        if (indiceFila - 1 >= 0) // Hay punto oeste
                        {
                            puntoOeste = vertices[indiceColumna * CantidadPixelesAlto + indiceFila - 1];
                        }
                        else
                        {
                            puntoOeste = this.CompletarPunto(puntoCentro);
                        }

                        normales.Add(Punto.CalcularNormal(puntoCentro, puntoNorte, puntoEste, puntoSur, puntoOeste, invertirNormal));
                    }
                }
            }
        }
Esempio n. 7
0
        protected override void CalcularExtremos()
        {
            if (Orientacion.Equals(OrientacionesCara.Abajo))
            {
                xInicial = 0;
                xFinal   = Figura.LongitudX;
                yInicial = 0;
                yFinal   = Figura.LongitudY;
                zInicial = 0;
                zFinal   = 0;
            }
            else if (Orientacion.Equals(OrientacionesCara.Adelante))
            {
                xInicial = Figura.LongitudX;
                xFinal   = Figura.LongitudX;
                yInicial = 0;
                yFinal   = Figura.LongitudY;
                zInicial = 0;
                zFinal   = Figura.LongitudZ;
            }
            else if (Orientacion.Equals(OrientacionesCara.Arriba))
            {
                xInicial = 0;
                xFinal   = Figura.LongitudX;
                yInicial = 0;
                yFinal   = Figura.LongitudY;
                zInicial = Figura.LongitudZ;
                zFinal   = Figura.LongitudZ;
            }
            else if (Orientacion.Equals(OrientacionesCara.Atraz))
            {
                xInicial = 0;
                xFinal   = 0;
                yInicial = 0;
                yFinal   = Figura.LongitudY;
                zInicial = 0;
                zFinal   = Figura.LongitudZ;
            }
            else if (Orientacion.Equals(OrientacionesCara.Derecha))
            {
                xInicial = 0;
                xFinal   = Figura.LongitudX;
                yInicial = Figura.LongitudY;
                yFinal   = Figura.LongitudY;
                zInicial = 0;
                zFinal   = Figura.LongitudZ;
            }
            else if (Orientacion.Equals(OrientacionesCara.Izquierda))
            {
                xInicial = 0;
                xFinal   = Figura.LongitudX;
                yInicial = 0;
                yFinal   = 0;
                zInicial = 0;
                zFinal   = Figura.LongitudZ;
            }

            xInicial += Figura.Posicion.X;
            xFinal   += Figura.Posicion.X;
            yInicial += Figura.Posicion.Y;
            yFinal   += Figura.Posicion.Y;
            zInicial += Figura.Posicion.Z;
            zFinal   += Figura.Posicion.Z;
        }