• 办事指南
  • 创业起步
  • 企业管理
  • 市场营销
  • 开店指南
  • 创业之路
  • 创业故事
  • 互联网创业
  • 工商知识
  • 财务知识
  • 税务知识
  • 会计知识
  • 其它创业知识
  • 当前位置: 工作范文网 > 创业 > 企业管理 > 正文

    计算机图形学-直线生成算法实验报告

    时间:2020-09-21 12:24:43 来源:工作范文网 本文已影响 工作范文网手机站

    1 -

    湖南工商大学课程实验报告

    (注:本实验报告文件请以自己的学号姓名为文件名,保存关闭后提交)

    课程名 计算机图形学 班级 计科16xx 学号1609xxxxx 姓名 宋x

    实验名称 直线生成算法

    实验目的

    理解三种直线生成算法思想;

    写出实现程序;

    实验步骤

    建立一个DDALine的工程文件;

    添加ddaline()成员函数;

    编写自定义的成员函数ddaline()程序;

    编写OnDraw()函数;

    编译、调试和运行程序,程序结果如下。同时尝试画几条不同颜色的直线;

    参照以上方法自行完成中点画线法和Bresenham法生成直线的算法程序。

    实验代码

    DDA算法程序(任意斜率):

    void CTestView::ddaline(CDC *pDC, int x0, int y0, int x1, int y1, COLORREF color)

    {

    float x,y,dx,dy;

    int i,length;

    if(abs(x1-x0)>abs(y1-y0))

    length=abs(x1-x0);

    else

    length=abs(y1-y0);

    dx=(float)(x1-x0)/length; //这里一定要转化为实型

    dy=(float) (y1-y0)/length;

    x=x0;

    y=y0;

    for(i=1;i<=length;i++)

    {

    pDC->SetPixel(int(x+0.5),int(y+0.5),color);

    x=x+dx;

    y=y+dy;

    }

    }

    中点画线算法(斜率0<k<1):

    void CTestView::MidpointLine(CDC *pDC, int x0, int y0, int x1, int y1, int color)

    {

    int a,b,delta1,delta2,d,x,y;

    a=y0-y1;

    b=x1-x0;

    d=2*a+b;

    delta1=2*a;

    delta2=2*(a+b);

    x=x0;

    y=y0;

    pDC->SetPixel(x,y,color);

    while(x<x1)

    {

    if(d<0)

    {

    x++;

    y++;

    d+=delta2;

    }

    else

    {

    x++;

    d+=delta1;

    }

    pDC->SetPixel(x,y,color);

    }

    }

    OnDraw函数:

    void CTestView::OnDraw(CDC* pDC)

    {

    CTestDoc* pDoc = GetDocument();

    ASSERT_VALID(pDoc);

    // TODO: add draw code for native data here

    ddaline(pDC,30,30,400,300,RGB(59,207,237));

    MidpointLine(pDC,100,100,500,200,RGB(0,0,255));

    }

    实验结果截图

    有关的专题