您的位置:首页 > 其它

直线栅格化(基于 Bresenham 算法)

2013-05-14 22:39 211 查看
直线栅格化在计算机图形处理中非常常用,看了看网上的介绍比较常用的就是Bresenham 算法,搜索了下网上的算法,试了试,有的有问题,自己写了一个,测试通过。

#include <stdio.h>
#include <stdlib.h>

void LinearGrid (int x1, int y1, int x2 , int y2)
{
int dx = abs( x2 - x1 );
int dy = abs( y2 - y1 );
int x = x1;
int y = y1;
int sx = x2 > x1 ? 1 : -1;
int sy = y2 > y1 ? 1 : -1;

if (dx > dy)
{
int e = -dx;
for (int i = 0; i < dx ; i ++)
{
x += sx ;
e += 2 * dy ;
if (e >= 0)
{
y += sy ;
e -= 2 * dx ;
}

printf("[%d, %d]\n" , x, y);
}
}
else
{
int e = -dy;
for (int i = 0; i < dy ; i ++)
{
y += sy ;
e += 2 * dx ;
if (e >= 0)
{
x += sx ;
e -= 2 * dy ;
}
printf("[%d, %d]\n" , x, y);
}
}
}

void map (int x, int y)
{
for (int j = 0; j <= y ; j ++)
{
for (int i = 0; i <= x ; i ++)
{
printf("[%d, %d]" , i, j);
}
printf("\n" );
}

printf("\n\n\n" );
}

int main (int argc, char * argv[])
{
map(5, 5);
LinearGrid(3, 2, 1, 0);
}


  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: