DDA_为微分绘制直线算法

  以步进坐标轴部长=1像素为单位,计算y=kx + b,绘制像素点(x, round(y)).

  即步进坐标增长1, 另一坐标增长K或者1/k。

  程序如下:

 //数值微分算法DDA
void CCGProjectWorkView::DDA_Line(const int startPos[], const int endPos[], const float lineColor[])
{
glPushMatrix();
//绘制直线
long deltX, deltY, maxStep;
deltX = endPos[] - startPos[];
deltY = endPos[] - startPos[];
maxStep = max(abs(deltX), abs(deltY));
//计算方向有向步进单位,即两个方向的斜率增长单位
float xStepUnion = float(deltX) / maxStep;
float yStepUnion = float(deltY) / maxStep; glColor3f(lineColor[], lineColor[], lineColor[]);
glBegin(GL_POINTS); float x,y;//绘制的坐标点
x = (float)startPos[];
y = (float)startPos[]; //对两个方向循环步进处理
for (long i=; i<=maxStep; i++)
{
x = x + xStepUnion;
y = y + yStepUnion;
glVertex3f((int)x, (int)y, );
}
glEnd();
glPopMatrix();
}

DDA_为微分绘制直线算法的更多相关文章

  1. Breaseman算法绘制直线算法公式推导|步骤|程序

    Breaseman算法绘制直线算法公式推导|步骤|程序 BreaseMan算法优点: (1)不必计算直线的斜率,因此不用做除法: (2)不用浮点数,只用整数: (3)制作整数的加减乘除,和乘2操作,乘 ...

  2. 【OpenGL学习】 四种绘制直线的算法

    我是用MFC框架进行测试的,由于本人也没有专门系统学习MFC框架,代码若有不足之处,请指出. 一,先来一个最简单的DDA算法 DDA算法全称为数值微分法,基于微分方程来绘制直线. ①推导微分方程如下: ...

  3. Bresenham直线算法与画圆算法

    在我们内部开发使用的一个工具中,我们需要几乎从 0 开始实现一个高效的二维图像渲染引擎.比较幸运的是,我们只需要画直线.圆以及矩形,其中比较复杂的是画直线和圆.画直线和圆已经有非常多的成熟的算法了,我 ...

  4. [AlgorithmStaff] Bresenham快速直线算法

    操作系统:Windows8.1 显卡:Nivida GTX965M 开发工具:Unity2017.3 | NativeC 最近在学习 Unity tilemap Brush 自定义笔刷功能时候,看到其 ...

  5. Bresenham快速画直线算法

    现在的计算机的图像的都是用像素表示的,无论是点.直线.圆或其他图形最终都会以点的形式显示.人们看到屏幕的直线只不过是模拟出来的,人眼不能分辨出来而已.那么计算机是如何画直线的呢,其实有比较多的算法,这 ...

  6. 封装 用canvas绘制直线的函数--面向对象

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  7. Cocos2d-x 重写draw方法绘制直线等图形时被遮挡覆盖问题的一种解决方案

    最近在学习过程cocos2dx的过程中需要使用到绘制直线的功能,所以我就采用了引擎中 ccDrawLine 方法,然后重写 draw 方法,在该方法中绘制直线. 但是出现了一个问题,那就是绘制的图形被 ...

  8. c# 动态绘制直线和曲线

    c# 动态绘制直线和曲线   在本案例中利用Graphics对象动态地绘制直线和曲线.程序运行后,选择“直线”单选按钮,然后按下鼠标左键拖动鼠标就可以绘制直线,选择“曲线”单选按钮,然后移动鼠标就可以 ...

  9. canvas绘制直线

    HTML5 <canvas>元素用于图形的绘制,该元素只是图形容器,必须使用javascript脚本绘制图形创建一个画布:<canvas id="myCanvas" ...

随机推荐

  1. How a non-windowed component can receive messages from Windows

    Why do it? Sometimes we need a non-windowed component (i.e. one that isn't derived fromTWinControl) ...

  2. Android 最火开发框架 xUtils

    xUtils简介 xUtils3 api变化较多, 已转至 https://github.com/wyouflf/xUtils3 xUtils 2.x对Android 6.0兼容不是很好, 请尽快升级 ...

  3. 前端基础之Bootstrap

    1. 页面加载完之后才执行的JS代码        1. DOM方式            window.onload = function(){}        2. jQuery方式       ...

  4. PAT L2-010 排座位(floyd)

    布置宴席最微妙的事情,就是给前来参宴的各位宾客安排座位.无论如何,总不能把两个死对头排到同一张宴会桌旁!这个艰巨任务现在就交给你,对任何一对客人,请编写程序告诉主人他们是否能被安排同席. 输入格式: ...

  5. python的错误类型和异常处理

    # isinstance() # 判断实例a是否属于类b # issubclass() # 判断类a是否为类b的派生类 # 异常处理 try: pass #Exception是错误类型,能catch到 ...

  6. python作业之修改用户配置文件

    用户的配置文件如下 backend oldboy school school1 age 21 weight 210 qq 550176565 iphone 139987676backend oldgi ...

  7. 利用Python和webhook实现自动提交代码

    最近在为公司书写项目的api文档,计划利用码云的wiki管理整个项目,公司自有git作为项目内容依托,这样全员都可参与,而我定期向码云推送就可以了. 问题 根据需求遇见了这样一个问题:我每次从git上 ...

  8. 3-QT程序运行时报错E:\SogouInput\6.7.0.0329\程序异常终止,该怎么解决?

    https://bbs.csdn.net/topics/390653779 出现这个错误的原因,使用声明的对象时,没有使用new对对象进行实例化. 包括:数组.

  9. 修改mysql数据库 允许远程访问

    首先使用root身份进入MySQL mysql>use mysql; //进入mysql表 mysql> selecthost,user from user;  //查看结果是不是root ...

  10. ROS Learning-008 beginner_Tutorials ROS话题

    ROS Indigo beginner_Tutorials-07 ROS话题 我使用的虚拟机软件:VMware Workstation 11 使用的Ubuntu系统:Ubuntu 14.04.4 LT ...