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

时间:2022-09-16 07:54:39

1、实验目的与要求

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

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

2、实验方法

采用Bresenham算法实现

3、实验材料

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

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

4、实验结果

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

注意事项:本实验中,栅格的分辨率同实际坐标不等,注意格子单位的输出过程以及矢量坐标向格子坐标的转化。通过Bresenham算法实现完成矢量线性多边形向栅格数据的转化

5、程序源代码

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

 #include<stdio.h>
//Bresenham函数
//其中(x0,y0)是起点,(x1,y1)是终点,k是斜率,pixel是网格分辨率
void Bresenham(int x0,int y0,int x1,int y1,float k,float pixel)
{
int x,y;
float e;
e=-0.5;
x=x0;
y=y0;
for(x=x0;x<=(x1/pixel);x++)
{
e=e+k;
if(e>)
{
y++;
e=e-;
} printf("x=%d y=%d",x,y);
printf("\n");
}
} void main()
{
//调用Bresenham函数
Bresenham(,,,,1.0/3.0,0.2); }

六、运行结果

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

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

石头

2014年11月27日