如何解决椭圆不展开?
我正在为一门艺术课进行一个处理项目,我的计划是制作一个音频可视化器,其中圆圈会从音频文件的振幅中出现。我的主要问题是我试图实现涟漪效应,其中圆圈在生成后会扩大并向外波纹向外延伸到窗口之外,但我所有的圆圈都保持原状。 这是我的绘图功能:
void draw(){
int n = 1000;
fft.forward(song.mix);
for (int i = 0; i <fft.specsize(); i++ ) {
z = fft.getBand(i) * 20;
if (n < 150){
stroke(colors [(int)random(0,9)]);
strokeWeight(random(50,300)); //bigger strokes towards the middle
ellipse(x,y,z,z); //basic lines and shapes
z ++;
}
else{
stroke(colors [(int)random(0,9)]);
strokeWeight(random(10));
ellipse(x,z); //basic lines and shapes
z ++;
}
}
}
我不确定我哪里出错了,因为我在增加 z,所以据我所知,每个椭圆都应该展开。
解决方法
您没有看到任何扩展,因为您只是在单个绘制调用中增加 z
,然后它被重置。但是为了看到扩展,z
必须在多个绘制周期内递增。您可以通过使用 if 语句而不是循环来做到这一点。请注意,draw 会不断被调用。
int i = -1;
void draw(){
int n = 1000;
fft.forward(song.mix);
if(++i < fft.specSize()) {
z = fft.getBand(i) * 20;
if (n < 150){
stroke(colors [(int)random(0,9)]);
strokeWeight(random(50,300)); //bigger strokes towards the middle
ellipse(x,y,z,z); //basic lines and shapes
z ++;
}else{
stroke(colors [(int)random(0,9)]);
strokeWeight(random(10));
ellipse(x,z); //basic lines and shapes
z ++;
}
}
}
我还没有测试过,但这应该会在椭圆展开时重绘。
附言如果椭圆的高度和宽度相等,则可以使用 circle(x,z)
。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。