赞
踩
(1)根据直线中点画线算法补全line函数,其中直线斜率0<k<1,并将main函数中的line函数参数补充完整; (2)当直线方程恰好经过P(x,y)和T(x,y+1)的中点M时,统一选取直线上方的T点为显示的像素点。
(1)直线两端点坐标:(100, 100)和(520,300); (2)直线颜色为红色。
程序运行结果为一条直线,具体结果如下图所示:
image.set(x, y, color)函数是绘制点的函数,参数包括x、y和color。参数x为绘制点的x坐标,参数y为绘制点的y坐标,参数color为绘制点的颜色。
中点画线算法相关知识点,请参考教材与课件或有关资料。
(1)按要求补全line函数; (2)点击窗口右下角"测评"按钮,等待测评结果,如果通过后可进行下一关任务。
开始你的任务吧,祝你成功!
- #include "tgaimage.h"
-
- const TGAColor white = TGAColor(255, 255, 255, 255);
- const TGAColor red = TGAColor(255, 0, 0, 255);
-
- void line(int x0, int y0, int x1, int y1, TGAImage &image, TGAColor color)
- {
- // Please add the code here
- /********** Begin ********/
- int b, a, d, d1, d2, x, y;
- b = x1-x0;
- a = y1-y0;
- d =2*a+b;
- d1 =2*a;
- d2 =2*a+2*b;
- y=y0;
- for(x=x0;x<x1;x++)
- {
- image.set(x,int(y+0.5),color);
- if (d < 0)
- {
- y++;
- d += d2;
- }
- else
- {
-
- d += d1;
- }
-
- }
-
-
- /********** End *********/
- }
-
- int main(int argc, char** argv)
- {
- TGAImage image(640,480, TGAImage::RGB);
- // Please add the code here
- /********** Begin ********/
- line(100,100,520,300, image, white);
- /********** End *********/
- image.flip_vertically(); // i want to have the origin at the left bottom corner of the image
- image.write_tga_file("../img_step4/test.tga");
- return 0;
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。