互动编程习作——表现随机行为及牛顿运动学

参考《代码本色》的第0~4章内容及其实例程序,针对这5章分别编写1个习作(一共5个),每个习作都有不少于2个案例参考,且必须有一定的拓展,体现随机行为及牛顿运动学;

第0章 引言

运动模拟模型——随机游走,本章主要讲解了随机性、概率和Perlin噪声
在这里插入图片描述
屏幕上随机位置出现彩色的圆,另外会有随机出现的黑色圆覆盖之前的圆,主要用到了随机函数random(),创建Walkers类,random函数定义了对象的行为规则,Walker对象既维持了自身数据,又能够执行某些动作。为了使画面上的圆分布更加均匀,设置了从中间向四周添加,每个圆出现在四个方向的概率相等。

完整代码

Walker w;

void setup() {
   
  size(500,500);
  w = new Walker();
  background(0);
}

void draw() {
   
  w.step();
  w.render();
}

//Walker类
class Walker {
   
  int x,y;
  Walker() {
   
    x = width/2;
    y = height/2;
  }
  
  void render() {
   
    noStroke();
    float t=random(1);
    if(t<0.5){
   
    int a=int(random(255));
    int b=int(random(255));
    int c=int(random(255));
    fill(a,b,c);
    ellipse(x,y,10,10);
    }
    else{
   
    fill(0);
    ellipse(x,y,12,12);
    }
  }  
  
 void step() {
       
    float r = random(1);
    if (r < 0.25) {
       
      x=250+int(random(10))*25;
    } else if (r < 0.5) {
   
      x=250-int(random(10))*25;
    } else if (r < 0.75) {
   
      y=250+int(random(10))*25;
    } else {
   
      y=250-int(random(10))*25;
    } 
    x = constrain(x,0,width-1);
    y = constrain(y,0,height-1);
  }
}

第1章 向量

这一章主要学习了有关向量的运用,包括向量的几个重要运算:加法、减法、乘法、单位化,向量运动的重要参数:速度、加速度以及相关的交互等等。
在这里插入图片描述
屏幕上随机位置生成圆,每个小球都具有一个朝向鼠标的加速度,当运动到图片边缘时被反弹,速度方向改变,但加速度方向仍朝向鼠标。给所有小球设置一个最大速度,如果这个速度设置的过小,那么很快这些小球就会全部达到这个速度并逐渐重合,

完整代码

Mover[] movers=new Mover[10];

void setup() {
   
  size(600,600);
  smooth();
  background(0);
  for (int i=0;i<movers.length;i++){
   
    movers[i]=new Mover();
  }
}

void draw() {
   
  for (int i=0;i<movers.length;i++){
   
  movers[i].update();
  movers[i].checkEdges();
  movers[i].display(); 
  }
}

//Mover类
class Mover {
   
  PVector location;
  PVector velocity;
  PVector acceleration;
  float topspeed;
  int a=int(random(255));
  int b=int(random(255)<
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值