digline.c
来自「Graphics Gems 源码 a collection of algorit」· C语言 代码 · 共 55 行
C
55 行
/* * Digital Line Drawing * by Paul Heckbert * from "Graphics Gems", Academic Press, 1990 *//* * digline: draw digital line from (x1,y1) to (x2,y2), * calling a user-supplied procedure at each pixel. * Does no clipping. Uses Bresenham's algorithm. * * Paul Heckbert 3 Sep 85 */#include "GGems.h"digline(x1, y1, x2, y2, dotproc)int x1, y1, x2, y2;void (*dotproc)();{ int d, x, y, ax, ay, sx, sy, dx, dy; dx = x2-x1; ax = ABS(dx)<<1; sx = SGN(dx); dy = y2-y1; ay = ABS(dy)<<1; sy = SGN(dy); x = x1; y = y1; if (ax>ay) { /* x dominant */ d = ay-(ax>>1); for (;;) { (*dotproc)(x, y); if (x==x2) return; if (d>=0) { y += sy; d -= ax; } x += sx; d += ay; } } else { /* y dominant */ d = ax-(ay>>1); for (;;) { (*dotproc)(x, y); if (y==y2) return; if (d>=0) { x += sx; d -= ay; } y += sy; d += ax; } }}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?