欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    计算机图形学报告.pdf

    • 资源ID:92969641       资源大小:5.39MB        全文页数:50页
    • 资源格式: PDF        下载积分:12金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要12金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    计算机图形学报告.pdf

    计 算 机 图 形 学 实 验 指 导 书、作 业 学 期:.2012-2013(2)班 级:_ 测 绘 11-3班 姓 名:邹 云 龙 学 号:_ 2110242测 绘 工 程 学 院目 录 实 验 一 直 线 段 生 成 算 法 实 现.1实 验 二 圆 生 成 算 法 的 实 现.5实 验 三 二 维 图 形 几 何 变 换 的 实 现.8实 验 四 直 线 段 裁 剪 算 法 的 实 现.13实 验 五 B ezie r曲 线 生 成 算 法 的 实 现.19实 验 报 告 1.21实 验 报 告 2.27实 验 报 告 3.32实 验 报 告 4.39实 验 报 告 5.461实 验 一 直 线 段 生 成 算 法 实 现 一、实 验 目 的 熟 练 掌 握 DDA直 线 生 成 算 法、中 点 直 线 生 成 算 法、Bresenham直 线 生 成 算 法 的 算 法 思 想,了 解 各 个 算 法 中 寻 找 直 线 段 上 的 像 素 点 的 过 程。二、实 验 学 时 2 学 时 三、实 验 类 型 现 代 实 验、验 证 性、自 立 式 四、实 验 要 求 1.根 据 指 导 书 所 给 的 参 考 代 码,每 人 至 少 实 现 两 种 直 线 段 的 生 成 算 法。2.要 求 能 够 实 现 任 意 起 始 点 和 终 止 点 坐 标 的 直 线 段 的 绘 制。3.能 够 实 现 不 同 线 型(实 线、虚 线、点 划 线)、不 同 线 宽(单 像 素 宽 度、多 像 素 宽 度)的 直 线 段 的 绘 制。五、实 验 原 理 与 步 骤 原 理:1.数 值 微 分 法(DDA)设 一 直 线 段 的 起 点 和 终 点 坐 标 分 别 为(xs,ys)和(xe,ye)。则 直 线 段 在 X 和 Y 方 向 的 增 量 分 别 为:x=xe-xs,Ay=ye-ys设 41=!11*(|/|,|/丫|)取 时 间 步 长 为 l/t,若 当 前 像 素 点 坐 标 为(xi,yi),则 下 一 个 像 素 点 的 坐 标 可 由 以 下 两 式 确 定: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=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-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(xO,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。显 然,若 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 个 文 本 框,三 个 命 令 按 钮;2.在 代 码 编 写 窗 口,编 写 DDA、中 点 直 线 生 成 算 法、Bresenham直 线 生 成 算 法 子 程 序,子 程 序 名 分 别 设 为 DDALine,MidPointLi ne 和 BresenhamLine;3.在 三 个 命 令 按 钮 单 击 事 件 中 分 别 根 据 文 本 框 中 给 定 的 待 绘 制 直 线 段 起 始 点 和 终 止 点 坐 标 调 用 相 应 的 直 线 段 生 成 子 程 序,Form中 完 成 任 意 起 始 点 直 终 止 点 的 直 线 段 的 绘 制。六、参 考 代 码 中 点 画 线 2using System;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()(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,Color.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 Rectangle(0,0,this.ClientRectangle.Width,this.ClientRectangle.Height);)七、实 验 报 告 要 求 及 成 绩 评 定 标 准 1.实 验 结 束 填 写 实 验 报 告 1。2.成 绩 评 定 标 准 1)成 果 评 定:根 据 学 生 程 序 运 行 状 况,实 验 内 容 完 成 情 况 给 予 成 果 评 定,成 果 评 定 成 绩 占 60%;4)教 师 评 价:根 据 考 勤、学 习 态 度、实 验 报 告 质 量 进 行 评 定:综 合 以 上 评 价,占 40%。4实 验 二 圆 生 成 算 法 的 实 现 一、实 验 目 的 熟 练 掌 握 圆 的 中 点 生 成 算 法 和 Bresenham生 成 算 法 的 算 法 思 想,了 解 各 个 算 法 中 寻 找 圆 上 的 像 素 点 的 过 程。二、实 验 学 时 2 学 时 三、实 验 类 型 现 代 实 验、验 证 性、自 立 式 四、实 验 要 求 1.根 据 指 导 书 所 给 的 参 考 代 码,实 现 两 种 圆 的 生 成 算 法。2.要 求 能 够 实 现 任 意 圆 心 坐 标 和 任 意 半 径 的 圆 的 绘 制。3.能 够 实 现 不 同 线 型(实 线、虚 线、点 划 线)、不 同 线 宽(单 像 素 宽 度、多 像 素 宽 度)的 圆 绘 制。五、实 验 原 理 与 步 骤 原 理: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 在 圆 外-取 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 的 符 号 没 有 影 响,可 将 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)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.在 代 码 编 写 窗 口,编 写 圆 的 中 点 生 成 算 法 和 Bresenham生 成 算 法 子 程 序,子 程 序 名 分 别 设 为 MidPointCircle 和 BresenhamCircle;3.在 两 个 命 令 按 钮 单 击 事 件 中 分 别 根 据 文 本 框 中 给 定 的 待 绘 制 圆 的 圆 心 和 半 径 调 用 相 应 的 圆 的 生 成 子 程 序,在 Form中 完 成 任 意 圆 心 坐 标 和 任 意 半 径 的 圆 的 绘 制。六、参 考 代 码 中 点 画 圆 using System;using System.Collections.Generic;using S y stem.Compone ntModel;using 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,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);midpointcircle(100,bmp);graphics.DrawImage(bmp,new Rectangle(0,0,this.ClientRectangle.Width,this.ClientRectangle.Height);)七、实 验 报 告 要 求 及 成 绩 评 定 标 准 1.实 验 结 束 填 写 实 验 报 告 2。2.成 绩 评 定 标 准 1)成 果 评 定:根 据 学 生 程 序 运 行 状 况,实 验 内 容 完 成 情 况 给 予 成 果 评 定,成 果 评 定 成 绩 占 60%;4)教 师 评 价:根 据 考 勤、学 习 态 度、实 验 报 告 质 量 进 行 评 定;综 合 以 上 评 价,占 40%。7实 验 三 二 维 图 形 几 何 变 换 的 实 现 一、实 验 目 的 熟 练 掌 握 二 维 图 形 几 何 变 换 原 理 及 矩 阵,掌 握 变 换 的 性 质,理 解 复 杂 图 形 变 换 由 基 本 变 换 复 合 方 法 实 现 二、实 验 学 时 2学 时 三、实 验 类 型 现 代 实 验、验 证 性、自 立 式 四、实 验 要 求 1.根 据 指 导 书 所 给 的 参 考 代 码,实 现 二 维 图 形 的 几 何 变 换;2.要 求 能 够 实 现 任 意 基 本 变 换;3.按 正 确 顺 序 及 实 参 调 用 基 本 变 换 子 程 序,实 现 给 定 的 初 始 图 形 到 目 标 图 形 的 变 换 过 程。五、实 验 原 理 与 步 骤 原 理: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.旋 转 变 换:将 图 形 相 对 于 原 点 转 动 一 定 的 角 度。给 定 以 逆 时 针 方 向 为 正 方 向,假 设(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 相 对 于 原 点 对 称,x=x,y=-y5.错 切 变 换 错 切 包 括 沿 x方 向 错 切 和 沿 y方 向 错 切,点(x,y)沿 X轴 方 向 错 切 的 系 数 为 b,沿 y轴 方 向 错 切 的 系 数 为 d,得 到 点(x,y),则 有:x=x+bXy y=y+dXx8步 骤:1.在 C#环 境 下,设 计 界 面,在 form窗 口 中 添 加 5 个 命 令 按 钮;2.在 代 码 编 写 窗 口,编 写 二 维 平 移、缩 放、旋 转、对 称、错 切 算 法 子 程 序,子 程 序 名 分 别 设 为 批 p in y i、suofang、xuanzhuan duichen cuoqie;3.在 Form中 绘 制 一 个 初 始 图 形,在 5 个 命 令 按 钮 单 击 事 件 中 分 别 调 用 相 应 的 基 本 变 换 子 程 序,完 成 图 形 的 变 换。六、参 考 代 码 using System.Drawing;using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using S y stem.Wi ndo ws.Forms;using System.Drawing.Drawing2D;name space WindowsFormsApplication 16(public partial class Fonn 1:Form(int xO=100,yO=100,xl=150,yl=100,x2=150,y2=150,x3=100,y3=150;Bitmap bmp;public Form 1()(InitializeComponent();)public void pingyi(int dx,int dy)xO+=dx;yO+=dy;xl+=dx;yl+=dy;x2+=dx;y2+=dy;x3+=dx;y3+=dy;Graphics g=this.CreateGraphics();Pen pl=new Pen(Color.Blue);g.DrawLine(pl,xO,yO,x 1,yl);g.DrawLine(pl,xl,yl,x2,y2);g.DrawLine(pl,x2,y2,x3,y3);9g.DrawLine(pl,x3,y3,xO,yO);public void suofang(double sx,double sy)(double xOm,yOm,xlm,ylm,x2m,y2m,x3m,y3m;xOm=sx*xO;xlm=sx*xl;x2m=sx*x2;x3m=sx*x3;yOm=sy*yO;ylm=sy*yl;y2m=sy*y2;y3m=sy*y3;xO=(int)(Math.Round(xOm);xl=(int)(Math.Round(xlm);x2=(int)(Math.Round(x2m);x3=(int)(Math.Round(x3m);yO=(int)(Math.Round(yOm);yl=(int)(Math.Round(ylm);y2=(int)(Math.Round(y2m);y3=(int)(Malh.Round(y3m);Graphics g=this.CreateGraphics();Pen pl=new Pen(Color.LimeGreen);g.DrawLine(pl,xO,yO,xl,yl);g.DrawLine(pl,xl,yl,x2,y2);g.DrawLine(pl,x2,y2,x3,y3);g.DrawLine(ph x3,y3,xO,yO);)public void xuanzhuan(double a)(double xOm,yOm,xlm,ylm,x2m,y2m,x3m,y3m;xOm=xO*Math.Cos(a)-yO*Math.Sin(a);yOm=x0*Math.Sin(a)+yO*Math.Cos(a);xl m=xl*Math.Cos(a)-yl*Math.Sin(a);ylm=xl*Math.Sin(a)+yl*Malh.Cos(a);x2m=x2*Math.Cos(a)-y2*Math.Sin(a);10y2m=x2*Math.Sin(a)+y2*Math.Cos(a);x3m=x3*Math.Cos(a)-y3*Math.Sin(a);y3m=x3*Math.Sin(a)+y3*Math.Cos(a);xO=(int)(Math.Round(xOm);xl=(int)(Malh.Round(x Im);x2=(int)(Math.Round(x2in);x3=(int)(Math.Round(x3m);yO=(int)(Math.Round(yOm);yl=(int)(Math.Round(ylm);y2=(int)(Math.Round(y2m);y3=(int)(Math.Round(y3m);Graphics g=this.CreateGraphics();Pen pl=new Pen(Coior.LimeGreen);g.DrawLine(pl,xO,yO,xl,yl);g.DrawLine(pl,xl,yl,x2,y2);g.DrawLine(pl,x2,y2,x3,y3);g.DrawLine(pl,x3,y3,xO,yO);)private void buttonl_Click(object sender,EventArgs e)(Graphics graphics=this.CreateGraphics();bmp=new Bitmap(this.ClientRectangle.Width,this.ClientRectangle.Height);Graphics g=this.CreateGraphics();Pen pl=new Pen(Color.Red);g.DrawLine(pl,xO,yO,xl,yl);g.DrawLine(pl,xl,yl,x2,y2);g.DrawLine(pl,x2,y2,x3,y3);g.DrawLine(pl,x3,y3,xO,yO);graphics.Draw!mage(bmp,new Rectangle(O,0,this.ClientRectangle.Width,this.ClientRectangle.Height);1 1private void button2_Click(obgect sender,EventArgs e)(Graphics graphics=this.CreateGraphics();bmp=new Bilmap(this.ClientRectangle.Width,this.ClientRectangle.Height);Graphics g=this.CreateGraphics();Pen pl=new Pen(Color.Red);pingyi(60,60);graphics.DrawImage(bmp,new Rectangle(0,0,this.ClientRectangle.Width,this.ClientRectangle.Height);)private void button3_Click(object sender,EventArgs e)(Graphics graphics=this.CreateGraphics();bmp=new Bitmap(this.ClientRectangle.Width,this.ClientRectangle.Height);Graphics g=this.CreateGraphics();Pen pl=new Pen(Color.Red);suofang(2,3);graphics.DrawImage(bmp,new Rectangle(0,0,this.ClientRectangle.Width,this.ClientRectangle.Height);private void button4_Click(object sender,EventArgs e)(Graphics graphics=this.CreateGraphics();bmp=new Bitmap(this.ClientRectangle.Width,this.ClientRectangle.Height);Graphics g=this.CreateGraphics();Pen pl=new Pen(Color.Red);xuanzhuan(0.5);graphics.DrawImage(bmp,new Rectangle(0,0,this.ClientRectangle.Width,this.ClientRectangle.Height);)七、实 验 报 告 要 求 及 成 绩 评 定 标 准 1.实 验 结 束 填 写 实 验 报 告 3。2.成 绩 评 定 标 准 1)成 果 评 定:根 据 学 生 程 序 运 行 状 况,实 验 内 容 完 成 情 况 给 予 成 果 评 定,成 果 评 定 成 绩 占 60%;4)教 师 评 价:根 据 考 勤、学 习 态 度、实 验 报 告 质 量 进 行 评 定;综 合 以 上 评 价,占 40%。12实 验 四 直 线 段 裁 剪 算 法 的 实 现 一、实 验 目 的 掌 握 直 线 段 裁 剪 的 直 接 求 交 算 法、中 点 分 割 算 法、C ohen-Sutherland算 法 和 Liang-B arskey算 法 的 算 法 思 想 及 各 算 法 的 优 缺 点.二、实 验 学 时 2 学 时 三、实 验 类 型 现 代 实 验、验 证 性、自 立 式 四、实 验 要 求 1.根 据 指 导 书 所 给 的 参 考 代 码,实 现 直 线 段 裁 剪 的 直 接 求 交 算 法、中 点 分 割 算 法、Cohen-Sutherland算 法 和 L iang-B arskey算 法 中 的 至 少 一 种 算 法;2.要 求 能 够 实 现 任 意 直 线 段 的 裁 剪。五、实 验 原 理 与 步 骤 原 理:1.直 接 求 交 算 法:线 段 是 否 显 然 不 可 见?是,则 抛 弃 整 条 线 段,所 谓 显 然 不 可 见 是 指 线 段 的 两 个 端 点 同 时 位 于 窗 口 的 某 条 边 的 外 侧。(即 构 成 线 段 的 两 端 点 同 时 位 于 在 窗 口 上 方 或 同 时 位 于 窗 口 下 方 或 同 时 位 于 窗 口 左 方 或 同 时 位 于 窗 口 右 方。)线 段 是 否 完 全 可 见,即 线 段 的 两 个 端 点 同 时 位 于 窗 口 内,是 则 转 入 计 算 线 段 与 窗 口 边 界 的 交 点,并 以 此 交 点 将 线 段 分 成 两 个 部 分;对 于 完 全 位 于 窗 口 外 的 部 分 抛 弃;对 剩 下 的 部 分 转 入 保 留 并 显 示 该 线 段。/D2.Cohen-Sutherland 算 法:|/P/N区 域 编 码 对 裁 剪 的 线 段 的 两 个 端 点 4 3 必)、舄(,内)进 行 区 域 编 码。设 代 码 分 别 为 C odel和 Code2。根 据 C odel和 Code2的 具 体 值,分 下 列 三 种 情 况:a.若 Codel=Code2=0,说 明 线 段 的 两 个 端 点 都 在 窗 口 的 可 见 区 域 内,则 整 条 线 段 必 然 在 窗 口 内,应 该 保 留 整 条 线 段,如 图 中 的 线 段 AB。b.Codel&Code2W 0,则 C odel与 Code2至 少 有 某 一 位 同 时 为 1,说 明 两 端 点 必 然 同 时 处 于 某 条 边 界 的 外 侧,此 时 线 段 为 显 然 不 可 见,应 该 舍 弃 整 条 线 段,如 图 中 的 CD、EF、G IIc.对 于 不 是 上 述 两 种 情 况 的 线 段,如 图 I J、M N、0 P 则 求 出 其 与 窗 口 边 界 及 其 延 长 线 的 交 点,以 此 交 13点 为 线 段 分 成 两 部 分,其 中 在 边 界 线 外 侧 的 那 部 分 舍 弃。如 图,线 段 IJ,求 出 IJ与 下 边 界 的 交 点 K,则 将 IK舍 弃。d.对 于 线 段 剩 余 部 分,如 KJ,堂 复 前 述 几 个 步 骤。则 至 多 重 复 到 第 三 次 为 止,剩 下 的 线 段 或 者 完 全 窗 口 内 则 保 留,或 者 完 全 在 窗 口 外 则 舍 弃。3.中 点 分 割 算 法 从 P 出 发 找 到 该 线 段 上 的 距 离 此 最 近 的 可 见 点,从 4 出 发 找 到 该 线 段 上 距 离:最 近 的 可 见 点。则 这 两 个 可 见 点 间 的 部 分 就 是 原 直 线 段 外 4 在 窗 口 内 的 部 分。实 际 上,在 离 外 最 近 的 可 见 点 和 找 离 4 最 近 的 可 见 点 的 两 个 过 程 可 同 时 进 行,并 且 算 法 思 想 是 相 同 的。原 线 段 上 距 离 尼 最 近 的 可 见 点 步 骤:判 断 外 是 否 可 见,若 此 可 见,则 尼 为 待 找 点;判 断 是 否 显 然 不 可 见,若 是 则 说 明 原 线 段 没 有 可 见 部 分;先 求 出 此 的 中 点,记 为 心;若 凡 与 长 度 小 于 给 定 的 一 个 任 意 小 数,则 认 为 该 中 点 F 为 要 找 的 点,循 环 结 束,否 则 向 下 进 行;若 凡 几 为 显 然 不 可 见,则 取 均 代 替 原 线 段 外 片,否 则 取 外 几 代 替 原 线 段 4 4,再 对 新 产 生 的 线 段 4 4 重 复。4.梁 友 栋-Barsky算 法 设 要 裁 剪 的 线 段 是 P0P1。P0P1和 窗 口 边 界 交 于 A,B,C,D四 点,见 图。算 法 的 基 本 思 想 是 从 A,B和 P0三 点 中 找 出 最 靠 近 的 P1点,图 中 要 找 的 点 是 POo从 C,D和 P1中 找 出 最 靠 近 P0的 点。图 中 要 找 的 点 是 C点。那 么 POC就 是 P0P1线 段 上 的 可 见 部 分。线 段 的 参 数 表 示 x=xO+tAxy=yO+tAy 0=t=l x=xl-xO Ay=yl-yO窗 口 边 界 的 四 条 边 分 为 两 类:始 边 和 终 边。若 x”。则 x=xl为 始 边,x=xr为 终 边 若 x=()则 y=yb为 始 边,y=yt为 终 边 若 二()则 y=yt为 始 边,y二 yb为 终 边 14交 点 计 算 求 出 P 0P 1与 两 条 始 边 的 交 点 参 数 to,t l,令 tl=m ax(to,t l,0),则 t l 即 为 三 者 中 离 p l最 近 的 点 的 参 数 求 出 p O p l与 两 条 终 边 的 交 点 参 数 t2,t 3,令 tu=m in(t2,t3,1),则 t u 即 为 三 者 中 离 pO最 近 的 点 的 参 数 若 tu t l,则 可 见 线 段 区 间 t l,tu若 tu t l,则 线 段 无 可 见 部 分 始 边 和 终 边 的 确 定 及 交 点 计 算:令 QL二-A x DL=x0-xLQ R=A x D R=xR-xOQ B二-A y D B=yO-yBQT二 A y DT=yT-yO交 点 为 ti=Di/Qi i=L,R,B,T-I AQi 0 t i 为 与 终 边 交 点 参 数 Qi=0 Di 0 时,分 析 另 一 D 步 骤:1.在 C#环 境 下,设 计 界 面,在 fo rm 窗 口 中 添 加 4 个 文 本 框,两 个 命 令 按 钮;;2.在 代 码 编 写 窗 口 编 写 代 码,单 击 命 令 按 钮 1 绘 制 由 文 本 框 给 出 的 起 始 点 和 终 止 点 坐 标 确 定 的 直 线 段,单 击 命 令 按 钮 2 时、对 由 文 本 框 给 出 的 起 始 点 和 终 止 点 坐 标 确 定 的 直 线 段 进 行 裁 剪,显 示 裁 剪 结 果。六、参 考 代 码 using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;namespace WindowsFormsApplication31public partial class Forml:Form(public Form 1()(InitializeComponent();private void buttonl_Click(object sender,EventArgs e)(int xl,xr,yb,yt,xl,x2,yl,y2,x,y,flag;flag=2;xl=2500;xr=5500;15yb=2500;yt=6500;Bitmap bmp;Graphics graphics=this.CreateGraphics();bmp=new Bitmap(this.ClientRectangle.Width,this.CIientRectangle.H

    注意事项

    本文(计算机图形学报告.pdf)为本站会员(无***)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开