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