《计算机图形学教程课后习题参考答案.pdf》由会员分享,可在线阅读,更多相关《计算机图形学教程课后习题参考答案.pdf(90页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第 一 章 1、试 述 计 算 机 图 形 学 研 究 的 基 本 内 容?答:见 课 本 P 5-6页 的 1.1.4节。2、计 算 机 图 形 学、图 形 处 理 与 模 式 识 别 本 质 区 别 是 什 么?请 各 举 一 例 说 明。答:计 算 机 图 形 学 是 研 究 根 据 给 定 的 描 述,用 计 算 机 生 成 相 应 的 图 形、图 像,且 所 生 成 的 图 形、图 像 可 以 显 示 屏 幕 上、硬 拷 贝 输 出 或 作 为 数 据 集 存 在 计 算 机 中 的 学 科。计 算 机 图 形 学 研 究 的 是 从 数 据 描 述 到 图 形 生 成 的 过 程。
2、例 如 计 算 机 动 画 制 作。图 形 处 理 是 利 用 计 算 机 对 原 来 存 在 物 体 的 映 像 进 行 分 析 处 理,然 后 再 现 图 像。例 如 工 业 中 的 射 线 探 伤。模 式 识 别 是 指 计 算 机 对 图 形 信 息 进 行 识 别 和 分 析 描 述,是 从 图 形(图 像)到 描 述 的 表 达 过 程。例 如 邮 件 分 捡 设 备 扫 描 信 件 上 手 写 的 邮 政 编 码,并 将 编 码 用 图 像 复 原 成 数 字。3、计 算 机 图 形 学 与 CA D、CAM技 术 关 系 如 何?答:见 课 本 P 4-5页 的 L 1.3 节
3、。4、举 3 个 例 子 说 明 计 算 机 图 形 学 的 应 用。答:事 务 管 理 中 的 交 互 绘 图 应 用 图 形 学 最 多 的 领 域 之 一 是 绘 制 事 务 管 理 中 的 各 种 图 形。通 过 从 简 明 的 形 式 呈 现 出 数 据 的 模 型 和 趋 势 以 增 加 对 复 杂 现 象 的 理 解,并 促 使 决 策 的 制 定。地 理 信 息 系 统 地 理 信 息 系 统 是 建 立 在 地 理 图 形 基 础 上 的 信 息 管 理 系 统。利 用 计 算 机 图 形 生 成 技 术 可 以 绘 制 地 理 的、地 质 的 以 及 其 它 自 然 现 象
4、 的 高 精 度 勘 探、测 量 图 形。计 算 机 动 画 用 图 形 学 的 方 法 产 生 动 画 片,其 形 象 逼 真、生 动,轻 而 易 举 地 解 决 了 人 工 绘 图 时 难 以 解 决 的 问 题,大 大 提 高 了 工 作 效 率。5、计 算 机 绘 图 有 哪 些 特 点?答:见 课 本 P 8页 的 1.3.1节。6、计 算 机 生 成 图 形 的 方 法 有 哪 些?答:计 算 机 生 成 图 形 的 方 法 有 两 种:矢 量 法 和 描 点 法。矢 量 法:在 显 示 屏 上 先 给 定 一 系 列 坐 标 点,然 后 控 制 电 子 束 在 屏 幕 上 按 一
5、 定 的 顺 序 扫 描,逐 个“点 亮”临 近 两 点 间 的 短 矢 量,从 而 得 到 一 条 近 似 的 曲 线。尽 管 显 示 器 产 生 的 只 是 一 些 短 直 线 的 线 段,但 当 直 线 段 很 短 时,连 成 的 曲 线 看 起 来 还 是 光 滑 的。描 点 法:把 显 示 屏 幕 分 成 有 限 个 可 发 亮 的 离 散 点,每 个 离 散 点 叫 做 一 个 像 素,屏 幕 上 由 像 素 点 组 成 的 阵 列 称 为 光 栅,曲 线 的 绘 制 过 程 就 是 将 该 曲 线 在 光 栅 上 经 过 的 那 些 像 素 点 串 接 起 来,使 它 们 发 亮
6、,所 显 示 的 每 一 曲 线 都 是 由 一 定 大 小 的 像 素 点 组 成 的。当 像 素 点 具 有 多 种 颜 色 或 多 种 灰 度 等 级 时,就 可 以 显 示 彩 色 图 形 或 具 有 不 同 灰 度 的 图 形。7、当 前 计 算 机 图 形 学 研 究 的 课 题 有 哪 些?答:见 课 本 P 10T 1页 的 1.4节。8、简 述 三 维 图 形 生 成 和 输 出 的 流 水 线?答:见 课 本 P13页 1.5.6.节。9、向 量 图 形 和 点 阵 图 形 之 间 的 区 别 有 哪 些?答:通 过 矢 量 法 产 生 的 图 形 称 为 矢 量 图 形
7、或 者 向 量 图 形,用 描 点 法 产 生 的 图形 称 为 点 阵 图 形。向 量 图 形 区 别 点 阵 图 形 的 特 点 在 于 描 述 图 形 几 何 形 状 的 数 学 模 型 及 依 据 此 模 型 生 成 几 何 图 形 的 计 算 机 命 令。向 量 图 形 由 各 个 基 本 图 形 构 成,这 就 要 求 各 个 基 本 图 形 有 各 自 独 立 的 信 息。如 果 用 点 阵 图 形 来 表 示 一 个 向 量 图 形,构 成 向 量 图 形 的 某 个 基 本 图 形(如 直 线 段、圆 弧 等)的 所 有 点 应 有 一 个 信 息。因 此,在 描 述 一 个
8、 基 本 图 形 时,同 时 要 描 述 其 相 应 的 信 息。向 量 图 形 最 基 本 的 优 点 是 它 本 身 是 由 精 确 的 数 据 给 出,所 以 可 以 充 分 利 用 各 种 输 出 图 形 设 备 的 分 辨 率 尽 可 能 精 确 地 输 出 图 形。也 正 因 为 如 此,向 量 图 形 的 尺 寸 可 以 任 意 变 化 而 不 损 失 图 形 显 示 的 质 量。但 是 向 量 图 形 仅 适 合 于 描 绘 简 单 图 形,而 点 阵 图 形 可 以 描 绘 绚 烂 多 彩 的 复 杂 图 形。10、什 么 是 虚 拟 现 实 技 术 和 可 视 化 技 术?
9、答:虚 拟 现 实 技 术:利 用 计 算 机 生 成 一 种 模 拟 环 境,通 过 多 种 传 感 器 和 设 备 使 用 户“投 入”到 该 环 境 中,实 现 用 户 和 该 环 境 直 接 进 行 交 互 的 技 术。例 如 模 拟 飞 机 驾 驶 舱。可 视 化 技 术:通 过 对 空 间 数 据 场 构 造 中 间 几 何 因 素,或 用 图 形 绘 制 技 术 在 屏 幕 上 产 生 二 维 图 像。例 如 分 子 模 型 构 造。第 一 章 1、计 算 机 图 形 系 统 有 什 么 特 点?有 哪 些 主 要 功 能?答:课 本 2.1.1 的 图 22、计 算 机 图 形
10、 系 统 有 哪 几 种?各 有 什 么 特 点?答:一 种 分 类 方 法:交 互 式 图 形 系 统 允 许 操 作 者 以 某 种 方 式(对 话 方 式 或 命 令 方 式)来 控 制 和 操 作 图 形 生 成 过 程,使 得 图 形 可 以 边 生 成、边 显 示、边 修 改,直 至 符 合 要 求 为 止。而 被 动 式 绘 图 系 统,图 形 在 生 成 过 程 中,操 作 者 无 法 对 图 形 进 行 实 时 操 作 和 控 制,不 具 备 交 互 功 能,只 提 供 各 种 图 形 命 令 或 图 形 程 序 库,通 过 编程 获 得 所 需 图 形。另 一 种 分 类
11、方 法:见 课 本 2.1.3节,分 为 脱 机 绘 图 系 统、联 机 绘 图 系 统 和 交 互 式 绘 图 系 统。3、阴 极 射 线 管 由 哪 些 部 分 组 成?它 们 的 功 能 分 别 是 什 么?答:CRT由 四 部 分 组 成:电 子 枪、聚 焦 系 统、偏 转 系 统 和 荧 光 屏,这 四 部 分 都 在 真 空 管 内。电 子 枪 由 灯 丝、阴 极 和 控 制 栅 极 组 成。灯 丝 加 热 阴 极,阴 极 表 面 向 外 发 射 自 由 电 子,控 制 栅 控 制 自 由 电 子 是 否 向 荧 光 屏 发 出,若 允 许 电 子 通 过,形 成 的 电 子 流
12、在 到 达 屏 幕 的 途 中,被 聚 焦 系 统(电 子 透 镜)聚 焦 成 很 窄 的 电 子 束,由 偏 转 系 统 产 生 电 子 束 的 偏 转 电 场(或 磁 场),使 电 子 束 左 右、上 下 偏 转,从 而 控 制 荧 光 屏 上 光 点 上 下、左 右 运 动,使 得 在 指 定 时 刻 在 屏 幕 指 定 位 置 上 产 生 亮 点。4、光 栅 扫 描 显 示 器 由 哪 些 部 分 组 成?它 们 的 功 能 分 别 是 什 么?答:见 课 本 P21页 图 2.9 所 展 示 的 组 成 框 图,其 后 有 各 部 分 的 介 绍 及 功 能。5、对 于 分 辨 率
13、为 1024*1024的 光 栅 系 统,若 每 一 像 素 用 8 位 和 12位 二 进 制 来 表 示 存 储 信 息,各 需 多 大 光 栅 存 储 容 量 以 及 显 存?每 一 屏 幕 最 多 能 显 示 多 少 颜 色?若 R,G,B 灰 度 都 占 8 位,其 显 示 颜 色 的 总 数 是 多 少?解:1)每 一 像 素 用 8 位 二 进 制 来 表 示 存 储 信 息,所 需 容 量 为 1024*1024*1=22。(Byte)=1MB彩 色 素:2片 256(项)2)若 每 一 像 素 用 1 2 位 二 进 制 表 示 存 储 信 息,所 需 容 量 为:1024*
14、1024*1.5=1.5*220(Byte)=1.5MB(由 于 显 示 卡 的 显 存 是 按 2 的 指 数 次 倍 增 长 的,因 此 所 需 显 存 为 2M)彩 色 素:212=4096(项)3)颜 色 总 数:28*28*28=2246、对 于 19英 寸 显 示 器,若 X 和 Y 两 方 向 的 分 辨 率 相 等,即 1024*1024,那 么 每 个 像 素 点 的 直 径 是 多 少?解:物 2 5 0 R.33(mm)或 一=0.013(英 寸)1024 V 2 1024 V27、对 于 分 辨 率 为 1024X768的 光 栅 系 统,若 调 色 板 设 置 为 真
15、 彩 色 32位,此 时 需 要 显 示 一 个 三 维 图 形,各 需 要 多 大 光 栅 存 储 容 量 以 及 显 存?答:调 色 板 为 真 彩 色 32位,即 意 味 着 像 素 值 的 位 长 为 32所 需 容 量 为 1024*768*32/8*3=9MB因 此 所 需 要 的 显 存 为 16M8、GKS有 哪 三 种 坐 标 系?它 们 有 什 么 不 同?试 写 出 它 们 之 间 对 应 关 系?答:GKS有 3 种 不 同 的 坐 标 系。第 一 种 是 供 应 用 程 序 使 用 的 实 际 世 界 坐 标 系 统(World Coordinate System,简
16、 称 WC);第 二 种 是 GKS内 部 使 用 的 规 范 设 备 坐 标 系(Normalized Device Coordinate,简 称 NDC),它 的 取 值 范 围 为 0,1,这 是 一 种 既 与 设 备 无 关 也 与 应 用 无 关 的 坐 标 系;第 三 种 是 各 工 作 站 物 理 设 备 使 用 的 设 备 坐 标 系(Device Coordinate System,简 称 DC)。GKS只 支 持 二 维 对 象 的 图 形 处 理,因 此 上 述 3 个 坐 标 系 都 是 二 维 坐 标 系。详 见 课 本 图 3.28的 描 述。9、GKS中 输 入
17、 设 备 有 哪 6 种 逻 辑 功 能?请 各 举 出 对 应 的 物 理 设 备。答:见 课 本 2.4.5.节。10、当 前 主 流 的 图 形 软 件 有 哪 些?答:见 课 本 2.6.3 节。第 三 章 1、编 写 画 一 正 方 形 程 序,并 在 其 中 用 不 同 的 颜 色 画 15个 正 方 形,每 一 个 都 比 前一 个 小。include“graphics,h”ttinclude“conio.hvoid main()int i,color=0,ls=0;int j=700;int gdriver=VGA;int gmode=VGAHI;initgraph(&gdri
18、ver,&gmode,“3 T 批 改 说 明;setbkcolor(15);必 须 至 少 包 含 graphics.h for(i=0;i225;i=i+15,initgraph(&gdriver,&gmode,);必 须 包 含 15个 正 方 形,一 般 用 forsetcolor(color);循 环,也 可 能 用 到 while等。bar(i,i,j,j);color+;ls+;getch();closegraph();2、用 不 同 的 线 形 绘 制 题 1 中 的 图 形ttinclude“graphics,h”include uconio.hvvoid main()(in
19、t i,color=l,ls=0;int j=700;3-2批 改 说 明;int gdriver=VGA;注 意 查 看 3 部 分 内 容 gmode=VGAHI;initgraph(&gdriver,fegmode,“);setbkcolor(15);for(i=0;i=225;i=i+15,j=j-30)(setcolor(color);/setlinestyle(ls%4,0,1);或 者 setlinestyle(4,Is,3);rectangle(i,i,j,j);setfillstyle(SOLID_FILL,color);/floodfill(getmaxx()/2,getm
20、axy()/2,color);此 句 会 出 现 最 后 只 用 一 种 颜 色 填 充 的 情 况 color+;ls+;getch();closegraph();)3、画 一 五 颜 六 色 的 图(此 例 为 画 一 个 五 颜 六 色 的 圆)ttinclude“graphics,h”#include“conio.hvoid main()int driver=DETECT,mode=0;int i,start,end;initgraph(&driver,&mode,)start=0;end=20;for(i=0;i18;i+)3-3批 改 说 明;必 须 至 少 包 含 graphic
21、s,h”initgraph(fegdriver,&gmode,“);setfillstyle(SOLID_FILL,i);pieslice(300,200,start,end,100);start+=20;end+=20;)getch();restorecrtmode();4、编 写 一 辆 自 行 车 在 一 公 路 上 由 右 至 左 快 速 行 驶 的 程 序。#includestdlib.h#includegraphics.h#includeconio.h#includestdio.hvoid main()void*w;int driver=DETECT,mode=0,i,start,
22、end,j;initgraph(&driver,&mode,);cleardevice();setbkcolor(15);setcolor(CGA-LIGHTGREEN);start=0;end=180;circle(387,290,37);circle(525,290,37);line(404,217,398,230);line(436,217,429,230);line(398,230,429,230);line(413,230,387,290);line(387,290,525,290);line(408,243,484,243);line(387,290,484,243);line(4
23、84,243,525,290);line(444,290,484,243);line(444,290,446,279);line(444,290,443,300);line(438,277,444,278);line(435,300,451,301);line(484,243,487,233);line(472,233,502,233);自 行 车 基 本 轮 廓 的 绘 制 w=malloc(imagesize(350,200,562,327);get i mage(350,200,562,327,w);for(i=350,j=0;i0;i一,j-)setfillstyle(EMPTY_FI
24、LL,0);pieslice(387+j,290,start,end,37);pieslice(525+j,290,start,end,37);start+=40;end+=40;delay(5);处 于 运 动 状 态 的 自 行 车 车 轮 的 轴 线 的 绘 制putimage(i-l,200,w,COPY PUT);line(2,327,562,327);delay(10);自 行 车 行 驶 动 画 的 实 现)for(i=0;i10;i+)(pieslice(37,290,start,end,37);pieslice(175,290,start,end,37);start+=40;
25、end+=40;)处 于 静 止 状 态 的 自 行 车 车 轮 的 轴 线 的 绘 制 getchO;restorecrtmode();closegraph();)5、试 自 行 设 计 一 个 美 术 图 案,并 且 用 程 序 实 现。(略)第 四 章 1.为 什 么 说 直 线 生 成 算 法 是 二 维 图 形 生 成 技 术 的 基 础?答:无 论 什 么 复 杂 图 形,它 们 都 是 由 直 线 段 和 曲 线 段 组 成(三 维 图 形 经 投 影 后 最 终 变 成 了 二 维 图 形),而 图 形 设 备 显 示 曲 线 段 时,最 终 还 是 将 曲 线 段 转 化 成
26、 一 系 列 直 线 段 逼 近 表 示 的。因 此,所 有 图 形 都 可 以 看 成 是 由 直 线 段 组 成 的。可 参 考 课 本 图 4.1。2.根 据 DDA画 直 线 算 法,遍 一 程 序 求(0,0)到(4,1 2)和(0,0,)到(12,4)的 直 线 ttinclude“graphics,h”ttinclude math,h”void DDALine(int xl,int yl,int x2,int y2)float increx,increy,x,y,length;int i;if(abs(x2-xl)abs(y2-yl)length=abs(x2-xl);elsel
27、ength=abs(y2-yl);increx=(x2-xl)/length;increy=(y2-yl)/length;x=xl;y 二 yi;for(i=l;i=length;i+)(putpixel(x,y,1);x=x+increx;y=y+increy;void main()(int driver=DETECT,mode=0;initgraph(&driver,&mode,);int xl=0,yl=0,x2=4,y2=12;int x3=12,y3=4;DDA Line(xl,yl,x2,y2);DDA Line(xl,yl,x3,y3);getch();)3.根 据 逐 点 比
28、较 法 编 一 程 序 画 一 段 圆 弧,其 圆 心 为(0,0),圆 弧 两 点 为 A(5,0)、B(0,5)方 法 1:顺 4 象 限 ttinclude graphics,h”#include stdio.httinclude conio.hvoid ZDBJ ARC(float xO,float yO,float xl,float yl,float x2,float y2);void main()int gdriver=CGA,mode=CGAC0;initgraph(&gdriver,&mode,);ZDBJ_ARC(0,0,25,0,0,25);getch();closegra
29、ph();)void ZDBJ_ARC(float xO,float yO,float xl,float yl,float x2,float y2)float f=0.0,F;float dx=l,dy=l;while(abs(xl-x2)1)if(f=0)(xl=xl-dx;yl=yl;putpixel(xl,yl,1);f=f-2*dx*(xl-xO)+dx*dx;)else(xl=xl;yl=yl+dy;putpixel(xl,yl,1);f=f+2*dy*(yl-yO)+dy*dy;方 法 2:逆 4 象 限 ttinclude,graphics,h”#include“stdlib.h
30、#include“conio.hvoid ZDBJARC(float xO,float yO,float x l,flo a t y l,flo a t x 2,flo at y2);void main()(int gdriver=CGA,m ode=CGAC0;ini tgraph(&gdriver,&mode,);ZD B J_A R C(0,0,0,25,25,0);getchO;closegraph();)void ZD B J ARC(float xO,float yO,flo a t xl,flo a t y l,flo a t x2,flo a t y2)(flo a t f=0
31、.0,F;flo a t dx=l,dy=l;w hile(abs(yl-y2)1)if(f0)(xl=xl;yl=yl-dy;putpixel(xl,yl,1);f=f-2*dy*abs(yl-yO)+dy*dy;elsexl=xl+dx;yl=yl;putpixel(xl,yl,1);f=f+2*dx*abs(xl-xO)+dx*dx;方 法 3:顺 1 象 限 ttinclude graphics.hv 省 略 了 图 形 初 始 化 的 步 骤 ttinclude“conio.hinclude math,h”void main()int xl=5,yl=0,x2=0,y2=5;int
32、x0=0,y0=0;int R=sqrt(x2-x0)*(x2-x0)+(y2-y0)*(y2-y0);int dx=abs(x2-xl);int dy=abs(y2-yl);int n=dx+dy;putpixel(x2,y2,1);int f;int x=x2,y=y2;for(int i=0;i=0)putpixel(x,y一,1);elseputpixel(x+,y,1);)getchO;closegraph();另 一 种 做 法 是 采 用 课 本 P97页 表 4.2 的 公 式 4.编 一 程 序 用 角 度 DDA法 画 一 圆 以 圆 点 为 圆 心,半 径 为 2 0的
33、圆 tiinclude“graphics,h”省 略 了 图 形 初 始 化 的 步 骤 ttinclude conio.httinclude math,h”void main()(int x0=0,y0=0,R=20;int xl,yl,xi,yi;int N=R*8;float a=2*3.14/N;xl=20,yl=0;for(int i=l;i=N;i+)xi=xO+R*cos(i*a)yi=yO+R*sin(i*a);line(xl,yl,xi,yi);xl=xi;yl=yi;getch();closegraph();)5.如 果 线 段 端 点 坐 标 值 不 是 整 数,采 用
34、D D A 算 法 产 生 的 直 线 和 将 端 点 坐 标 值 先 取 整 后 再 用 Bressenham算 法 产 生 的 直 线 是 否 完 全 相 同?为 什 么?能 否 扩 充 整 数 Bressenham算 法 使 之 能 够 处 理 当 线 段 端 点 坐 标 值 不 是 整 数 的 情 况。答:不 相 同。因 为 DDA算 法 总 是 选 择 A x 或 者 中 的 较 大 者 作 为 步 进 的 方 向,不 失 一 般 性,假 设 选 择 x 方 向,则 x 方 向 每 前 进 一 个 像 素 点,y 方 向 前 进 的 像 素 点 个 数 应 该 在 0,1 区 间,但
35、 是 由 于 采 用 了(向 上 或 者 向 下 或 者 四 舍 五 入)取 整 运 算,必 然 会 导 致 某 些 像 素 点 偏 在 了 真 实 直 线 的 一 侧。而 Bressenham算 法 每 一 步 都 会 根 据 实 际 直 线 与 网 格 的 距 离 来 决 定 下 一 个 像 素 点 的 选 择,因 此 所 选 像 素 点 更 加 贴 近于 真 实 的 直 线。可 以 扩 充 整 数 Bressenham算 法 使 之 能 够 处 理 当 线 段 端 点 坐 标 值 不 是 整 数 的 情 况。6.若 采 用 Bresenham算 法 实 现 画 圆,写 出 算 法 实 现
36、 的 具 体 流 程(包 括 判 别 公 式 推 导 等 等)。答:给 定 圆 心 在 原 点,半 径 为 R 的 圆,其 方 程 为 x2+y2=R2,构 造 函 数 F(x,y)=x2+y2-R2,对 于 圆 上 的 点,有 F(x,y)=0;对 于 圆 外 的 点,F(x,y)0;而 对 于 圆 内 的 点,F(x,y)0,M 在 圆 外,说 明 Pd离 圆 弧 更 近;当 F(xw,y)=0,则 约 定 取 Pd。构 造 判 别 式&=F(XM,yM)=F(xi+1,y0.5)=区+1尸+(y0.5)?-R2(1)当&0,取 Pu(xi+1,y.),计 算 下 一 步 的 的 判 别
37、式 di.i=F(xu,yu)=F(xj+2,y-0.5)=(x(+2)2+(y.-O.5)2-R2=&+2xi+3所 以 沿 正 右 方 向,&的 增 量 为 2xi+3。(2)当&0,取 Pd(xi+1,yi+1),计 算 下 一 步 的 的 判 别 式 di=F(Xd,yd)=F(xt+2,yi-1.5)=(x,+2)2+(y-l.5)2-R2=di+2(xyJ+5所 以 沿 右 下 方 向,&的 增 量 为 2(xlyJ+5。显 然,所 绘 制 圆 弧 段 的 第 一 个 像 素 为 Po(O,R),因 此 判 别 式 d。的 初 始 值 为 1.25-R,可 以 令 d=d-0.25
38、来 摆 脱 小 数 运 算,则 判 别 式&以 对 应 于 水-0.25,由 于 d 始 终 是 整 数,由-0.25等 价 于&0。7.已 知 4 个 型 值 点(1.0,2.0),(2.5,3.5),(4.0,4.5),(5.0,4.0),求 各 段 三 次 样 条 曲 线。Si(X)(i=l,2,3),设 边 界 条 件 为 抛 物 线 端 解:ml=x2-xl=l.5,m2=x3-x2=l.5,m3=x4-xj8rlX 2=m2/(m2+ml)=0.5;J。u2=ml/(ml+m2)=0.5;X3=m3/(m2+m3)=0.4;u3=m2/(m2+m3)=0.6;R2=3*u2*(y3
39、-y2)/m2+入 2*(y2-yl)/ml=2.5;R3=3*u3*(y4-y3)/m3+X3*(y3-y2)/m2=-0.1;于 是 有 0.5bl+2b2+0.5b3=2.5.(1)0.4b2+2b3+0.6b4=-0.1.(2)又 边 界 抛 物 线 端 bl+b2=2.(3)b3+b4=-l.(4)由,(2),(3),(4)得bl=39/38,b2=37/38,b3=3/38,b4=-41/38从 而 cl=-l/57;dl=O;c2=-l/57;d2=-64/513;c3=-ll/19;d3=0;故 可 得 si(x)=2+39/38(x-1)-1/57(x-1)2 XG 1.0,
40、2.5s2(x)=3.5+37/38(x-2.5)-l/57(x-2.5)-64/513(x-2.5)3 x e 2.5,4.0s3(x)=4.5+3/38(x-4)-11/19(x-4)2 xe 4.0,5.08.已 知 4 个 型 值 点 坐 标 值 P0(5,5)、Pl(10,15)、P2(15,10)、P3(10,5),绘 一 个 三 次 贝 塞 尔 曲 线。解:用 矩 阵 表 示 为 p(t)=t3 t2 t lPpO pl p2 p3TP=-1 3-3 13-6 3 01-3 3 0 01 0 0 0P(0)=5,5p(0.15)=7.215,8.536p(0.35)=9.83,1
41、0.64p(0.5)=11.25,10.625p(0.65)=12.015,9.615p(0.85)=11.606,7.198P(D=10,5将 上 面 各 点 相 连 可 以 画 出 三 次 贝 塞 尔 曲 线。9.编 写 一 个 绘 制 Bezier曲 线 的 程 序。该 程 序 根 据 以 下 数 据 点 x,y:50,100 80,230 100,270 140,160180,50 240,65 270,120 330,230 380,230 430,150计 算 出 结 果,并 实 现 三 段 首 尾 相 接 的 三 次 贝 塞 尔 曲 线 在 屏 幕 上 显 示 的 功 能,采 用
42、 了 C+语 言 实 现;include graphics”#include conio.h ttinclude stdio.h typedef struct(double x,y;DPOTNT;定 义 结 构 体 class Bezier 定 义 Bezier类(private:DPOINT*bP;int m_maxIndex;void drawFrame();void drawCurve();void drawCurve(int pO,int pl,int p2,int p3);public:Bezier(DPOINT*p,int len);/定 义 构 造 函 数 void draw()
43、;);Bezier:Bezier(DPOINT*p,int len)/构 造 函 数 的 实 现(this-bP=p;m_maxlndex=len-l;)void Bezier:draw()通 过 公 有 函 数 调 用 私 有 函 数(drawFrame();drawCurve();)void Bezier:drawFrame()其 功 能 是 绘 制 出 多 边 形 和 各 个 端 点(setcolor(12);for(int i=0;im_maxlndex;i+)(line(bPi.x,bPi.y,bPi+l.x,bPi+l.y);绘 制 多 边 形 circle(bPi.x,bPi.y
44、,5);绘 制 各 个 端 点)circle(bPm_maxIndex,x,bPm_maxIndex.y,5);)void Bezier:drawCurve()实 现 多 段 Bezier曲 线 绘 制 的 功 能(for(int i=0;i=m maxTndex-3;i+=3)(drawCurve(i,i+1,i+2,i+3);)void Bezier:drawCurve(int pO,int pl,int p2,int p3)实 现 绘 制 某 一 段 Bezier曲 线 的 功 能(double tmpx=0.0;double tmpy=0.0;double t=0.0;for(;t=l
45、.0;t+=0.001)(tmpx=(-bPpO.x+3*bPpl.x-3*bPp2.x+bPp3.x)*t*t*t+(3*bPpO.x-6*bPpl,x+3*bPp2.x)*t*t+(-3*bPpO.x+3*bPpl.x)*t+bPpO.x;tmpy=(-bPpO.y+3*bPpl.y-3*bPp2.y+bPp3.y)*t*t*t+(3*bPpO.y-6*bPpl.y+3*bPp2.y)*t*t+(-3*bPpO.y+3*bPpl.y)*t+bPpO.y;putpixel(tmpx,tmpy,3);)void main()主 函 数 的 实 现(int graphdriver=DETECT,
46、graphmode;initgraph(&graphdriver,&graphmode,E:tc3bgi);setbkcolor(15);DPOINT*p;p=new DPOINTtlO;p0.x=50.0;p0.y=100.0;pl.x=80.0;pl.y=230.0;p2.x=100.0;p2.y=270.0;p3.x=140.0;p3.y=160.0;p4.x=180.0;p4.y=50.0;p5.x=240.0;p5.y=65.0;p6.x=270.0;p6.y=120.0;p7.x=330.0;p7.y=230.0;p8.x=380.0;p8.y=230.0;p9.x=430.0;p
47、9.y=150.0;Bezier bzr(p,10);bzr.draw();delete p;getchO;closegraph();)10.编 写 一 个 绘 制 B 样 条 曲 线 的 程 序。该 程 序 根 据 以 下 数 据 点 x,y:P050,130 Pl 120,40 P2100,270和 P3140,160计 算 出 结 果,并 实 现 两 段 首 尾 相 接 的 两 次 B 样 条 曲 线 在 屏 幕 上 显 示 的 功 能,采 用 了 C+语 言 实 现;将 已 知 点 代 入 式(4-19)可 得 两 段 两 次 B 样 条 曲 线 方 程:P-2 11 50 130片(
48、匕)二 工/1-2 2 0 120 401 1 0j 100 270=-45 160 t2+70-90 t+85 856 W 1-2 11F120 40 1-2 2 0 100 270J 0j 140 160=3 0-170 t2+-2 0 230 t+110 155#include graphics”#include conio.h#include stdio.h typedef struct(double x,y;DPOTNT;定 义 结 构 体 class B_Spline 定 义 B样 条 曲 线 类(private:DPOINT*bP;int m_maxlndex;有 多 少 个 型
49、 值 点 void drawFrame();void drawCurve();void drawCurve(int pO,int pl,int p2);public:B Spline(DPOINT*p,int len);/定 义 构 造 函 数 void draw();;B_Spline:B_Spline(DPOINT*p,int len)构 造 函 数 的 实 现(this-bP=p;m maxlndex=len;)void B_Spline:draw()通 过 公 有 函 数 调 用 私 有 函 数(drawFrame();drawCurve();)void B_Spline:drawFr
50、ame()其 功 能 是 绘 制 出 多 边 形 和 各 个 端 点(setcolor(12);for(int i=0;im_maxlndex-l;i+)(line(bPi.x,bPi.y,bPi+l.x,bPi+l.y);绘 制 多 边 形 circle(bPi.x,bPi.y,5);绘 制 多 边 形 各 个 端 点 circle(bPm_maxIndex-l.x,bPm_maxIndex-1.y,5);void B Spline:drawCurve()实 现 多 段 B样 条 曲 线 绘 制 的 功 能(for(int i=0;im_maxIndex-2;i+)(drawCurve(i,