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

📄 bouncybubbles.pde

📁 This is processing for java examples.
💻 PDE
字号:
/** * Bouncy Bubbles.  * Based on code from Keith Peters (www.bit-101.com).  *  * Multiple-object collision. */  int numBalls = 12;float spring = 0.05;float gravity = 0.03;float friction = -0.9;Ball[] balls = new Ball[numBalls];void setup() {  size(640, 200);  noStroke();  smooth();  for (int i = 0; i < numBalls; i++) {    balls[i] = new Ball(random(width), random(height), random(20, 40), i, balls);  }}void draw() {  background(0);  for (int i = 0; i < numBalls; i++) {    balls[i].collide();    balls[i].move();    balls[i].display();    }}class Ball {  float x, y;  float diameter;  float vx = 0;  float vy = 0;  int id;  Ball[] others;   Ball(float xin, float yin, float din, int idin, Ball[] oin) {    x = xin;    y = yin;    diameter = din;    id = idin;    others = oin;  }     void collide() {    for (int i = id + 1; i < numBalls; i++) {      float dx = others[i].x - x;      float dy = others[i].y - y;      float distance = sqrt(dx*dx + dy*dy);      float minDist = others[i].diameter/2 + diameter/2;      if (distance < minDist) {         float angle = atan2(dy, dx);        float targetX = x + cos(angle) * minDist;        float targetY = y + sin(angle) * minDist;        float ax = (targetX - others[i].x) * spring;        float ay = (targetY - others[i].y) * spring;        vx -= ax;        vy -= ay;        others[i].vx += ax;        others[i].vy += ay;      }    }     }    void move() {    vy += gravity;    x += vx;    y += vy;    if (x + diameter/2 > width) {      x = width - diameter/2;      vx *= friction;     }    else if (x - diameter/2 < 0) {      x = diameter/2;      vx *= friction;    }    if (y + diameter/2 > height) {      y = height - diameter/2;      vy *= friction;     }     else if (y - diameter/2 < 0) {      y = diameter/2;      vy *= friction;    }  }    void display() {    fill(255, 204);    ellipse(x, y, diameter, diameter);  }}

⌨️ 快捷键说明

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