- 1、本文档共22页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
显示曲线和曲面
Angel: Interactive Computer Graphics 3E ? Addison-Wesley 2002 计算机图形学 杨 武 影像科学与技术实验室 东南大学计算机学院 yangwu@seu.edu.cn 第十章三维对象表示 第十章之第四节 显示曲线和曲面 主要内容 介绍绘制曲线的方法 用直线段近似 有限差分 推导出计算Bézier曲线和曲面的递推方法 学会如何把多项式数据转化为Bézier多项式所需要的数据 多项式的计算 显示多项式曲线的最简单方法就是计算出多项式上许多点的值,从而形成一条近似的折线 对于曲面,可以形成近似的三角网格或者四边网格 应用Horner方法计算 p(u)=c0+u(c1+u(c2+uc3)) 对于三次的情形,只需要三次乘法 有限差分 建立有限差分表格 p(u)=1+3u+2u2+u3 求出下一个值 从底部开始,依次向上可以求出多项式的新值 De Casteljau 算法 从3个点P0,P1,P2开始 选定一个 t∈[0,1] A(t)=(1-t)P0+tP1 ; B(t)=(1-t)P1+tP2 P(t)=(1-t)A+tB P(t)=(1-t)2 P0+2t(1-t) P1+t2 P2 De Casteljau 算法 4个控制点呢? P(t)=(1-t)3 P0+3t(1-t)2 P1 +3t2 (1-t) P2+t3 P3 De Casteljau 算法 扩展到任意n+1个控制点 从Pi0(t)=Pi开始,结束于 P(t)=P0n (t) Bezier曲线的另一定义 Bézier曲线分割 P(t*)把曲线一分为二:[0,t*] 、[t*,1]怎样求出这两段曲线的控制点? 给出了一种曲线绘制方法 示例 l(u) 和 r(u) 有效形式 所有曲线都是Bezier曲线 如果能找到给定多项式曲线表示为Bézier曲线所需要的控制顶点,那么就可以应用递推方法显示它 假设p(u)是以插值曲线的形式给出,数据点为q: 那么存在Bézier控制点p使得 列出方程并求解,可得 p=MB-1MIq 矩阵 示例 曲面 由于Bezier曲面片对应的u(v)线为Bezier曲线,因此曲面也可用递推方法 首先,沿 u 方向细分 得到新的点 原来的某些控制顶点被抛弃 第二次细分 Utah 茶壶 计算机图形学中最著名的数据集 通常用到的是由306个三维顶点定义的32张Bézier曲面片 二次曲面 任何二次曲面都可以表示成 pTAp+bTp+c=0 ,这儿 p=[x, y, z]T A, b 和 c 为系数 用光线跟踪方法绘制 求解参数方程 p(a)=p0+ad 表示的光线 与曲面的交 解一个二次方程 无解: 光线错过曲面 一个解: 光线与曲面相切 两个解: 穿入并穿出曲面 对于等间距的 {uk} ,如下定义有限差分 对于n次多项式,n 阶差分的结果是一个常数 B A P P1 P0 P2 t=0.3 P1 P0 P2 P(0.3) P(t) 1-t t 1-t t t 1-t P0 P1 P2 P3 P(t) p0, p1 , p2 , p3 确定了一条三次Bezier曲线 考虑左半部分 l(u) 和右半部分 r(u) l(u)和r(u)也是Bezier曲线,控制顶点分别为: {l0, l1, l2, l3} 和 {r0, r1, r2, r3} l0 = p0 r3 = p3 l1 = ?(p0 + p1) r2 = ?(p2 + p3) l2 = ?(l1 + ?( p1 + p2)) r1 = ?(r2 + ?( p1 + p2)) l3 = r0 = ?(l2 + r1) 只需要移位和加法! p(u)=uTMIq p(u)=uTMBp 插值形式到Bezier形式 B样条到Bezier形式 生成这些曲线的初始数据是相同的,但生成时都是把它们转化为Bézier控制顶点,然后采用Bézier递推方法 Bezier Interpolating B-Spline 被保存下来的初始点 新增加的点 被抛弃的初始点 生成1/4曲面片 创建了16个点
文档评论(0)