• 演讲稿大全
  • 辩论技巧
  • 演讲口才
  • 口才技巧
  • 口才训练
  • 谈判技巧
  • 朗诵技巧
  • 练声方法
  • 当前位置: 工作范文网 > 口才 > 练声方法 > 正文

    计算机图形学金刚石算法实验报告

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

    PAGE

    PAGE 1

    实验成绩:

    《计算机图形学》实验报告

    班级: 1420561

    专业: 软件工程

    学号: 142056127

    姓名: 马哲

    2016年12月

    《计算机图形学》课程实验报告(一)

    班级

    1420561

    实验日期

    2016.10.24

    姓名

    马哲

    学号

    27

    实验名称

    金刚石图案算法

    自定义二维坐标系

    二维点类的定义方法

    对话框的创建及调用方法

    金刚石图案算法

    一维堆内存的分配和释放

    设计个性化的菜单项与工具栏

    创建Test工程模板

    设计菜单和工具栏按钮

    (1.)设置菜单的ID

    删除多余的菜单选项,只保留三个即可。

    设置工具栏按钮

    关联工具栏按钮与菜单项

    设计应用程序图标

    设计“关于”对话框

    设计输入对话框

    设计输入对话框界面

    添加输入对话框类

    为输入对话框的控件映射数据成员

    设置编辑框控件Edit Box的初始值

    m_n=30;

    m_r=300.0;

    设置编辑框控件Edit Box的初始状态为选中

    代码为:

    void CInputDlg::OnShowWindow(BOOL bShow, UINT nStatus)

    {

    CDialog::OnShowWindow(bShow, nStatus);

    // TODO: Add your message handler code here

    GetDlgItem(IDC_EDIT1)->SetFocus();

    ((CEdit*)GetDlgItem(IDC_EDIT1))->SetSel(0,-1);

    }

    设计二维点类

    新建类,CP2,修改二维点类的初始定义

    在P2.h添加duble类x、y,在P2.cpp添加x=0,y=0;

    5.设计CTestView类

    添加“绘图”子菜单命令消息映射函数

    CTestView头文件设计

    定义指针P,定义n,r,添加Diamond成员函数

    CTestView的源程序设计

    (源程序在附录)

    修改“绘图”子菜单命令消息映射函数的定义

    void CTestView::OnDrawpic()

    {

    // TODO: Add your command handler code here

    CInputDlg dlg;

    if(IDOK==dlg.DoModal())

    {

    n=dlg.m_n ;

    r=dlg.m_r ;

    }

    else

    return;

    RedrawWindow();

    P=new CP2[n];

    Diamond();

    delete [] P;

    }

    实验结果如下:

    输入对话框界面

    等分点个数为30时:

    等分点个数为10时:

    教材中仅介绍了0<=k<=1直线段的中点Bresenham扫描转换算法。CLine类的成员函数用于绘制任意斜率的直线段,MSDN显示直线坐标位置。

    (核心源程序清单)

    void CTextView::Diamond()

    {

    CDC*pDC=GetDC();

    CRect rect;

    GetClientRect(&rect);

    pDC->SetMapMode(MM_ANISOTROPIC);

    pDC->SetWindowExt(rect.Width(),rect.Height());

    pDC->SetViewportExt(rect.Width(),-rect.Height());

    pDC->SetWindowOrg(rect.Width()/2,rect.Height()/2);

    rect.OffsetRect(-rect.Width()/2,-rect.Height()/2);

    CPen NewPen,*pOldPen;

    NewPen.CreatePen(PS_SOLID,1,RGB(0,0,255));

    pOldPen=pDC->SelectObject(&NewPen);

    double Alpha,Theta;

    Theta=2*PI/n;

    Alpha=PI/2-Theta;

    for(int i=0;i<n;i++)

    {

    P[i].x =r*cos(Alpha+i*Theta);

    P[i].y =r*sin(Alpha+i*Theta);

    }

    for(i=0;i<=n-2;i++)

    {

    for(int j=i+1;j<=n-1;j++)

    {

    pDC->MoveTo(Round(P[i].x) ,Round(P[i].y));

    pDC->LineTo(Round(P[j].x) ,Round(P[j].y));

    }

    }

    pDC->SelectObject(pOldPen);

    NewPen.DeleteObject();

    ReleaseDC(pDC);

    }

    实验地点

    专业软件实验室

    指导教师

    李丽亚

    有关的专题