直线栅格化(基于 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); }
相关文章推荐
- [计算机图形学] 基于C#窗口的Bresenham直线扫描算法、种子填充法、扫描线填充法模拟软件设计(一)
- [计算机图形学] 基于C#窗口的Bresenham直线扫描算法、种子填充法、扫描线填充法模拟软件设计(二)
- 基于OpenGL的三种直线生成算法
- 基于LSD的直线提取算法
- [LIBGDX学习]LibGDX代码详解(二十四)Bresenham快速画直线算法
- 基于 Bresenham 算法画填充圆
- 基于OpenGL的三种直线生成算法
- 基于Bresenahams的画直线算法(J2ME版)
- Bresenham快速画直线算法
- Bresenham快速画直线算法
- Bresenham快速画直线算法
- 【OpenGL】直线生成算法DDA+Bresenham
- bresenham直线,画圆算法(附OpenGL代码)
- 计算机图形学 - 全斜率Bresenham直线生成算法
- 基于LSD的直线提取算法
- Bresenham 画直线算法
- 【转】Bresenham快速画直线算法
- Bresenham改进算法结合wu反走样算法画颜色渐变直线
- 直线算法(Bresenham)
- openGL-中点Bresenham绘制直线算法