首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >椭圆不展开吗?

椭圆不展开吗?
EN

Stack Overflow用户
提问于 2021-04-17 04:22:41
回答 1查看 28关注 0票数 1

我正在做一个艺术课的处理项目,我的计划是制作一个音频可视化工具,其中圆圈将从音频文件的振幅中出现。我的主要问题是,我试图实现一种涟漪效果,在生成后,圆圈将扩展并向外扩散,但我所有的圆圈都保持不变。下面是我的绘图函数:

代码语言:javascript
复制
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, y, z, z); //basic lines and shapes
      z ++;
    } 
    
  }

}

我不确定我在哪里出错,因为我在递增z,所以据我所知,每个椭圆都应该扩展。

EN

回答 1

Stack Overflow用户

发布于 2021-04-17 05:08:49

您没有看到任何扩展,因为您只是在单个绘制调用中递增z,然后它被重置。但为了查看扩展,z必须在多个绘制周期中递增。您可以使用if语句而不是循环来完成此操作。请注意,draw不断被调用。

代码语言:javascript
复制
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, y, z, z); //basic lines and shapes
      z ++;
    } 
  }
}

我还没有测试过它,但这应该会在椭圆展开时重新绘制它们。

附注:如果你的椭圆的高度和宽度相等,你可以使用circle(x, y, z)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67131759

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档