将p5js草图转换为处理的javascript问题
我将p5js scetch转换为processing,因为我想生成一个mov文件。scetch基于daniel shiffman关于kadenze的教程,但我现在遇到了布尔输出的问题。如何在处理过程中编写这段p5js代码
function draw() {
for( var i = 0; i < particles.length; i++) {
if(particles[i].isDead()) {
//code
}
}
}
function Particles() {
this.isDead = function() {
var distance = p5.Vector.sub(attractor.pos, this.pos);
var d = distance.mag();
if(d < 5) {
return true;
} else {
return false;
}
}
}
首先我尝试了void,但是void没有得到输出。然后我用布尔函数尝试了类似的方法,但它也不起作用
void setup() {
//code
}
void draw () {
for (int i = 0; i < particles.length; i++) {
if(particles[i].isDead()) {
//code
}
}
}
Class Particle {
Particle() {
//code
}
boolean isDead() {
PVector distance = PVector.sub(a.location, location);
float d = distance.mag();
if(d < 5) {
return true;
} else {
return false;
}
}
}
如果有人能帮助我,那就太好了
问候马蒂亚斯
# 1 楼答案
第一个问题是,如果
isDead()
返回true
,你实际上什么都没有做。实际上,您需要将代码放入if
语句中,或者将if
语句移动到有逻辑意义的地方例如,您可以修改
display()
类中的Mover
函数,以便在Mover
死后以绿色绘制:这只是一个例子,你实际做什么取决于当
Mover
死亡时你想发生什么但即使你做了这样的改变,你也会注意到
Mover
只有在到达灰色圆圈的中间时才会死亡。这是因为isDead()
函数中的if
语句:你在测量灰色圆的中心和每个红色小圆圈的中心之间的距离。但是如果
d < 5
,你只返回true
。问题是灰色圆圈的直径是50,所以如果你想让红色的小圆圈在进入灰色圆圈时消失,你必须在计算中考虑这个直径。试着改用if(d < 30)
。我用直径除以50
得到30,然后加上5
作为小圆圈的大小。你可能需要用它来获得你想要的效果顺便说一下,您可能对
dist()
函数感兴趣,它返回两点之间的距离。更多信息可以在the reference中找到