【互动编程作业】粒子系统——粒子系统的实现

这篇博客展示了作者根据《代码本色》第4章的粒子系统内容,完成的编程作业。作业中实现了鼠标交互生成粒子系统、随机点生成、以及通过排斥力让粒子避开大圆的效果。代码利用面向对象的继承性和多态性,分别在Particle、ParticleSystem和Repeller类中实现相关功能。
摘要由CSDN通过智能技术生成

前言

在《代码本色》的第4章 粒子系统 中,主要讲到了粒子系统的实现、多态和继承实现面向对象以及通过力的作用体现自然系统。以下为第4章的内容目录:
在这里插入图片描述
针对粒子系统的实现、多态和继承实现面向对象以及通过力的作用体现自然系统,我展开了自己的习作。

关于习作

学习了《代码本色》第4章 粒子系统 的内容之后,我想要在我的习作中表现的元素有:

  1. 鼠标的交互
  2. 粒子系统的生成
  3. 随机点的生成
  4. 排斥力的体现

其中,鼠标的交互和粒子系统的生成,体现在我鼠标在界面中移动即在我鼠标位置生成粒子系统;随机点的生成体现在界面中随机生成点圈圈;排斥力体现在界面中的大圆,所有的点(包括随机生成的和粒子系统生成的)经过界面时都会绕开大圆(排斥)。
下面是效果图和具体代码实现:
在这里插入图片描述
可以看到,排斥力很明显。

Particle.pde

class Particle {
   
  PVector position;
  PVector velocity;
  PVector acceleration;
  float lifespan;
  
  float r = 6;
  float mass = 1; // Let's do something better here!

  Particle(PVector l) {
   
    acceleration = new PVector(0,0);
    velocity = new PVector(random(-1,1),random(-2,0));
    position = l.get();
    lifespan = 255.0;
  }
  
  Particle(float x, float y) {
   
    acceleration = new PVector();
    velocity = PVector.random2D();
    position = new PVector(x, y);
    lifespan = 255.0;
  }

  void run() {
   
    update();
    display();
  }

  void applyForce(PVector force) {
   
    PVector f = force.get();
    f.div(mass);   
    acceleration.add(f);
  }

  // Method to update position
  void update() {
   
    velocity.add(acceleration);
    position.add(velocity);
    acceleration.mult(0);
    lifespan -= 2.0;
  }

  // Method to display
  void display
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值