思路:设置正方形的中心点与边长,确定一个大的正方形,然后在大正方形内部绘制九个小正方形,并中间的小正方形涂成黑色,然后根据每个小正方形的中心点位置与边长,再在其内部绘制九个小正方形,如此递归绘制
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | void setup() { size( 900 , 900 ); } void draw() { background( 255 ); drawCarpet( 900 / 3 , 0 , 0 ); //此处900可以改成mouseX看看效果 } void drawCarpet( float sideLength, float startX, float startY) { noStroke(); for ( int i= 0 ; i< 3 ; i++) { //横三行 for ( int j= 0 ; j< 3 ; j++) { //竖三行 if (i== 1 &&j== 1 ) { //只有中间的正方形填充黑色 fill( 0 ); } else { noFill(); } rectMode(CENTER); rect(startX+sideLength/ 2 +i*sideLength, startY+sideLength/ 2 +j*sideLength, sideLength, sideLength); if (sideLength> 10 ) { //边长<10就不再绘制 drawCarpet(sideLength/ 3 , startX+i*sideLength, startY+j*sideLength); } } } } |
0 条评论。