计算机图形学课程实验指导书和作业 下载本文

内容发布更新时间 : 2024/5/20 16:59:18星期一 下面是文章的全部内容请认真阅读。

《计算机图形学》

实验指导书、实验报告

专业班级: 学生姓名: 学 号: 指导教师:

黑龙江工程学院测绘工程学院

目录

实验一 直线段生成算法实现

一、实验目的

熟练掌握DDA直线生成算法、中点直线生成算法、Bresenham直线生成算法的算法思想,了解各个算法中寻找直线段上的像素点的过程。

二、实验学时 2学时

三、实验类型

现代实验、验证性、自立式

四、实验要求

1.根据指导书所给的参考代码,每人至少实现两种直线段的生成算法。 2.要求能够实现任意起始点和终止点坐标的直线段的绘制。

3.能够实现不同线型(实线、虚线、点划线)、不同线宽(单像素宽度、多像素宽度)的直线段的绘制。

五、实验原理与步骤 原理:

1.数值微分法(DDA)

设一直线段的起点和终点坐标分别为(xs , ys)和(xe , ye)。则直线段在X和Y方向的增量分别为: △x=xe- xs ,△y= ye- ys 设△t=max(|△x|,|△y|) xi+1=xi+dx=xi+Dx/Dt yi+1=yi+dy=yi+Dy/Dt 2.中点直线生成算法: P2Q 取时间步长为1/△t,若当前像素点坐标为(xi, yi),则下一个像素点的坐标可由以下两式确定:

P=(xp,yp)P1 假定直线斜率0

当M在Q的下方-> P2离直线更近更近->取P2 。 M在Q的上方-> P1离直线更近更近->取P1

M与Q重合, P1、P2任取一点。

假设直线方程为:ax+by+c=0 其中a=y0-y1, b=x1-x0, c=x0y1-x1y0 F(x,y)=0 点在直线上面 F(x,y)>0 点在直线上方 F(x,y)<0 点在直线下方

欲判断M点是在Q点上方还是在Q点下方,只需把M代入F(x,y),并检查它的符号。 令d=F(M)=F(xp+1,yp+0.5)=a(xp+1)+b(yp+0.5)+c 当d<0,M在直线(Q点)下方,取右上方P2; 当d>0,M在直线(Q点)上方,取右方P1;

1