Processing初试

本文基于《代码本色》0-5章的内容,通过Processing实现了一系列编程习作,包括高斯分布生成随机小球、向量控制小球运动、模拟下雨场景、钟摆振动和粒子系统,展现了随机行为和牛顿力学的视觉效果。每个项目的关键代码进行了简单介绍。
摘要由CSDN通过智能技术生成

基于《代码本色》0-5章的拓展

参考《代码本色》的第0~4章内容及其实例程序,创作一组编程习作,体现随机行为及牛顿力学。

1.使用高斯分布生成随机的小球

效果图:
在这里插入图片描述
不加高斯分布时生成的随机小球效果图:
在这里插入图片描述
由此可见,高斯分布后小球会从中间慢慢向外散开的生成,效果很好看,但是代码很简单,只要将x、y坐标通过高斯随机分布计算出来就可以。
关键代码:

  //x坐标和y坐标的高斯分布
  float x = randomGaussian()*60 + width/2;  
  float y = randomGaussian()*60 + height/2; 
  float r = random(10,100); //10-100的随机半径
  ...
  fill(random(128, 255), random(0,20), random(0,50), random(0, 100)); //随机颜色填充

2.使用向量控制小球的运动

效果图:
在这里插入图片描述
参考《代码本色》的例子,每次运行后都会生成跟前一次大小不同,颜色不同的四个小球,如下:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
关键代码:
1.定义一个Ball类,用PVector对象定义位置、速度,再将半径、颜色等值,设置为随机。后面用面向对象的点语法从PVector对象中分别获取它的x变量和y变量。

class Ball {
   
  PVector position;
  PVector velocity;
  float ra = random(10,100); 
  int r = int(random(255));
  int g = int(random(255));
  int b = int(random(255));
  int a = int(random(255));
  
  Ball() {
   
    position = new PVector(random(50,200), random(50,50));
    velocity = new PVector(random(2,3),random(3,5));
  }

  void update() {
   
    position.add(velocity);
    if ((position.x > width) || (position.x < 0)) {
   
      velocity.x = velocity.x * -1;
    }
    if ((position.y > height) || (position.y < 0)) {
   
      velocity.y = velocity.y * -1;
    }
  }
  void display() {
   
    noStroke();
    fill(r,g,b);
    ellipse(position.x, position.y, ra, ra);
  }
}

2.在vectors里调用这个类里的函数。


Ball a;
Ball b;
Ball c;
Ball d;

void setup() {
   
  size(400, 400);
  a = new Ball();
  b = new Ball(
  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值