easyx库绘制bresenham直线

简介: easyx库绘制bresenham直线
#include <graphics.h>
// 使用 Bresenham 算法绘制直线
void Bresenham(int x0, int y0, int x1, int y1) {
    putpixel(x0, y0, WHITE);  // 绘制起始点
    int dx = x1 - x0;        // 计算横坐标差值的绝对值
    int dy = y1 - y0;        // 计算纵坐标差值的绝对值
    double k = (double)dy / (double)dx;
    double e = -0.5;//e=d-0.5
    for (int i = 0; i <= dx; i++) {
        putpixel(x0, y0, WHITE);
        x0++;
        e += k;
        if (e >= 0) {y0++,e = e - 1;}
        
  }
    putpixel(x1, y1, WHITE);      // 绘制最后一个像素点
}
 
int main() {
    initgraph(640, 480);          // 初始化图形环境,创建窗口大小为640x480的窗口
    Bresenham(0, 0,640, 480);  // 调用 Bresenham 函数绘制直线
    system("pause");              // 暂停程序执行
    closegraph();                 // 关闭图形环境
    return 0;
}

运行结果:

7566e78dc86140b2ac5fc12e75479730.jpg

改进后:以上代码在计算斜率(k)与误差项(e)时用到了小数和除法,可以用整数来避免除法。即e'=2*e*dx。

#include <graphics.h>
// 使用 Bresenham 算法绘制直线
void Bresenham(int x0, int y0, int x1, int y1) {
    int dx, dy, e;
    dx = x1 - x0;
    dy = y1 - y0;
    e = -dx;
    for (int i = 0; i <= dx; i++) {
        putpixel(x0, y0, WHITE);
        x0++, e = e + 2 * dy;
        if (e >= 0) { y0++; e = e - 2 * dx; }
    }
}
 
int main() {
    initgraph(640, 480);          // 初始化图形环境,创建窗口大小为640x480的窗口
    Bresenham(0, 0,640, 480);  // 调用 Bresenham 函数绘制直线
    system("pause");              // 暂停程序执行
    closegraph();                 // 关闭图形环境
    return 0;
}


9b4fc9fff0ae4a98b755c36a220c4cb6.jpg

相关文章
|
6月前
|
算法 计算机视觉
OpenCV(三十七):拟合直线、三角形和圆形
OpenCV(三十七):拟合直线、三角形和圆形
288 0
|
6月前
|
计算机视觉 Python
OpenCV中线段、矩形、圆形、多边形的讲解与绘制实战(附Python源码)
OpenCV中线段、矩形、圆形、多边形的讲解与绘制实战(附Python源码)
135 0
|
3月前
|
程序员 C# 图形学
Unity3D学习笔记1——绘制一个三角形
Unity3D学习笔记1——绘制一个三角形
82 0
|
11月前
|
计算机视觉 Python
OpenCV中绘制圆和直线
要在OpenCV中绘制圆和直线,可以使用以下方法: 1. 导入所需库:
64 1
|
6月前
|
算法 容器
[MFC] 将多个坐标点拟合出一条直线,并画出
[MFC] 将多个坐标点拟合出一条直线,并画出
79 0
OpenCV-绘制多边形(fillConvexPoly和fillPoly的区别)
OpenCV-绘制多边形(fillConvexPoly和fillPoly的区别)
221 1
|
11月前
【QCustomPlot库绘制曲线应用】
【QCustomPlot库绘制曲线应用】
294 0
|
计算机视觉
OpenCV-基本图形绘制(圆、矩形、椭圆)
OpenCV-基本图形绘制(圆、矩形、椭圆)