首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在循环中对正方形进行偏移?

如何在循环中对正方形进行偏移?
EN

Stack Overflow用户
提问于 2019-10-29 02:55:08
回答 1查看 166关注 0票数 0

我正在创建咖啡馆墙壁错觉的草图,需要帮助想出一种方法来抵消处理过程中的棋盘效应。前一行下面的行不能离它上面的行太近。基本上我也需要它看起来偏移了半个瓦片,每行下降,但随机起点。

代码语言:javascript
运行
复制
void setup(){
    size (500, 500);
    strokeWeight(3);
    stroke(127);
    tileSize = height/ROW_NUM;
    drawTiles();
}

void draw() {
}

void drawTiles() {
    for (int i=0; i<ROW_NUM; i++) {
        squareX = int(random(-tileSize, 0)); 

        int counter = 0;
        while (squareX < width) {

            if (counter%2==0) {
                fill(0);
                rect(squareX, squareY, tileSize, tileSize);
            } else {
                fill(255);
                rect(squareX, squareY, tileSize, tileSize);
            }
            squareX += tileSize;
            counter ++;
        }
        squareY += tileSize;
    }
}
EN

Stack Overflow用户

发布于 2019-10-30 00:17:57

通过使用translate来“移动坐标系”,而不是计算如何移动矩形的坐标

代码语言:javascript
运行
复制
final int rectSize = ...

void setup() {
    ...
    noLoop();
    strokeWeight(4);
    stroke(127);
}

在draw中,我们不是计算每个矩形的x/y坐标,而是从(0,0)开始“绘制一行瓷砖”,然后我们使用translate改变(0,0)的含义,将它向下移动一行,根据我们所在的行向右或向左移动一点;我们想要向右移动到第1行和第2行,然后向左移动到第3行和第4行,然后向右移动到第5行和第6行,依此类推。因此,如果(行号/2)舍入到偶数,则向左移动;如果舍入到奇数,则向右移动。

代码语言:javascript
运行
复制
void draw() {
  int steps = 4;
  for(int row=0; row < 1 + height/rectSize; row++) {
    drawTileRow();
    int step = rectSize / steps;
    if ((row / 2) % 2 == 0) {
      step = -step;
    }
    translate(step, rectSize);
  }
}

然后,您可以在drawTileRow函数中编写简单得多的代码,只需绘制从(0,0)开始到(宽度,0)结束的矩形,尽管您确实希望从-rectSize开始,并在width+rectSize结束,以补偿整个全球坐标系偏移的事实:

代码语言:javascript
运行
复制
void drawTileRow() {
  boolean negative = false;
  for(int x=-rectSize; x<width+rectSize; x+=rectSize) {
    fill(negative ? 255 : 0);
    rect(x,0,rectSize,rectSize);
    negative = !negative;
  }
}

结果是恰如其分的错综复杂。

票数 0
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58596823

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档