精华内容
下载资源
问答
  • 过程将条线段数字化为组离散整数位置,图形线算法就是研究如何高效处理这过程。 【DDA算法】DDA算法又叫数值微分法,基于以下数值推导过程: 算法步骤:①输入线段两端点像素位置。端点间...

    画线算法

    要在光栅监视器上显示一条线段,图形系统必须先将两端点投影到整数屏幕坐标,并确定离两端点间的直线路径最近的像素位置。接下来将颜色值装入帧缓存相应的像素坐标处。这一过程将一条线段数字化为一组离散的整数位置,图形学画线算法就是研究如何高效处理这个过程。

     

    【DDA算法】

    DDA算法又叫数值微分法,基于以下的数值推导过程:


     

    算法步骤

    ①输入线段两个端点的像素位置。端点间水平和垂直差值赋给dx和dy。

    ②dx和dy中绝对值较大一个赋给参数steps,该值是这条直线段的像素数目

    ③先绘制起始位置(x0,y0),再调整每一步的x和y,逐一绘制余下像素。

    【代码】

    inlineint round(constfloat a)
    
    {
    
        returnint (a+0.5);
    
    }
    
    void lineDDA(int x0,inty0,int xend,intyend)
    
    {
    
       intdx=xend-x0;
    
       intdy=yend-y0;
    
       intk;
    
       floatxincrement,yincrement;
    
       if(fabs(dx)>fabs(dy))
    
         k=fabs(dx);
    
         else
    
          k=fabs(dy);
    
         xincrement=float(dx)/float(k);
    
         yincrement=flaot(dy)/float(k);
    
     
    
         setPixel(round(x),round(y))
    
         for(int i=0;i<k;i++)
    
         {
    
             x+=xincrement;
    
             y+=yincrement;
    
             setPixel(round(x),round(y));//只有坐标轴上增加斜率K大于0.5时才会在坐标轴上加1
    
    }
    
     
    
    }

     

    Bresenham画线算法】

    过各行各列象素中心构造一组虚拟网格线。按直线从起点到终点的顺序计算直线与各垂直网格线的交点,然后根据误差项的符号确定该列象素中与此交点最近的象素。

    核心思想:
    假设:k=dy/dx。因为直线的起始点在象素中心,所以误差项d的初值d0=0。
    X下标每增加1,d的值相应递增直线的斜率值k,即d=d+k。一旦d≥1,就把它减去1,这样保证d在0、1之间。
    当d≥0.5时,最接近于当前象素的右上方象素(x+1,y+1)
    而当d<0.5时,更接近于右方象素(x+1,y)

    为方便计算,令e=d-0.5,
    e的初值为-0.5,增量为k。
    当e≥0时,取当前象素(xi,yi)的右上方象素(x+1,y+1)
    而当e<0时,更接近于右方象素(x+1,y)
    可以改用整数以避免除法。由于算法中只用到误差项的符号,因此可作如下替换:
    e1 = 2*e*dx

    代码

    voidBresenhamline (int x0,int y0,int x1, int y1,int color)
    { 
     int x, y, dx, dy;
     float k, e;
     dx = x1-x0, dy = y1- y0, k=dy/dx;
     e=-0.5, x=x0, y=y0;
     for (i=0; i<=dx; i++)
     {    drawpixel (x, y, color);
     x=x+1,e=e+k;
     if (e>=0)
     { y++, e=e-1;}
     }
    }
    //或者将e扩大2dx倍;
    
    voidBresenhamline (int x0,int y0,int x1, int y1,int color)
    {
    int x, y, dx, dy;
    float k, e;
    dx = x1-x0, dy = y1- y0, k=dy/dx;
    e=-dx, x=x0, y=y0;
    for (i=0; i<=dx; i++)
    { drawpixel (x, y, color);
    x=x+1,e=e+2dy;
    if (e>=0)
    { y++, e=e-2dx;}
    }
    }

     

    展开全文
  • 然而,图形学最基本的原理和方法,却保持着稳定和连贯,并且这些知识中的大部分可以通过一个图形学课程学习得到。本书将图形学的一些基本思想和方法组织起来,通过阅读使读者从只会编写简单程序的水平,提高到能够...
  •  实例077 使用正则表达式验证一个31天 93  实例078 使用正则表达式验证数字输入 94  实例079 使用正则表达式验证密码长度 95  实例080 使用正则表达式验证非零正整数 96  实例081 使用正则表达式验证...
  • 基于Visual C#DirectX开发实例教程

    千次下载 热门讨论 2010-03-21 11:33:35
    料等,主要介绍如何采用Visual C# 语言对DirectX进行三维图形开发。本文 共分十六章,以“由易到难、由简单到复杂”为主线,以介绍 DirectX 开发方 法为主,并穿插介绍相关计算机三维图形知识等。限于作者水平有限...
  • 软件工程教程

    热门讨论 2012-07-06 23:10:29
    不要为每个事物都画一个模型,应该把精力放在关键领域 对象图 对象图 表示在某一时刻类具体实例和这些实例之间具体连接关系 类 与 对象 关系 类 与 对象 关系 类图和对象图区别 包 包 一种分组...
  • 实例077 使用正则表达式验证一个31天 实例078 使用正则表达式验证数字输入 实例079 使用正则表达式验证密码长度 实例080 使用正则表达式验证非零正整数 实例081 使用正则表达式验证非零负整数 3.6 ...
  • 实例077 使用正则表达式验证一个31天 实例078 使用正则表达式验证数字输入 实例079 使用正则表达式验证密码长度 实例080 使用正则表达式验证非零正整数 实例081 使用正则表达式验证非零负整数 3.6 ...
  • 实例077 使用正则表达式验证一个31天 实例078 使用正则表达式验证数字输入 实例079 使用正则表达式验证密码长度 实例080 使用正则表达式验证非零正整数 实例081 使用正则表达式验证非零负整数 3.6 ...
  • 实例077 使用正则表达式验证一个31天 93 实例078 使用正则表达式验证数字输入 94 实例079 使用正则表达式验证密码长度 95 实例080 使用正则表达式验证非零正整数 96 实例081 使用正则表达式验证非零负整数 ...
  • MAPGIS地质制图工具

    2013-05-06 16:15:30
    8、选择读取地质信息后,会在底部自动打开一个地质信息窗口。在这里你可以依次修改地层产状,地层花纹,颜色,界线,接触关系和接触产状。自己根据顺序(双击可看见区闪烁)修改就是。这里具体就不修改,然后点...
  • Opus:一个完全开放,免版税,高度通用音频编解码器。 PortAudio:免费、跨平台、开源音频I/O库。 SELA:SimplIE无损音频。 SoLoud:简单便携游戏音频引擎。 Speex:免费编解码器,为Opus所废弃。...
  • 实例085 利用类封装特性制作一个简单计算器 132 3.3 子承父业——继承特性 133 实例086 龙生龙,凤生凤(单继承应用) 133 实例087 兄弟情深:this和base(引用对象及控制基类) 135 实例088 初识支持多重继承接口...
  • 实例085 利用类封装特性制作一个简单计算器 132 3.3 子承父业——继承特性 133 实例086 龙生龙,凤生凤(单继承应用) 133 实例087 兄弟情深:this和base(引用对象及控制基类) 135 实例088 初识支持多重继承接口...
  • 实例085 利用类封装特性制作一个简单计算器 132 3.3 子承父业——继承特性 133 实例086 龙生龙,凤生凤(单继承应用) 133 实例087 兄弟情深:this和base(引用对象及控制基类) 135 实例088 初识支持多重继承接口...
  • 部久享盛誉程序开发宝典。精选570典型范例,全面覆盖实用和热点技术,涉及面广,实用性强源于实际项目开发,帮助读者短时间掌握更多实用技术,提高编程水平范例经过精心编排,重点、难点突出,易学易懂书后...
  • C#程序开发范例宝典(第2版).part02

    热门讨论 2012-11-12 07:55:11
    部久享盛誉程序开发宝典。精选570典型范例,全面覆盖实用和热点技术,涉及面广,实用性强源于实际项目开发,帮助读者短时间掌握更多实用技术,提高编程水平范例经过精心编排,重点、难点突出,易学易懂书后...
  • C#程序开发范例宝典(第2版).part13

    热门讨论 2012-11-12 20:17:14
    部久享盛誉程序开发宝典。精选570典型范例,全面覆盖实用和热点技术,涉及面广,实用性强源于实际项目开发,帮助读者短时间掌握更多实用技术,提高编程水平范例经过精心编排,重点、难点突出,易学易懂书后...
  • 部久享盛誉程序开发宝典。精选570典型范例,全面覆盖实用和热点技术,涉及面广,实用性强源于实际项目开发,帮助读者短时间掌握更多实用技术,提高编程水平范例经过精心编排,重点、难点突出,易学易懂书后...
  • 部久享盛誉程序开发宝典。精选570典型范例,全面覆盖实用和热点技术,涉及面广,实用性强源于实际项目开发,帮助读者短时间掌握更多实用技术,提高编程水平范例经过精心编排,重点、难点突出,易学易懂书后...
  • 部久享盛誉程序开发宝典。精选570典型范例,全面覆盖实用和热点技术,涉及面广,实用性强源于实际项目开发,帮助读者短时间掌握更多实用技术,提高编程水平范例经过精心编排,重点、难点突出,易学易懂书后...
  • 部久享盛誉程序开发宝典。精选570典型范例,全面覆盖实用和热点技术,涉及面广,实用性强源于实际项目开发,帮助读者短时间掌握更多实用技术,提高编程水平范例经过精心编排,重点、难点突出,易学易懂书后...
  • 部久享盛誉程序开发宝典。精选570典型范例,全面覆盖实用和热点技术,涉及面广,实用性强源于实际项目开发,帮助读者短时间掌握更多实用技术,提高编程水平范例经过精心编排,重点、难点突出,易学易懂书后...
  • 部久享盛誉程序开发宝典。精选570典型范例,全面覆盖实用和热点技术,涉及面广,实用性强源于实际项目开发,帮助读者短时间掌握更多实用技术,提高编程水平范例经过精心编排,重点、难点突出,易学易懂书后...
  • 部久享盛誉程序开发宝典。精选570典型范例,全面覆盖实用和热点技术,涉及面广,实用性强源于实际项目开发,帮助读者短时间掌握更多实用技术,提高编程水平范例经过精心编排,重点、难点突出,易学易懂书后...
  • 部久享盛誉程序开发宝典。精选570典型范例,全面覆盖实用和热点技术,涉及面广,实用性强源于实际项目开发,帮助读者短时间掌握更多实用技术,提高编程水平范例经过精心编排,重点、难点突出,易学易懂书后...
  • 部久享盛誉程序开发宝典。精选570典型范例,全面覆盖实用和热点技术,涉及面广,实用性强源于实际项目开发,帮助读者短时间掌握更多实用技术,提高编程水平范例经过精心编排,重点、难点突出,易学易懂书后...
  • 部久享盛誉程序开发宝典。精选570典型范例,全面覆盖实用和热点技术,涉及面广,实用性强源于实际项目开发,帮助读者短时间掌握更多实用技术,提高编程水平范例经过精心编排,重点、难点突出,易学易懂书后...
  • 程序开发范例宝典>>

    2012-10-24 10:41:28
    实例148 投影效果文字 211 实例149 印版效果文字 213 实例150 阴影效果文字 214 实例151 倾斜效果文字 214 实例152 渐变效果文字 215 实例153 缩放效果文字 216 实例154 辉光效果...
  • DTED:地面高度数字数据(图形的数据格式)文件 DTF:Symantec Q&A相关的数据库数据文件 DTM:DigiTrakker模块文件 DUN:Microsoft拔号网络导出文件 DV:数字视频文件(MIME) DWG:AutoCAD工程图文件;AutoCAD...
  • 实例148 投影效果文字 211 实例149 印版效果文字 213 实例150 阴影效果文字 214 实例151 倾斜效果文字 214 实例152 渐变效果文字 215 实例153 缩放效果文字 216 实例154 辉光效果文字 217...

空空如也

空空如也

1 2
收藏数 34
精华内容 13
关键字:

如何画一个图形的水平投影