计算机图形学报告.pdf
《计算机图形学报告.pdf》由会员分享,可在线阅读,更多相关《计算机图形学报告.pdf(50页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、 计 算 机 图 形 学 实 验 指 导 书、作 业 学 期:.2012-2013(2)班 级:_ 测 绘 11-3班 姓 名:邹 云 龙 学 号:_ 2110242测 绘 工 程 学 院目 录 实 验 一 直 线 段 生 成 算 法 实 现.1实 验 二 圆 生 成 算 法 的 实 现.5实 验 三 二 维 图 形 几 何 变 换 的 实 现.8实 验 四 直 线 段 裁 剪 算 法 的 实 现.13实 验 五 B ezie r曲 线 生 成 算 法 的 实 现.19实 验 报 告 1.21实 验 报 告 2.27实 验 报 告 3.32实 验 报 告 4.39实 验 报 告 5.461实
2、验 一 直 线 段 生 成 算 法 实 现 一、实 验 目 的 熟 练 掌 握 DDA直 线 生 成 算 法、中 点 直 线 生 成 算 法、Bresenham直 线 生 成 算 法 的 算 法 思 想,了 解 各 个 算 法 中 寻 找 直 线 段 上 的 像 素 点 的 过 程。二、实 验 学 时 2 学 时 三、实 验 类 型 现 代 实 验、验 证 性、自 立 式 四、实 验 要 求 1.根 据 指 导 书 所 给 的 参 考 代 码,每 人 至 少 实 现 两 种 直 线 段 的 生 成 算 法。2.要 求 能 够 实 现 任 意 起 始 点 和 终 止 点 坐 标 的 直 线 段
3、的 绘 制。3.能 够 实 现 不 同 线 型(实 线、虚 线、点 划 线)、不 同 线 宽(单 像 素 宽 度、多 像 素 宽 度)的 直 线 段 的 绘 制。五、实 验 原 理 与 步 骤 原 理:1.数 值 微 分 法(DDA)设 一 直 线 段 的 起 点 和 终 点 坐 标 分 别 为(xs,ys)和(xe,ye)。则 直 线 段 在 X 和 Y 方 向 的 增 量 分 别 为:x=xe-xs,Ay=ye-ys设 41=!11*(|/|,|/丫|)取 时 间 步 长 为 l/t,若 当 前 像 素 点 坐 标 为(xi,yi),则 下 一 个 像 素 点 的 坐 标 可 由 以 下
4、两 式 确 定:xi+l=xi+dx=xi+Dx/Dtyi+l=yi+dy=yi+Dy/Dt2.中 点 直 线 生 成 算 法:假 定 直 线 斜 率 且 已 确 定 点 亮 象 素 点 P(Xi,Yi),则 卜 一 个 与 直 线 最 接 近 的 像 素 只 能 是 Pl点 或 P2点。设 M 为 中 点,Q 为 交 点,现 需 确 定 下 一 个 点 亮 的 象 素。当 M 在 Q 的 下 方-P2离 直 线 更 近 更 近-取 P 2。M 在 Q 的 上 方-P1离 直 线 更 近 更 近-取 P1M 与 Q 重 合,Pl、P2任 取 一 点。假 设 直 线 方 程 为:ax+by+c=
5、O 其 中 a=yO-yl,b=xl-xO,c=xOyl-xlyOF(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+O.5)=a(xp+l)+b(yp+O.5)+cI当 d 0,M 在 直 线(Q点)下 方,取 右 上 方 P2;当 d0,M 在 直 线(Q点)上 方,取 右 方 P1;当 d=0,选 Pl或 P2均 可,约 定 取 P1;若 dO-
6、M在 直 线 上 方-取 P1;此 时 再 下 一 个 象 素 的 判 别 式 为 dl=F(xp+2,yp+O.5)=a(xp+2)+b(yp+0.5)+c=a(xp+l)+b(yp+0.5)+c+a=d+a;增 量 为 a若 dM在 直 线 下 方-取 P2;此 时 再 下 一 个 象 素 的 判 别 式 为 d2=F(xp+2,yp+1.5)=a(xp+2)+b(yp+l.5)+c=a(xp+l)+b(yp+0.5)+c+a+b=d+a+b;增 量 为 a+b画 线 从(x0,yO)开 始,d 的 初 值 dO=F(xO+l,y0+0.5)=a(x0+l)+b(yO+0.5)+c=F(x
7、O,yO)+a+0.5b=a+0.5b由 于 只 用 d 的 符 号 作 判 断,为 了 只 包 含 整 数 运 算,可 以 用 2d代 替 d 来 摆 脱 小 数,提 高 效 率,同 时 d 每 次 的 增 量 也 已 相 应 乘 2 操 作。3.Bresenham画 线 算 法(以 斜 率 在 01之 间 的 直 线 段 为 例,在 第 一 象 限 内)这 种 情 况 下,选 择 X 方 向 为 计 长 方 向,即 增 量 dx=l。如 书 中 P26图 2-9所 示,设 Pi(xi,yi)是 已 选 定 的 离 直 线 最 近 的 像 素,现 在 要 决 定 Pi+1是 D 还 是 C。
8、显 然,若 d=0.5,则 应 选 D。(m=Ay/Ax)令 e=d-O.5(初 值 为 m-0.5),即 有:e=0 时,选 Pi+l(xi+l,yi+1),更 新 e=e+nrl;为 计 算 简 便(整 数 计 算),将 判 别 式 e 替 换 为 e=2eAx;初 值 e=-Ax结 论:得 到 递 推 公 式 e=0 时,选 Pi+l(xi+l,yi+1);e=e+2 Ay-2 Ax其 中,x=xe-xs;Ay=ye-ys.同 样 方 法 可 进 行 其 它 象 限 的 推 导。步 骤:1.在 C#环 境 下,设 计 界 面,在 form窗 口 中 添 加 4 个 文 本 框,三 个 命
9、 令 按 钮;2.在 代 码 编 写 窗 口,编 写 DDA、中 点 直 线 生 成 算 法、Bresenham直 线 生 成 算 法 子 程 序,子 程 序 名 分 别 设 为 DDALine,MidPointLi ne 和 BresenhamLine;3.在 三 个 命 令 按 钮 单 击 事 件 中 分 别 根 据 文 本 框 中 给 定 的 待 绘 制 直 线 段 起 始 点 和 终 止 点 坐 标 调 用 相 应 的 直 线 段 生 成 子 程 序,Form中 完 成 任 意 起 始 点 直 终 止 点 的 直 线 段 的 绘 制。六、参 考 代 码 中 点 画 线 2using S
10、ystem;using System.Collections.Generic;using S ystem.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;using System.Drawing.Drawing2D;namespace WindowsForms Application 1 5(public partial class Form 1:Form(Bitmap bmp;public Form 1()(
11、InitializeComponent();)public void midpointline(int xO,int yO,int xl,int yl,Bitmap bmp)(int i,a,b,deltal,delta2,d,x,y;a=yO-y 1;b=x 1-xO;d=2*a+b;delta 1=2*a;delta2=2*(a+b);x=xO;y=yO;bmp.SetPixel(x,y,Color.Red);i=lwhile(x xl)if(d 0)3X+;y+;d+=delta2;)else(x+;d+=deltal;)i+;ifi%10=4(bmp.SetPixel(x,y,Colo
12、r.Red);bmp.SetPixel(x,y+1,Color.Red);bmp.SetPixel(x,y-1,Color.Red);)private void buttonl_Click(object sender,EventArgs e)(Graphics graphics=this.CreateGraphics();bmp=new Bitinap(this.ClientRectangle.Width,this.ClientRectangle.Height);midpointline(40,60,200,150,bmp);graphics.DrawImage(bmp,new Rectang
13、le(0,0,this.ClientRectangle.Width,this.ClientRectangle.Height);)七、实 验 报 告 要 求 及 成 绩 评 定 标 准 1.实 验 结 束 填 写 实 验 报 告 1。2.成 绩 评 定 标 准 1)成 果 评 定:根 据 学 生 程 序 运 行 状 况,实 验 内 容 完 成 情 况 给 予 成 果 评 定,成 果 评 定 成 绩 占 60%;4)教 师 评 价:根 据 考 勤、学 习 态 度、实 验 报 告 质 量 进 行 评 定:综 合 以 上 评 价,占 40%。4实 验 二 圆 生 成 算 法 的 实 现 一、实 验 目
14、 的 熟 练 掌 握 圆 的 中 点 生 成 算 法 和 Bresenham生 成 算 法 的 算 法 思 想,了 解 各 个 算 法 中 寻 找 圆 上 的 像 素 点 的 过 程。二、实 验 学 时 2 学 时 三、实 验 类 型 现 代 实 验、验 证 性、自 立 式 四、实 验 要 求 1.根 据 指 导 书 所 给 的 参 考 代 码,实 现 两 种 圆 的 生 成 算 法。2.要 求 能 够 实 现 任 意 圆 心 坐 标 和 任 意 半 径 的 圆 的 绘 制。3.能 够 实 现 不 同 线 型(实 线、虚 线、点 划 线)、不 同 线 宽(单 像 素 宽 度、多 像 素 宽 度
15、)的 圆 绘 制。五、实 验 原 理 与 步 骤 原 理:1.圆 的 中 点 生 成 算 法:利 用 圆 的 对 称 性,只 须 讨 论 1/8圆。第 二 个 8 分 圆 P(Xp,Yp)为 当 前 点 亮 象 素,那 么,下 一 个 点 亮 的 象 素 可 能 是 Pl(Xp+1,Yp)或 P2(Xp+1,Yp+1)o构 造 函 数:F(X,Y)=X2+Y2-R2;则 F(X,Y)=0(X,Y)在 圆 上;F(X,Y)0(X,Y)在 圆 外。设 M 为 Pl、P2 间 的 中 点,M=(Xp+l,Yp-0.5)有 如 下 结 论:F(M)M 在 圆 内-取 PlF(M)=0-M 在 圆 外-
16、取 P2为 此,可 采 用 如 下 判 别 式:d=F(M)=F(Yp+1,Yp-0.5)=(Yp+1)2+(Yp-0.5)2-R2若 d=0,则 P 2 为 下 一 个 象 素,那 么 再 下 一 个 象 素 的 判 别 式 为:dl=F(xp+2,yp-1.5)=(xp+2)2+(yp-1.5)2-R2=d+(2xp+3)+(-2 yp+2)即 d 的 增 量 为 2(xp-yp)+5.d 的 初 值:dO=F(l,R-0.5)=1+(R-0.5)2-R2=1.25-R将 d=0与 d0看 成 一 种 情 况,每 次 d 的 增 量 为 整 型 值,因 此 此 时 0.25对 d 的 符
17、号 没 有 影 响,可 将 d的 初 始 值 定 为 1-R2.圆 的 Bresenham生 成 算 法 5心-R2-(xli2+yli2)时,应 该 取 Li。否 则 取 Hi。令 di=xhi2+yhi2+xli2+yli2-2R2 显 然,当 d i 时 应 该 取 Li。否 则 取 Hi。剩 下 的 问 题 是 如 何 快 速 的 计 算 di。设 图 中 P i T 的 坐 标 为(xiT,yiT),则 Hi和 Li的 坐 标 为(xi,yi-l)和(xi,yiTT)di=xi2+yi-12+xi2+(yiTT)2-2R2=2xi2+2yiT2-2yiT-2R2di+1=(xi+1)
18、2+yi2+(xi+1)2+(yi-1)2-2R2=2xi2+4xi+2yi2-2yi-2R2+3当 di取 Hi-yi=yi-l,则 di+1=di+4xi-l+6当 di 2 0 时-取 Li-yi=yi-l-l,则 di+1=di+4(xi-l-yi-l)+10易 知 x0=0,yO=R,xl=x0+l因 此 d0=12+y02+12+(y0-1)2-2R2=3-2y0=3-2R步 骤:1.在 C#环 境 下,设 计 界 面,在 form窗 口 中 添 加 3 个 文 本 框,两 个 命 令 按 钮;2.在 代 码 编 写 窗 口,编 写 圆 的 中 点 生 成 算 法 和 Bresen
19、ham生 成 算 法 子 程 序,子 程 序 名 分 别 设 为 MidPointCircle 和 BresenhamCircle;3.在 两 个 命 令 按 钮 单 击 事 件 中 分 别 根 据 文 本 框 中 给 定 的 待 绘 制 圆 的 圆 心 和 半 径 调 用 相 应 的 圆 的 生 成 子 程 序,在 Form中 完 成 任 意 圆 心 坐 标 和 任 意 半 径 的 圆 的 绘 制。六、参 考 代 码 中 点 画 圆 using System;using System.Collections.Generic;using S y stem.Compone ntModel;usi
20、ng System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;using System.Drawing.Drawing2D;namespace WindowsFormsApplication 15public partial class Form 1:FormBitmap bmp;6public Form 1()(InitializeComponent();)public void midpointcircle(int r,Bitmap bmp)(int x,
21、y,d;x=0;y=r;d=1-r;bmp.SetPixel(x,y,Color.Red);while(x y)(if(d 0)(d+=2*x+3;x+;)else(d+=2*(x-y)+5;x+;y-;)bmp.SetPixel(x,y,Color.Red);)private void buttonl_Click(object sender,EventArgs e)(Graphics graphics=this.CreateGraphics();bmp=new Bitmap(this.ClientRectangle.Width,this.ClientRectangle.Height);mid
22、pointcircle(100,bmp);graphics.DrawImage(bmp,new Rectangle(0,0,this.ClientRectangle.Width,this.ClientRectangle.Height);)七、实 验 报 告 要 求 及 成 绩 评 定 标 准 1.实 验 结 束 填 写 实 验 报 告 2。2.成 绩 评 定 标 准 1)成 果 评 定:根 据 学 生 程 序 运 行 状 况,实 验 内 容 完 成 情 况 给 予 成 果 评 定,成 果 评 定 成 绩 占 60%;4)教 师 评 价:根 据 考 勤、学 习 态 度、实 验 报 告 质 量 进
23、 行 评 定;综 合 以 上 评 价,占 40%。7实 验 三 二 维 图 形 几 何 变 换 的 实 现 一、实 验 目 的 熟 练 掌 握 二 维 图 形 几 何 变 换 原 理 及 矩 阵,掌 握 变 换 的 性 质,理 解 复 杂 图 形 变 换 由 基 本 变 换 复 合 方 法 实 现 二、实 验 学 时 2学 时 三、实 验 类 型 现 代 实 验、验 证 性、自 立 式 四、实 验 要 求 1.根 据 指 导 书 所 给 的 参 考 代 码,实 现 二 维 图 形 的 几 何 变 换;2.要 求 能 够 实 现 任 意 基 本 变 换;3.按 正 确 顺 序 及 实 参 调 用
24、 基 本 变 换 子 程 序,实 现 给 定 的 初 始 图 形 到 目 标 图 形 的 变 换 过 程。五、实 验 原 理 与 步 骤 原 理:1.平 移 变 换:将 平 面 上 的 点(x,y)沿 平 行 于 x 轴 方 向 移 动 Tx,沿 平 行 于 y轴 方 向 移 动 Ty后,得 到 点(x,/),则 有:x=x+Tx y=y+Ty2.比 例 变 换:相 对 于 原 点 将 平 面 上 的 点(x,y),沿 x轴 方 向 乘 以 常 数 Sx,沿 y 方 向 乘 以 常 数 Sy后,得 到 点(x,y),则 有:x*=xXSx y=yXSy3.旋 转 变 换:将 图 形 相 对 于
25、 原 点 转 动 一 定 的 角 度。给 定 以 逆 时 针 方 向 为 正 方 向,假 设(x,y)相 对 于 原 点 旋 转 e 角 后 得 到 点(x,y,),则 有:x=xXcosO-yXsin y=xXsin+yXcos4.对 称 变 换 将 图 形 相 对 于 x轴、y轴、*=一、原 点 作 对 称 图 形 得 到 原 图 形 的 变 换 图 形,假 设 点(居 丁)经 对 称 变 换 后 得 到 新 点(V)则 有:相 对 于 x轴 对 称,x=x,y-y 相 对 于 y轴 对 称,x=x,y=y 相 对 于 x=y对 称,=x 相 对 于 x=-y对 称,x=-y,y=-x 相
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 图形学 报告
限制150内