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

📄 pushpopcubes.pde

📁 This is processing for java examples.
💻 PDE
字号:
/** * PushPop Cubes   * by Ira Greenberg.   *  * Array of rotating cubes creates * dynamic field patterns. Color * controlled by light sources. Example  * of pushMatrix() and popMatrix(). */// Cube class requiredfloat ang;int rows = 21;int cols = 21;int cubeCount = rows*cols;int colSpan, rowSpan;float rotspd = 2.0;Cube[] cubes = new Cube[cubeCount];float[] angs = new float[cubeCount];float[] rotvals = new float[cubeCount];void setup(){  size(640, 360, P3D);  colSpan = width/(cols-1);  rowSpan = height/(rows-1);  noStroke();   // instantiate cubes  for (int i = 0; i < cubeCount; i++){    cubes[i] = new Cube(12, 12, 6, 0, 0, 0);    /* 3 different rotation options       - 1st option: cubes each rotate uniformly       - 2nd option: cubes each rotate randomly       - 3rd option: cube columns rotate as waves       To try the different rotations, leave one        of the rotVals[i] lines uncommented below       and the other 2 commented out. */        //rotvals[i] = rotspd;    //rotvals[i] = random(-rotspd * 2, rotspd * 2);    rotvals[i] = rotspd += .01;  }}void draw(){  int cubeCounter = 0;  background(0);  fill(200);    // Set up some different colored lights  pointLight(51, 102, 255, width/3, height/2, 100);   pointLight(200, 40, 60,  width/1.5, height/2, -150);  // Raise overall light in scene   ambientLight(170, 170, 100);   // Translate, rotate and draw cubes  for (int i = 0; i < cols; i++){    for (int j = 0; j < rows; j++){      pushMatrix();      /* Translate each block.         pushmatix and popmatrix add each cube         translation to matrix, but restore         original, so each cube rotates around its         owns center */      translate(i * colSpan, j * rowSpan, -20);      //rotate each cube around y and x axes      rotateY(radians(angs[cubeCounter]));      rotateX(radians(angs[cubeCounter]));      cubes[cubeCounter].drawCube();      popMatrix();      cubeCounter++;    }  }  // Angs used in rotate function calls above  for (int i = 0; i < cubeCount; i++){    angs[i] += rotvals[i];  }}// Simple Cube class, based on Quadsclass Cube {  // Properties  int w, h, d;  int shiftX, shiftY, shiftZ;  // Constructor  Cube(int w, int h, int d, int shiftX, int shiftY, int shiftZ){    this.w = w;    this.h = h;    this.d = d;    this.shiftX = shiftX;    this.shiftY = shiftY;    this.shiftZ = shiftZ;  }  /* Main cube drawing method, which looks      more confusing than it really is. It's      just a bunch of rectangles drawn for      each cube face */  void drawCube(){        // Front face    beginShape(QUADS);    vertex(-w/2 + shiftX, -h/2 + shiftY, -d/2 + shiftZ);     vertex(w + shiftX, -h/2 + shiftY, -d/2 + shiftZ);     vertex(w + shiftX, h + shiftY, -d/2 + shiftZ);     vertex(-w/2 + shiftX, h + shiftY, -d/2 + shiftZ);     // Back face    vertex(-w/2 + shiftX, -h/2 + shiftY, d + shiftZ);     vertex(w + shiftX, -h/2 + shiftY, d + shiftZ);     vertex(w + shiftX, h + shiftY, d + shiftZ);     vertex(-w/2 + shiftX, h + shiftY, d + shiftZ);    // Left face    vertex(-w/2 + shiftX, -h/2 + shiftY, -d/2 + shiftZ);     vertex(-w/2 + shiftX, -h/2 + shiftY, d + shiftZ);     vertex(-w/2 + shiftX, h + shiftY, d + shiftZ);     vertex(-w/2 + shiftX, h + shiftY, -d/2 + shiftZ);     // Right face    vertex(w + shiftX, -h/2 + shiftY, -d/2 + shiftZ);     vertex(w + shiftX, -h/2 + shiftY, d + shiftZ);     vertex(w + shiftX, h + shiftY, d + shiftZ);     vertex(w + shiftX, h + shiftY, -d/2 + shiftZ);     // Top face    vertex(-w/2 + shiftX, -h/2 + shiftY, -d/2 + shiftZ);     vertex(w + shiftX, -h/2 + shiftY, -d/2 + shiftZ);     vertex(w + shiftX, -h/2 + shiftY, d + shiftZ);     vertex(-w/2 + shiftX, -h/2 + shiftY, d + shiftZ);     // Bottom face    vertex(-w/2 + shiftX, h + shiftY, -d/2 + shiftZ);     vertex(w + shiftX, h + shiftY, -d/2 + shiftZ);     vertex(w + shiftX, h + shiftY, d + shiftZ);     vertex(-w/2 + shiftX, h + shiftY, d + shiftZ);     endShape();   }}

⌨️ 快捷键说明

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