这里写自定义目录标题

  • 一、基本知识和实验步骤
  • 二、代码展示

一、基本知识和实验步骤

  1. DDA(数值微分)算法
    DDA 算法原理:如图 1-1 所示,已知过端点怕p0(x0,y0),p1(x1,y1)的直线段 p0,p1;直线斜率为 k=(y1-y0)/(x1-x0) ,从x 的左端点x0开始,向 x 右端 点步进画线,步长=1(个像素),计算相应的 y 坐标y=kx+B;取像素点 [x , round(y) ] 作为当前点的 坐标。计算yi+1=kxi+1+B=kx1+B+kdx, 当x=1 ,yi+1*=yi+k,即当 x 每递增 1,y 递增 k(即 直线斜率)。 注意:上述分析的算法仅适用于 k<=1 的情形。在 这种情况下,x 每增加 1, y 最多增加 1。当x>=1 时, 必须把 x,y 地位互换,y 每增加 1,x 相应增加 1/k。

二、代码展示

  1. GPoint.h 文件中的代码
#pragma once ref class GPoint { public:    int x;  int y;    GPoint(void);  GPoint(int, int); }; 
  1. GPoint.cpp文件中的代码
#include "StdAfx.h" #include "GPoint.h" GPoint::GPoint(void) {  x=0;  y=0; } GPoint::GPoint(int x0, int y0) {     x = x0;     y = y0; } 
  1. Line.h 文件中的代码
#pragma once using namespace System::Drawing; #include "GPoint.h" ref class Line { public:    GPoint Begin;  GPoint End;    Line(void);  Line(GPoint^, GPoint^);       void DDA(Color,Bitmap ^);  void Bresenham1(Color,Bitmap ^);  void Bresenham2(Color,Bitmap ^);  void Bresenham3(Color,Bitmap ^);  void MidPointLine(Color,Bitmap ^); };
  1. Line.cpp文件中的代码
#include "GPoint.h"
#include "math.h"
Line::Line()
{ GPoint Begin; GPoint End; Begin.x =0; Begin.y =0; End.x=0; End.y=0;
} Line::Line(GPoint ^P0, GPoint ^P1)
{ Begin.x =P0->x; Begin.y =P0->y; End.x=P1->x; End.y=P1->y;
} 
  1. DDA算法代码
void Line::DDA(Color color,Bitmap ^bmp)
{ int dx = abs(End.x - Begin.x); int dy = abs(End.y - Begin.y); int s1, s2; if (End.x >= Begin.x) s1 = 1; else s1 = -1; if (End.y >= Begin.y) s2 = 1; else s2 = -1; float x =(float) Begin.x; float y =(float)  Begin.y; float k = (float)dy / dx; if (k <= 1) { for (int i = 0; i <= dx; i++) { x += s1; bmp->SetPixel((int) x, (int)( y+0.5), color); y += s2 * k; } } else { for (int i = 0; i <= dy; i++) { y += s2; bmp->SetPixel((int)(x+0.5), (int) y, color); x += s1 *1/ k; } }
} 

侵删

