收缩螺旋方块 - 处理
Shrinking Spiral Square - Processing
我正在尝试创建一个由 20 个 500x500px 正方形组成且位于 600x600px 屏幕尺寸中间的图案。每个都稍微小一点,旋转 1o,每个的 alpha 值为 40。我附上了一张图片,它需要看起来像什么。我不知道如何开始,可能需要很多帮助。提前致谢。
在循环中使用函数 rect
绘制矩形。
使用 alpha 通道设置填充颜色。由于默认的 belnd 模式是 BLEND
,对象是 blendend。这意味着,如果在同一个地方绘制更多的对象,那么场景将在这部分变得更加饱和。
使用 scale
and rotate
to consecutively change the model matrix, but reset the model matrix at the begin of each loop iteration by resetMatrix
.
旋转角度的量不是线性增加,而是随着指数i
的增加而增加。
void setup(){
size(500,500);
}
float angle_degree = 1.1;
float scale_percent = 3.7;
float size = 400;
void draw() {
background(255);
stroke(0);
fill(0,0,255,40);
float current_ang = 0;
float current_scale = 1.0;
for( int i=0;i < 20; ++i ) {
resetMatrix();
translate(width/2, height/2);
scale(current_scale);
rotate(current_ang);
rect(-size/2, -size/2, size, size);
current_scale -= scale_percent / 100.0;
current_ang -= i * angle_degree * PI/180.0;
}
}
预览:
我正在尝试创建一个由 20 个 500x500px 正方形组成且位于 600x600px 屏幕尺寸中间的图案。每个都稍微小一点,旋转 1o,每个的 alpha 值为 40。我附上了一张图片,它需要看起来像什么。我不知道如何开始,可能需要很多帮助。提前致谢。
在循环中使用函数 rect
绘制矩形。
使用 alpha 通道设置填充颜色。由于默认的 belnd 模式是 BLEND
,对象是 blendend。这意味着,如果在同一个地方绘制更多的对象,那么场景将在这部分变得更加饱和。
使用 scale
and rotate
to consecutively change the model matrix, but reset the model matrix at the begin of each loop iteration by resetMatrix
.
旋转角度的量不是线性增加,而是随着指数i
的增加而增加。
void setup(){
size(500,500);
}
float angle_degree = 1.1;
float scale_percent = 3.7;
float size = 400;
void draw() {
background(255);
stroke(0);
fill(0,0,255,40);
float current_ang = 0;
float current_scale = 1.0;
for( int i=0;i < 20; ++i ) {
resetMatrix();
translate(width/2, height/2);
scale(current_scale);
rotate(current_ang);
rect(-size/2, -size/2, size, size);
current_scale -= scale_percent / 100.0;
current_ang -= i * angle_degree * PI/180.0;
}
}
预览: