protected override void GenerarNormales()
        {
            normales = new List <Punto>();
            Punto puntoNorte  = null;
            Punto puntoSur    = null;
            Punto puntoEste   = null;
            Punto puntoOeste  = null;
            Punto puntoCentro = null;

            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, false));
                }
            }
        }
        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));
                    }
                }
            }
        }