通过Bresenham算法实现完成矢量线性多边形向栅格数据的转化

1、实验目的与要求

      目的:通过本次实验,完成矢量线性多边形向栅格数据的转化过程;

      要求:采用VC++6.0实现。

2、实验方法

      采用Bresenham算法实现

3、实验材料

      直线的定义:y = x/3, 起点为(0, 0),终点为(12, 4);

      网格坐标要求:网格分辨率为0.2,网格起点同直角坐标系原点相同

4、实验结果

      程序运行的结果,要依次输出栅格单元的栅格坐标

注意事项:本实验中,栅格的分辨率同实际坐标不等,注意格子单位的输出过程以及矢量坐标向格子坐标的转化。

5、程序源代码

 1 //采用Bresenham算法实现完成矢量线性多边形向栅格数据的转化过程
 2 
 3 #include<stdio.h>
 4 //Bresenham函数
 5 //其中(x0,y0)是起点,(x1,y1)是终点,k是斜率,pixel是网格分辨率
 6 void Bresenham(int x0,int y0,int x1,int y1,float k,float pixel)
 7 {
 8     int x,y;
 9     float e;
10     e=-0.5;
11     x=x0;
12     y=y0;
13     for(x=x0;x<=(x1/pixel);x++)
14     {
15         e=e+k;
16         if(e>0)
17         {
18             y++;
19             e=e-1;
20         }
21         
22         printf("x=%d y=%d",x,y);
23         printf("
");        
24     }
25 }
26 
27 void main()
28 {
29 //调用Bresenham函数
30  Bresenham(0,0,12,4,1.0/3.0,0.2);
31 
32 }

六、运行结果

特别注意:float k=1/3,这时的k是0,涉及到一个类型转换问题。必须使用float k=1.0/3.0,这里的k才是0.33333...。

                                                                                                                                                                 石头 

                                                                                                                                                                 2014年11月27日

宣言:在此记录自己学习过程中的心得体会,同时积累经验,不断提高自己! 文章未经说明均属原创,学习笔记可能有大段的引用,一般会注明参考文献。 欢迎大家留言交流。转载请注明出处。
原文地址:https://www.cnblogs.com/vegetable/p/4126731.html