toxiclibs中的粒子和弹簧

2022-06-16  本文已影响0人  大龙10

书名:代码本色:用编程模拟自然系统
作者:Daniel Shiffman
译者:周晗彬
ISBN:978-7-115-36947-5
目录

5.16 toxiclibs中的粒子和弹簧

1、粒子

class Particle {
    Body body;
class Particle {
    VerletParticle2D p; 粒子对象有一个指向VerletParticle对象的引用
    Particle(Vec2D pos) {
    p = new VerletParticle2D(pos); VerletParticle对象需要一个初始位置(x坐标和y坐标)
}
void display() {
    fill(0,150);
    stroke(0);
    ellipse(p.x,p.y,16,16); 当我们在绘制粒子时,需要向VerletParticle对象询问x坐标和y坐}
}
class Particle extends VerletParticle2D {
    Particle(Vec2D loc) {
    super(loc); 调用super()函数,确保对象以正确的方式初始化
}
void display() { 我们只需要实现一个display()函数
     fill(175);
    stroke(0);
    ellipse(x,y,16,16); 从VerletParticle类中继承了x坐标和y坐标
  }
}
Particle p1 = new Particle(new Vec2D(100,20));
Particle p2 = new Particle(new Vec2D(100,180));
physics.addParticle(p1);
physics.addParticle(p2);
addParticle(VerletParticle2D particle);

2、弹簧

  除了VerletParticle类,toxiclibs还提供了一些连接粒子的弹簧类。toxiclibs有3种类型的弹簧。

  前面提到的继承和多态技术同样适用于弹簧对象的创建,创建一个弹簧对象需要传入两个VerletParticle对象,由于我们的Particle类继承自VerletParticle对象,因此VerletSpring的构造函数也接受粒子对象作为参数。以下代码展示了如何在粒子对象p1和p2之间创建一个弹性连接,该连接有指定的静止长度和弹性强度。

float len = 80; 弹簧的静止长度
float strength = 0.01; 弹簧的强度
VerletSpring2D spring=new VerletSpring2D(p1,p2,len,strength);
physics.addSpring(spring);
上一篇 下一篇

猜你喜欢

热点阅读