|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
代码如下,是一个补线代码,输出应当是(12, 20)补线到 (40, 50);
但是devc++输出是从(17,25)开始,小熊猫c++第一次输出是(13,21),不过第二次输出就是(18,26)开始
但是用vs2010就是从(13,21)输出
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <stdint.h> // 包含int16_t的定义
#define BLACK 0
#define WHITE 255
int image[120][188]; // 假设的二维图像数组,初始化为0(即BLACK)
int Left[120] ; // 初始化Left数组为一个大值,以记录每行的最左侧点
// Bresenham的线段算法
void drawLine(int y0, int x0, int y1, int x1) {
int dx = abs(x1 - x0);
int dy = abs(y1 - y0);
int sx = x0 < x1 ? 1 : -1;
int sy = y0 < y1 ? 1 : -1;
int err = dx - dy;
int e2;
while (1) {
image[y0][x0] = BLACK;
if (x0 == x1 && y0 == y1) {
break;
}
e2 = 2 * err;
if (e2 > -dy) {
err -= dy;
x0 += sx;
}
if (e2 < dx) {
err += dx;
y0 += sy;
}
printf("(%d,%d)\n", y0, x0);
}
}
int main() {
drawLine(12, 20, 40, 50); // 使用BLACK作为线段颜色
return 0;
} |
|