Loops 加工中的径向波

Loops 加工中的径向波,loops,nested,processing,Loops,Nested,Processing,我现在有点卡住了!比如说,有一个形状的网格(嵌套为循环),我想用一个波浪来设置它的动画。波浪应该有一个偏移量。到目前为止,我能做到。目前,偏移量影响Y轴……但是我如何才能获得径向偏移量——你知道——比如时钟指针或雷达线……我真的希望偏移量从(宽度/2,高度/2)开始,然后顺时针走。以下是我的代码和我的困境: void setup() { size(600, 600); } void draw () { background(255); float tiles = 60; flo

我现在有点卡住了!比如说,有一个形状的网格(嵌套为循环),我想用一个波浪来设置它的动画。波浪应该有一个偏移量。到目前为止,我能做到。目前,偏移量影响Y轴……但是我如何才能获得径向偏移量——你知道——比如时钟指针或雷达线……我真的希望偏移量从(宽度/2,高度/2)开始,然后顺时针走。以下是我的代码和我的困境:

void setup() {
  size(600, 600);
}

void draw () {
  background(255);
  float tiles = 60;
  float tileSize = width/tiles;
  for (int x = 0; x < tiles; x++) {
    for (int y = 0; y < tiles; y++) {
      float waveOffset = map(y, 0, 60, 0, 300);      
      float sin = sin(radians(frameCount + waveOffset));
      float wave = map(sin, -1, 1, 0, tileSize);
      fill(0);
      noStroke();
      pushMatrix();
      translate(tileSize/2, tileSize/2);
      ellipse(x*tileSize, y*tileSize, wave, wave);
      popMatrix();
    }
  }
}
void setup(){
大小(600600);
}
无效提款(){
背景(255);
浮瓦=60;
浮动瓷砖尺寸=宽度/瓷砖;
对于(int x=0;x
我尝试了不同的方法——比如旋转();功能等,但我无法管理结合它!
谢谢你的帮助

现在,您正在基于sin(y)
的变换定义椭圆的大小。转换意味着它看起来像
A*sin(b*y+c)+d
,在这种情况下

  • a=tileSize/2
  • b=300/60=5
  • c=frameCount
  • d=tileSize/2
如果你想做一个不同的模式,你需要使用
sin(θ)
的变换,其中
theta
是点的“角度”(我把“角度”放在引号里,因为它实际上是从向量中心到点和一些参考向量的角度)

我建议使用这个函数

解决方案:

float waveOffset=2*(atan2(y-tiles/2,x-tiles/2));
浮点sin=sin((帧数/20.0+波偏移));
无效设置(){
大小(600600);
}
无效提款(){
背景(255);
浮瓦=60;
浮动瓷砖尺寸=宽度/瓷砖;
对于(int x=0;x
是的!就是这样——天哪——我一个人做不到。。。非常感谢你!下面我对代码做了一些小改动,请查看:
void setup() {
  size(600, 600);
}

void draw () {
  background(255);
  float tiles = 60;
  float tileSize = width/tiles;
  for (int x = 0; x < tiles; x++) {
    for (int y = 0; y < tiles; y++) {
      float waveOffset = atan2(y - tiles/2, x - tiles/2)*0.5;      
      float sin = sin((frameCount*0.05 + waveOffset));
      float wave = map(sin, -1, 1, 0, tileSize);
      fill(0);
      noStroke();
      pushMatrix();
      translate(tileSize/2, tileSize/2);
      ellipse(x*tileSize, y*tileSize, wave, wave);
      popMatrix();
    }
  }
}