`

计算机图形学实验一直线-DDA算法相关推荐

  1. 计算机图形学直线线型实验报告,计算机图形学实验报告-直线中点bresenham算法的实现资料.doc...

    计算机图形学实验报告-直线中点bresenham算法的实现资料.doc (10页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 29.90 积分 计算机图形 ...

  2. TIT 计算机图形学 实验三 使用重心坐标算法绘制颜色渐变的正六面体

    TIT 计算机图形学 实验三 使用重心坐标算法绘制颜色渐变的正六面体 前言 参考视频计算机图形学全套算法讲解和C++编码实现(共23讲配套源码),计算机图形学案例视频讲解以及主页相关算法.孔老师是我的 ...

  3. 【计算机图形学 】Cohen-Sutherland 直线裁剪算法 | OpenGL+鼠标交互

    文章目录 其他计算机图形学实验 前言 代码借鉴 步骤 1.点的结构体 2. 创建用于裁剪的窗口并绘制 3.画点函数 4. Cohen-Sutherland 直线裁剪算法部分 4.1 判断点所在位置,生 ...

  4. 计算机图形学01:直线生成算法(DDA算法)

    作者:非妃是公主 专栏:<计算机图形学> 博客地址:https://blog.csdn.net/myf_666 个性签:顺境不惰,逆境不馁,以心制境,万事可成.--曾国藩 文章目录 专栏推 ...

  5. 计算机图形学直线算法论文,《计算机图形学》中直线生成算法的教学心得

    摘要:<计算机图形学>是计算机科学与技术专业一门重要的专业课,其中直线生成算法是教学重点之一.该文通过分析几种直线生成算法的特点,阐述了理论教学和实践教学的重点和难点,总结了教学的体会和心 ...

  6. 计算机图形学学习(一) 直线Bresenham算法讲解及matlab实现

    文章目录 Bresenham算法介绍 Bresenham算法实现 matlab代码实现 成果演示 最后 Bresenham算法介绍 Bresenham是计算机图形学领域使用最广泛的直线扫描转换算法,其 ...

  7. 计算机图形学 实验6 直线的裁剪—Cohen Sutherland裁剪算法(MFC中)

    实验目的: 理解裁剪的作用 掌握直线裁剪的算法 实验内容: 一.编写程序实现Cohen Sutherland裁剪算法 算法原理: 首先判断直线段是否全部在窗口内,是,则保留:不是,则再判断是否完全在窗 ...

  8. 计算机图形学学习(一) 直线中点算法讲解及matlab实现

    文章目录 中点算法原理 中点算法实现 matlab代码实现 查看结果 最后 中点算法原理 先讲最简单的一种情况,设直线斜率在区间 (0,1),其他情况可以类似推导. 当前像素点为P(xp,yp),下一 ...

  9. 计算机图形学之生成直线的DDA算法(C#)

    计算机图形学DDA直线算法(C#) 一.直线的生成算法 实质上是一个发现最佳逼近直线的象素系列,并填入彩色数据的过程. 二.DDA算法 一种基于直线的微分方程来生成直线的一种方法. 三.DDA代码程序 ...

  10. 计算机图形学直线扫描转论文,计算机图形学实验报告-实验1直线段扫描转换.doc...

    PAGE 32 PAGE 7 计算机图形学 实验报告 班级 计算机工硕班 学号 2011220456 姓名 王泽晶 实验一:直线段扫描转换 实验目的 通过本次试验,学生可以掌握直线段的扫描转换算法及其 ...

最新文章

  1. AlphaCode惊世登场!编程版“阿法狗”悄悄参赛,击败一半程序员
  2. 高性能云计算展望(中)
  3. 「最有用」的特殊大数据:一文看懂文本信息系统的概念框架及功能
  4. mysql 日期分隔符_sql中的日期处理
  5. oracle数据库中sql语句性能提升之to_char改造
  6. wgs84坐标系经纬度投影_南方cass坐标转经纬度_坐标转经纬度软件
  7. 洛谷P1878 舞蹈课 贪心 堆
  8. 小觅双目相机如何使用_小觅双目相机测试
  9. 为什么我的windows 10 电脑关机时,电脑灯延迟很久才熄灭?
  10. 新手求教。。有关onPreviewFrame未被调用的问题
  11. 大数据开发治理平台 DataWorks
  12. angular 中如何实现多态与继承
  13. excel如何在单元格内换行
  14. CPU个数、CPU核心数、CPU线程数
  15. 进口牛羊肉抄码器厂家OCR扫数字重量累加扫码机冷库进出口牛羊肉抄码机进口冻肉抄码设备 进口牛羊肉抄码枪
  16. 弹性伸缩(Auto Scaling)
  17. GaussDB架构(上)
  18. 科研化的稀土掺杂上转换纳米材料BaGdF5:Yb3+/Er3+的应用
  19. H3C MSR 3600-28-X1路由器配置过程
  20. 杰理芯片软件加密钥的操作流程

热门文章

  1. 联想小新air13装双系统_联想小新Pro 13黑苹果详细安装教程
  2. android wps页面设置,WPS中设置纸张的方法
  3. 线性代数笔记10:实对称矩阵
  4. 两台电脑共享鼠标键盘Synergy
  5. DSOFramer 控件修改成功
  6. arcgis注册dsoframer.ocx等组件
  7. NBU 备份 SAP HANA
  8. MATLAB简单绘图命令,简单的matlab绘图命令
  9. unity序列帧动画
  10. VM14安装及使用环境配置