实验三 基本图形生成算法

实验题目:  基本图形生成算法                                                          

实验目的:   了解opengl图形软件包绘制图形的基本过程及其程序框架,并在已有的程序框架中添加代码实现直线和圆的生成算法,演示直线和圆的生成过程,从而加深对直线和圆等基本图形生成算法的理解,掌握多边形填充方法。

实验环境(硬件和软件)    HP计算机+GLUT开发库                       

一、实验要求:

  1. 理解glut程序框架;
  2. 理解Opengl实现动画的原理;
  3. 添加代码实现中点Bresenham算法画直线;
  4. 添加代码实现改进Bresenham算法画直线;
  5. 添加代码实现圆的绘制(可以适当对框架坐标系进行修改);
  6. 适当修改代码实现具有宽度的图形(线刷子和方刷子,选作)。
  7. 利用OpenGL输出不同属性的点和线段。
  8. 利用OpenGL输出字符。
  9. 利用OpenGL实现反走样技术。

二、实验内容及步骤:

实验内容:

1、基本图元生成程序框架,补充代码完成图形的绘制。

2、完成头歌实训平台实验内容:

(1)CG1-v1.0-直线光栅化算法

(2)多边形填充v1.0

3、利用OpenGL实现不同属性的点和线、字符显示、反走样技术。

实验步骤:

DDA算法画直线:

  1. 通过输入起点(x0,y0)和终点(x1,y1)计算直线斜率k。
  2. 如果斜率k大于1,那么对y方向取整,否则对x方向取整。
  3. 根据直线斜率k和已经取整的偏移量(dx和dy),以步长为1绘制直线,逐个计算每个点的坐标并进行绘制。

中点Bresenham算法画直线:

  1. 输入起点(x0,y0)和终点(x1,y1)。
  2. 计算x轴和y轴偏移量(dx和dy),并选择两个方向中最大的一个作为最大位移方向。
  3. 初始化误差项d和两个坐标的初始值。
  4. 在最大位移方向上绘制每个像素点,同时更新误差项d的值,以判断是否需要在另一个方向上进行移动。

改进Bresenham算法画直线0.f:

  1. 输入起点(x0,y0)和终点(x1,y1)。
  2. 计算x轴和y轴偏移量(dx和dy),并选择两个方向中最大的一个作为最大位移方向。
  3. 初始化误差项d和两个坐标的初始值。
  4. 在最大位移方向上绘制每个像素点,同时更新误差项d的值,以判断是否需要在另一个方向上进行移动。在更新误差项d的时候,将误差项d乘以0.f,从而在处理斜率k小于1的直线时,能够得到更精确的结果。

八分法绘制圆:

  1. 输入圆心坐标(x0,y0)和半径r。
  2. 以圆心为中心,将圆划分为八份,并以45度为步长进行绘制。
  3. 在每个象限上分别计算出第一个点的坐标,并以扫描线的方式逐个绘制圆弧上的像素。

利用OpenGL实现不同属性的点和线、字符显示、反走样技术实验中按照所提供的部分核心代码查略相关函数,掌握知识点,对代码进行完善,不断调试最终得出想要的结果。

实验结果与分析:

基本图元绘制:(1)

(2)

(3)

(4)

点和线:

字符显示:

反走样:

  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值