⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 puff.pde

📁 This is processing for java examples.
💻 PDE
字号:
/** * Puff   * by Ira Greenberg.   *  * Series of ellipses simulating a multi-segmented  * organism, utilizing a follow the leader algorithm. * Collision detection occurs on the organism's head,  * controlling overall direction, and on the individual  * body segments, controlling body shape and jitter. */// For puff headfloat headX;float headY;float speedX = .7;float speedY = .9;// For puff bodyint cells = 1000;float[]px= new float[cells];float[]py= new float[cells];float[]radiiX = new float[cells];float[]radiiY = new float[cells];float[]angle = new float[cells];float[]frequency = new float[cells];float[]cellRadius = new float[cells];void setup(){    size(640, 360);    // Begin in the center  headX = width/2;  headY = height/2;  // Fill body arrays  for (int i=0; i< cells; i++){    radiiX[i] = random(-7, 7);     radiiY[i] = random(-4, 4);    frequency[i]= random(-9, 9);    cellRadius[i] = random(16, 30);  }  frameRate(30);}void draw(){  background(0);  noStroke();  fill(255, 255, 255, 5);  // Follow the leader  for (int i =0; i< cells; i++){    if (i==0){      px[i] = headX+sin(radians(angle[i]))*radiiX[i];      py[i] = headY+cos(radians(angle[i]))*radiiY[i];    }     else{      px[i] = px[i-1]+cos(radians(angle[i]))*radiiX[i];      py[i] = py[i-1]+sin(radians(angle[i]))*radiiY[i];      // Check collision of body      if (px[i] >= width-cellRadius[i]/2 || px[i] <= cellRadius[i]/2){        radiiX[i]*=-1;        cellRadius[i] = random(1, 40);        frequency[i]= random(-13, 13);      }      if (py[i] >= height-cellRadius[i]/2 || py[i] <= cellRadius[i]/2){        radiiY[i]*=-1;        cellRadius[i] = random(1, 40);        frequency[i]= random(-9, 9);      }    }    // Draw puff    ellipse(px[i],  py[i],  cellRadius[i],  cellRadius[i]);    // Set speed of body    angle[i]+=frequency[i];  }  // Set velocity of head  headX+=speedX;  headY+=speedY;  // Check boundary collision of head  if (headX >= width-cellRadius[0]/2 || headX <=cellRadius[0]/2){    speedX*=-1;  }  if (headY >= height-cellRadius[0]/2 || headY <= cellRadius[0]/2){    speedY*=-1;  }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -