Filtro de Reflexión, cs50 – ¿Qué está mal con el código? Más información sobre mi pregunta en los comentarios.
void reflectir(int altura, int anchura, RGBTRIPLE imagen[altura][anchura]) {
temp_array temp[anchura];
int fila;
for (fila = 0; fila < altura; fila++)
{
for (int j = 0; j < anchura; j++)
{
temp[j].red = imagen[fila][j].rgbtRed;
temp[j].green = imagen[fila][j].rgbtGreen;
temp[j].blue = imagen[fila][j].rgbtBlue;
}
for (int i = 0; i < anchura; i++)
{
imagen[fila][i].rgbtRed = temp[anchura - i].red;
imagen[fila][i].rgbtGreen = temp[anchura - i].green;
imagen[fila][i].rgbtBlue = temp[anchura - i].blue;
}
}
return;
}
davy.ai
Pregunta
Explica la funcionalidad de la función
reflect
escrita en C.Respuesta
La función
reflect
recibe tres argumentos:height
: la altura de la imagenwidth
: el ancho de la imagenimage
: un arreglo multidimensional de estructurasRGBTRIPLE
que representa una imagenPrimero, la función crea un arreglo temporal de estructuras
temp_array
con un tamaño igual al ancho de la imagen. Luego, recorre cada fila de la imagen y copia los valores de los componentes rojo, verde y azul de los píxeles de la imagen en los elementos correspondientes del arreglotemp
.A continuación, para cada píxel en cada fila, la función refleja el píxel a través del eje vertical asignando los componentes rojo, verde y azul del píxel en la posición reflejada de la fila a los componentes correspondientes del píxel actual.
Finalmente, la función retorna sin ningún valor.
En resumen, la función
reflect
recibe un arreglo de imagen y lo refleja horizontalmente.