

float a, i, j, j1, j2, j11, j21, r, r1, r2, r3, k, k1;
int x, angle = 20, t1, t2, t3; // 旋转角度
//float startValue = 1.01;
//float endValue = 1.9;
//float duration = 1000; // 持续时间以毫秒为单位
void setup() {
size(600, 600);
x = width/2;
r3=30;//中间圆的半径
stroke(0);
strokeWeight(1);
noFill();
pushMatrix(); // 保存当前的变换矩阵
}
void draw() {
background(200);
randomSeed(0);
translate(x, x); // 移动到画布中心
//完全循环一次是t1,t2,t3的最小公倍数,6442.8秒。要减小循环时间需要找到最小公倍数比较小的三个数
t1=5900;
t2=4200;
t3=5200;
//pingpangvalue设立一个函数,在一二函数间变化,第三是变化的时间
//i=1.18;//i控制曲线从曲到直的变化速率,越小越曲折。
i=pingpangvalue(1.01, 1.9, t1);
j1=0.8;//控制曲线的弯折次数,越大弯越少
j2 = pingpangvalue(0.1, 1.8, t2);
//j2 =0.8;
//r2 = 120;//曲线开始的摆动幅度。越大越大。
r2 = pingpangvalue(10, 800, t3);
k1=16;//和i的效果一样,越大越直。
for (float b=0; b#.png");//save没法用哈希标记#保存图片
}
}
float pingpangvalue(float startValue, float endValue, float duration) {
// 创建0到2之间的循环,然后减去1得到-1到1之间的循环
float t = abs((millis() % (duration * 2)) / duration - 1);
// 使用lerp进行线性插值
float value = lerp(startValue, endValue, t);
return value;
}
================================================================
做成了动画,可惜gif不能容纳太长的动画,投了视频,看看一会能不能贴上来。