您好,欢迎来到叨叨游戏网。
搜索
您的当前位置:首页基本图形生成算法

基本图形生成算法

来源:叨叨游戏网
实验一 基本图形生成算法

1.实验目的:

掌握中点 Bresenham绘制直线的原理 设计中点 Bresenham算法 编程实现中点 Bresenham算法 2.实验描述:

使用中点Bresenham算法绘制斜率为0≤k≤1的直线。 3.算法设计:

直线中点Bresenham算法

1. 输入直线的起点坐标 P0(x0,y0)和终点坐标P1(x1,y1) 。

2. 定义直线当前点坐标 x,y、定义中点偏差判别式d、定义直线斜率k、定义像素点颜色

rgb。

3. x=x0,y=y0,计算d=0.5-k,k=(y1-y0)/(x1-x0),rgb=RGB(0,0,255)。 4. 绘制点(x,y),判断d的符号。若d<0,则(x,y)更新为(x+1,y+1),d 更新为

d+1-k;否则(x,y)更新为(x+1,y),d更新为d-k。 5. 如果当前点x 小于x1,重复步骤4,否则结束。

4.源程序:

1)// TestView.h

#include \"InputDlg.h\"//对话框头文件 class CTestView : public CView { ….. }

2)// TestView.cpp

void CTestView::OnMbline()//菜单函数 {

InputDlg dlg; if(dlg.DoModal()==IDOK) { AfxGetMainWnd()->SetWindowText(\":直线中点Bresenham算法\"); RedrawWindow(); Mbline(dlg.m_x0, dlg.m_y0, dlg.m_x1, dlg.m_y1); } }

void CTestView::Mbline(double x0, double y0,double x1,double y1) //直线中点Bresenham函数 { CClientDC dc(this);

COLORREF rgb=RGB(255,0,0); //定义直线颜色为红色 double x,y,d,k;

x=x0;y=y0;k=(y1-y0)/(x1-x0);d=0.5-k; for(x=x0;x<=x1;x++) {

dc.SetPixel(ROUND(x),ROUND(y),rgb);

if(d<0) {

y++; d+=1-k;

} else

d-=k; }

}

5.运行结果:(屏幕截图)

序号 1 2 3 4 检查项目 算法设计(40%) 算法的程序实现(40%) 运行结果(10%) 实验报告规范性 (10%) 分值 0-40 0-40 0-10 0-10 提交时间 得分 成 绩

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- gamedaodao.net 版权所有 湘ICP备2024080961号-6

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务