bresenham直线生成算法代码c++,要能直接运行的
时间: 2024-10-13 14:14:49 浏览: 45
Bresenham直线算法的C++实现
5星 · 资源好评率100%
Bresenham算法是一种在计算机图形学中用于绘制离散坐标系上直线的常用方法。下面是一个基本的C++代码示例,用于生成从`(x0, y0)`到`(x1, y1)`的直线:
```cpp
#include <iostream>
#include <cmath>
void printLine(int x0, int y0, int x1, int y1) {
bool steep = abs(y1 - y0) > abs(x1 - x0);
if (steep) {
std::swap(x0, y0);
std::swap(x1, y1);
}
int dx = x1 - x0;
int dy = abs(y1 - y0);
int error = dx / 2;
int y = y0;
for (int x = x0; x <= x1; ++x) {
if (steep)
std::cout << y << ' ';
else
std::cout << x << ' ';
while (error >= dy) {
y += steep ? 1 : -1;
error -= dy;
}
if (y != y0 && (y & 1) == (dy & 1)) {
error += dx;
}
y += steep ? -1 : 1;
}
std::cout << '\n';
}
int main() {
int x0, y0, x1, y1;
std::cout << "Enter start point (x0, y0): ";
std::cin >> x0 >> y0;
std::cout << "Enter end point (x1, y1): ";
std::cin >> x1 >> y1;
printLine(x0, y0, x1, y1);
return 0;
}
```
这个代码首先判断斜率是否陡峭,然后计算水平和垂直方向的误差,并逐像素移动。注意,该代码假定屏幕坐标从左上角(0,0)开始计数。
阅读全文