Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

226
Visualizações
matriz de visualización ordenada

Supongamos que tengo una cuadrícula bidimensional de píxeles (4 por 4 píxeles), y tengo una imagen del tamaño de mi boceto que se ha cortado en 16 partes. Ahora cargo las 16 partes en una matriz. Quiero mapear esta matriz en la cuadrícula 2D a su vez, para que mi imagen general se vuelva a armar correctamente. Es decir, imagen superior izquierda 0.png e imagen inferior derecha 16.png.

Simplemente no puedo encontrar la fórmula que me permita hacer esto. Por ejemplo, sé que con x+y*width puedes recorrer todos los píxeles, desde la esquina superior izquierda hasta la esquina inferior derecha, así que lo intenté. Sin *width , no encaja correctamente, con x+y*width - ArrayIndexOutOfBoundsException (seguro).

Así que pensé que necesitaba una matriz 2D, pero con images[x][y] obtengo una NullPointerException. Te adjunto una imagen de lo que estoy tratando de crear:

la cuadrícula con las imágenes cortadas – 16

Este es mi código hasta ahora, sin la matriz 2D...

 float pixelamount = 4; float pixelsize; PImage[] images = new PImage [16]; void setup() { size(1080, 1080); pixelsize = width/pixelamount; for (int i = 0; i < images.length; i++) { images[i] = loadImage(i + ".png"); } imageMode(CENTER); } void draw() { background(0); pushMatrix(); translate(pixelsize/2, pixelsize/2); for (int x = 0; x < pixelamount; x++) { for (int y = 0; y < pixelamount; y++) { pushMatrix(); translate(pixelsize*x, pixelsize*y); image(images[x+y], 0, 0, pixelsize, pixelsize); popMatrix(); } } popMatrix(); }

Como dije, en la línea image(images[x+y], 0, 0, pixelsize, pixelsize); Simplemente no entiendo bien las matemáticas. ¿Necesito una matriz 2D para resolver esto? ¿O algo totalmente diferente?

over 4 years ago · Santiago Trujillo
2 Respostas
Responde à pergunta

0

Esto debería resolverse sin matriz 2D.

Si se conocen las dimensiones del campo 4x4, entonces posiblemente el ciclo debería ejecutarse de 0 a 4, algo como esto:

 void draw() { background(0); pushMatrix(); translate(pixelsize/2, pixelsize/2); for (int x = 0; x < 4; x++) { for (int y = 0; y < 4; y++) { pushMatrix(); translate(pixelsize * x, pixelsize * y); image(images[4 * x + y], 0, 0, pixelsize, pixelsize); popMatrix(); } } popMatrix(); }
over 4 years ago · Santiago Trujillo Relatório

0

Basado en la última respuesta, este es mi código, ¡funciona perfectamente!

 float pixelamount = 4; float pixelsize; PImage[] images = new PImage [16]; void setup() { size(1080, 1080); pixelsize = width/pixelamount; for (int i = 0; i < images.length; i++) { images[i] = loadImage(i + ".png"); } imageMode(CENTER); } void draw() { background(0); pushMatrix(); translate(pixelsize/2, pixelsize/2); for (int x = 0; x < pixelamount; x++) { for (int y = 0; y < pixelamount; y++) { pushMatrix(); translate(pixelsize * x, pixelsize * y); image(images[x + y * int(pixelamount)], 0, 0, pixelsize, pixelsize); popMatrix(); } } popMatrix(); }
over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda