如何在for循环中引用先前的迭代?

时间:2018-06-02 20:33:17

标签: c for-loop

我正在编写一些代码,以便在LCD端到端绘制2条8像素长的线。我想使用for循环来做这个,但是我不知道如何将第二个的开头连接到第一个的结尾。下面的代码生成我之后的模式,但是在执行多行时非常重复:

void draw_road(){
    double angle = PI/2;
    double length = 8;
    int starting_x = 24;
    int starting_y = 48;
        double x1a = starting_x;
        double y1a = starting_y;
        double x2a = x1a + (cos(angle) * length);
        double y2a = y1a - (sin(angle) * length);
        draw_line(x1a, y1a, x2a, y2a, FG_COLOUR);
        double x1b = x2a ;
        double y1b = y2a;
        double x2b = x1b + (cos(angle-(angle/4.5)) * length);
        double y2b = y1b - (sin(angle-(angle/4.5)) * length);
        draw_line(x1b, y1b, x2b, y2b, FG_COLOUR);
}

我已尝试过以下代码,但我不认为它知道在哪里寻找[i-1]。

 void draw_road(){
        double angle = PI/2;
        double length = 8;
        int starting_x = 24;
        int starting_y = 48;
        double x1[2];
        double y1[2];
        double x2[2];
        double y2[2];
        for (int i = 0; i < 2; i++){
            x1[i] = starting_x + x2[i-1];
            y1[i] = starting_y + y2[i-1];
            x2[i] = x1[i] + (cos(angle) * length);
            y2[i] = y1[i] - (sin(angle) * length);
            draw_line(x1[i], y1[i], x2[i], y2[i], FG_COLOUR);
            angle /= 2;
        }
    }

我如何纠正这一点,以便for循环知道最后一个循环的值(特别是如果它是第一个循环)?

1 个答案:

答案 0 :(得分:2)

在第一次迭代中,您没有“前一个”位置;所以没有画线只是为了宣布起点。

围绕调用if的{​​{1}}和条件运算符区分“设置起点”和“计算下一个点”可以完成这项工作:

draw