Processing堆叠正方形旋转循环效果复现问题求助
Processing嵌套旋转矩形效果修复方案
你代码的问题集中在旋转逻辑、边长参数设置两个部分,调整后可直接实现目标效果:
修正后的完整代码
void setup() { size(500, 500); } void draw() { rectMode(CENTER); noFill(); stroke(0); recta(); } void recta() { // 初始矩形边长设为画布可容纳的最大值 float sideLength = 400; // 每次旋转的角度 float rotateAngle = radians(10); for (int i = 0; i < 20; i++) { pushMatrix(); // 移动到画布中心 translate(250, 250); // 对当前矩形应用旋转 rotate(rotateAngle * i); // 绘制当前大小的矩形 rect(0, 0, sideLength, sideLength); popMatrix(); // 边长每次减小20 sideLength -= 20; } }
主要修改点
- 原代码旋转角度为360度,相当于无旋转,修改为每次新增10度的旋转量,每次绘制的矩形都会比上一个多转一定角度
- 原矩形初始边长仅为10,还每次减20很快就会变成负数无法正常绘制,修改为初始边长400,每次减20,20次循环后刚好归零,实现从大到小的嵌套效果
- 旋转逻辑调整到矩阵变换栈内部,仅对当前绘制的矩形生效,不会干扰全局坐标
- 把固定的描边、无填充配置放到循环外,减少冗余代码
运行上述代码即可得到你需要的嵌套旋转矩形效果。
内容的提问来源于stack exchange,提问作者ROOLLINGTOON
相关产品推荐
相关产品推荐

