查看原文
其他

GIF动图系列-Test38

2016-01-08 Wenzy InsLab

发生特殊事件,于是在特殊时刻写了这一篇.....

言归正传,这期的生成过程并不重要,所以一张动图足以说明问题。


不难发现,图案是由两个作圆周运动的点,相连而成的。区别仅仅是半径,以及运行速率有差异。

如果改变更多的变量会发生什么?

看看下面的图形~


思路浅析

上面的图形可能会超出某些人的想象,它们仅仅是由两个作椭圆运动的点相连而成的,因此生成原理与动图是完全一样。并且在同一段代码中,便可衍生出所有效果。你只需要修改其中的 6 个核心变量。

  • 点 A 的运动速率
  • 点 A 在 x 轴的运动范围
  • 点 A 在 y 轴的运动范围
  • 点 B 的运动速率
  • 点 B 在 x 轴的运动范围
  • 点 B 在 y 轴的运动范围

参数设定好后,程序会将AB两点用半透明的直线相连,残留的轨迹就会生成图形。

源代码

  • 代码如下

float aX,aY,bX,bY,angleA,angleB,speedA,speedB,aXR,aYR,bXR,bYR;


color c;


void setup(){

size(700,700);

background(0);

speedA = 0.025;

speedB = 0.006;

aXR = 320;

aYR = 320;

bXR = 320;

bYR = 80;

}


void draw(){

translate(width/2,height/2);

angleA += speedA;

angleB += speedB;

aX = cos(angleA) * aXR;

aY = sin(angleA) * aYR;

bX = cos(angleB) * bXR;

bY = sin(angleB) * bYR;

c = color(255,50);

stroke(c);

line(aX, aY, bX, bY);

}


void mousePressed(){

saveFrame(frameCount + " speedA-" + speedA + " speedB-" + speedB + " aXR-"+aXR + " aYR-"+aYR + " bXR-"+bXR + " bYR-"+bYR +".png");

}

  • 点击鼠标即能保存图案,同时关键的6个数值也会保存在文件名中,方便复原代码

  • 若想更直观地了解生成过程,可将以下代码拷贝到 processing 中

Gif Tips

  • 这是典型从法则本身出发的生成思路
  • 寻找简洁有力的表达式,就能“以一敌百”,一劳永逸。懒人的最佳选择~~

点击阅读原文传送到 openProcessing


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存