Storing input for 3d shapes

Hi everyone! I am new to processing. I am trying to draw a shape and store 5 shapes before the current one, so the fade consequently (like in this example: https://processing.org/examples/storinginput.html).
(or maybe I can use some redraw function, I dunno)

But I cannot manage to combine it within my code… Can anyone help?

Here is the code:

  
int memory = 5; // the amount of stored shapes

void setup() {
  size(200, 200, P3D);
}

void draw() {
  background(204);
  
  float misha = random(200,800);
  translate(width/2, height/2);
 
  int amnt = 10; //amnt of lines
  PVector[][] pp = new PVector[amnt][amnt];
  
    for (int i = 0; i < amnt; i++) {
      float lat = map(i, 0, amnt-1, -HALF_PI, HALF_PI);
      
      for (int j = 0; j < amnt; j++) {
        float lon = map(j, 0, amnt-1, -PI, PI);
        
        int imnd = i + j * amnt;
        float r = 20 + misha; // begin radius * max radius
        
        float x = r * cos(lat) * cos(lon);
        float y = r * sin(lat) * sin(lon);
        float z = r * sin(lon);
        pp[i][j] = new PVector(x,y,z);
      }
     }
 
    for (int i = 0; i < amnt-1; i++) {
      beginShape(TRIANGLE_STRIP);
      stroke(500,20, misha); //blending colors
      noFill();
      for (int j = 0; j < amnt; j++) {
        vertex(pp[i][j].x,pp[i][j].y,pp[i][j].z);
        vertex(pp[i+1][j].x,pp[i+1][j].y,pp[i+1][j].z);
      }
      endShape();
    }
}
1 Like

If you want a global array that persists between draw loops, then you need to define your data globally, in the header like int memory. Otherwise pp is wiped out and completely recreated each time draw() runs.

1 Like

Thank you for your reply!

How could I do it in this case?

Move this line to the top line of the sketch and remove the amnt:

PVector[][] pp = new PVector[][];

Then size it in setup:

void setup() {
  size(200, 200, P3D);
  pp = new PVector[amnt][amnt];
}