我正在编写一些代码,以便在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循环知道最后一个循环的值(特别是如果它是第一个循环)?
答案 0 :(得分:2)
在第一次迭代中,您没有“前一个”位置;所以没有画线只是为了宣布起点。
围绕调用if
的{{1}}和条件运算符区分“设置起点”和“计算下一个点”可以完成这项工作:
draw