在作业1中 rasterizer.cpp 的 rst::rasterizer::set_pixel 对索引需要偏移一个width.
由于frame_buf 的size是 width*height。 即最大为700*700=4900。
而源代码的索引求法是 auto ind = (height-point.y())*width + point.x(); 假设point坐标为(0,699) 即第一行最后一个, ind 将会得到结果 (700 – 0) * 700 + 699 = 4900+699。 将会造成segemaent fault.
因此需要偏移 一个width:
int x = point.x();
int y = point.y();
if (x < 0 || x >= width || //由此可以看出坐标应在[0, width) 区间中
y < 0 || y >= height) return;
auto ind = (height - y - 1) * width + x;
frame_buf[ind] = color;