# 無重力空間で回転移動するオブジェクト

objects with zero gravity - OpenProcessing

```/**
* objects with zero gravity
*
* @author aa_debdeb
* @date 2016/10/22
*/

ArrayList<Block> blocks;

void setup(){
size(640, 640, P3D);
blocks = new ArrayList<Block>();
for(int i = 0; i < 60; i++){
blocks.add(new Block());
}
}

void draw(){
background(255);
translate(width / 2, height / 2, 100);
lights();
for(Block b: blocks){
b.display();
b.update();
}
}

class Block{

PVector loc;
PVector vel;
PVector shape;
PVector angle;
color c;

Block(){
loc = new PVector(random(-width / 2, width / 2),
random(-height / 2, height / 2),
random(-height / 2, height / 2));
vel = new PVector(random(-1, 1), random(-1, 1), random(-1, 1));
vel.normalize();
vel.mult(3);
shape = new PVector(random(50, 100), random(5, 20), random(5, 20));
angle = new PVector(random(TWO_PI), random(TWO_PI), random(TWO_PI));
c = color(random(255), random(255), random(255));
}

void display(){
fill(c);
noStroke();
pushMatrix();
translate(loc.x, loc.y, loc.z);
rotateX(angle.x);
rotateY(angle.y + frameCount * 0.1);
rotateZ(angle.z);
box(shape.x, shape.y, shape.z);
popMatrix();
}

void update(){
loc.add(vel);
if(loc.x < -width / 2) loc.x += width;
if(loc.y < -height / 2) loc.y += height;
if(loc.z < -height / 2) loc.z += height;
if(loc.x > width / 2) loc.x -= width;
if(loc.y > height / 2) loc.y -= height;
if(loc.z > height / 2) loc.z -= height;
}

}
```