
09Beziercurvesandsurfaces.ppt
86页Computer Graphics浙江大浙江大学学计算机算机学学院院Bezier Curves and Surfaces渊氨英米番狭涂鄂说掳鄂匹印查街丘什擦肤乌哩瓮芳歉软袄沟印狞呼帚管09Beziercurvesandsurfaces09BeziercurvesandsurfacesKUCG浙江大浙江大学学计算机算机学学院院本章摘要n多边形表示n曲线/曲面基础知识n二次曲面n三次样条nBezier曲线/曲面nB-样条曲线/曲面nNURBS曲线/曲面nOpenGL中的曲线/曲面砒苏喉天埋台旦屹理堆鸥人鸡训润舒熏展趣诅吹幽撵疑脆卯佩臣挤捍滋纷09Beziercurvesandsurfaces09BeziercurvesandsurfacesKUCG浙江大浙江大学学计算机算机学学院院曲线/曲面基础知识n1963年Ferguson提出参数化方法;n法国雷诺汽车公司的Bezier1971年提出Bezier曲线;nDe Boor于1972年提出B样条算法;Gordon,Riesenfeld将B样条用于自由曲线曲面;n1975年Versprille在博士论文中首次提出了有理B样条方法;n1991年ISO将NURBS作为定义工业产品几何形状的唯一数学方法.伏耿敦茁忻揽痉招菲锄垦藩陛漳详雄苯酚起河霜急借渊荤柏糠粪萎孜哨扦09Beziercurvesandsurfaces09BeziercurvesandsurfacesKUCG浙江大浙江大学学计算机算机学学院院曲线/曲面基础知识n隐式方程: F(x,y)=0n问题:n不具有几何不变性;n斜率无穷大会出现溢出问题;n不便于计算与编程等问题.崎沪睬掷嫡航罚匣腆常未闺敌稳溢应幕仍埋棒相骂煮苗锯翔胖宦判照捎履09Beziercurvesandsurfaces09BeziercurvesandsurfacesKUCG浙江大浙江大学学计算机算机学学院院曲线/曲面基础知识n参数化表示n优点n满足几何不变性;n便于几何变换;n可处理多值问题和斜率无限大问题;n规格化的参数变量n便于分片表示;n更大的自由度控制曲线曲面形状;n便于计算曲线曲面的位置距离导数等;n便于用矢量矩阵表示;蚀霄蓝序页龚腿迅啊脖汁霹案胞蕴构俯惰匙江峪岳匠全枢跑没酪损园格掌09Beziercurvesandsurfaces09BeziercurvesandsurfacesKUCG浙江大浙江大学学计算机算机学学院院插值、逼近和拟合插值、逼近和拟合型值点:是指通过测量或计算得到的曲线或曲面上少量描述其几何形状的数据点。
控制点:是指用来控制或调整曲线曲面形状的特殊点,曲线曲面本身不一定通过控制点插值和逼近:这是曲线曲面设计中的两种不同方法插值设计方法要求建立的曲线曲面数学模型,严格通过已知的每一个型值点而逼近设计方法建立的曲线曲面数学模型只是近似地接近已知的型值点拟合:是指在曲线曲面的设计过程中,用插值或逼近的方法使生成的曲线曲面达到某些设计要求蛀肄骇渡束激钩褥甚桓再哮受撤吮寓孜久晋奄墨终酌嘉供木柒妹辐踪左蜗09Beziercurvesandsurfaces09BeziercurvesandsurfacesKUCG浙江大浙江大学学计算机算机学学院院插值、逼近和拟合插值、逼近和拟合盎变逊骡册挽啥栈截白寿录炳菲值蓉咎赔阶漱软后轴旺走记员亚谚孙波惋09Beziercurvesandsurfaces09BeziercurvesandsurfacesKUCG浙江大浙江大学学计算机算机学学院院曲线段间的连续性定义曲线段间的连续性定义 n连续性 : C0连续(0阶参数连续)——前一段曲线的终点与后一段曲线的起点相同 C1连续(一阶参数连续)—— 两相邻曲线段的连接点处有相同的一阶导数 C2连续(二阶参数连续)—— 两相邻曲线段的连接点处有相同的一阶导数和二阶导数。
钞掳烁甄铡逐街剂憾栏猿时拳抑宇赵橙蓄怪烘握脉羹补亮穷饰阵潞旁磕耀09Beziercurvesandsurfaces09BeziercurvesandsurfacesKUCG浙江大浙江大学学计算机算机学学院院n对于参数曲线段若:1)则 在P处具有 连续; 2) 在点P处重合,且在点P处的切矢量方向相同,大小不相等,则 在点P处具有 连续; 3) 在点P处重合,且在P点处的切矢量方向相同,大小相等,则 在点P处具有 连续; 踩硒蜗瘁粥寐丸舟迟翟公淤明菌板灸搪央宫鸣刽引子点槛玛菇饮虐琉蛋史09Beziercurvesandsurfaces09BeziercurvesandsurfacesKUCG浙江大浙江大学学计算机算机学学院院 4)若 在点处已有 , 连续性,且 的大小和方向均相同,则 在点P处具有 连续; 5)若 在点处已有 , 连续性,且 的方向相同,大小不相等,则 在点P处具有 连续;将拭员窥床悸辊洒陷瑟褐灯皿骇溯惜杠黍躁檄叛圣孜梯埔残闹卒追鹰跃禾09Beziercurvesandsurfaces09BeziercurvesandsurfacesKUCG浙江大浙江大学学计算机算机学学院院Bezier曲线/曲面nBezier曲线的定义曲线的定义n在给定空间n+1个点P0,P1,Pn,称下列参数曲线为n次的Bezier曲线n其中, 是Bernstein基函数,即 扛帝规座倚歧萤例囤寞羌妻术舆枣傅勾舒惊款脓伞椎音阳咏汐营宋至芽倡09Beziercurvesandsurfaces09BeziercurvesandsurfacesKUCG浙江大浙江大学学计算机算机学学院院n一般称折线P0,P1,Pn为C(u)的控制多边形;P0,P1,Pn各点为C(u)的控制顶点。
控制多边形是C(u)的大致形状的勾画;C(u)是对P0,P1,Pn的逼近Bezier曲线/曲面涣尼拎圈糕尚稍嗜薄癣姻连秸濒郸壮仔剔瘫掳侯唱媚镰言拣猫耗耘掘慑瞻09Beziercurvesandsurfaces09BeziercurvesandsurfacesKUCG浙江大浙江大学学计算机算机学学院院常用常用Bezier曲线的矩阵表示曲线的矩阵表示n一次一次Bezier曲线:曲线:n矩阵表示为:n这是一条从 到 的直线段倘墨选蓑胚停牙声傣沧苇条豪屠匈庞喻晶依活咽碱蕉咆吻弯柿镭疼研好冰09Beziercurvesandsurfaces09BeziercurvesandsurfacesKUCG浙江大浙江大学学计算机算机学学院院常用常用Bezier曲线的矩阵表示曲线的矩阵表示n二次二次Bezier曲线曲线 n矩阵表示为荡钓终酬榷途洋匹袭瞧翌以碾痉秒莆棵谁齿沙禁词泉物搽态陷尘截堪葛活09Beziercurvesandsurfaces09BeziercurvesandsurfacesKUCG浙江大浙江大学学计算机算机学学院院常用常用Bezier曲线的矩阵表示曲线的矩阵表示n三次三次Bezier曲线曲线 n矩阵表示为:烁酝飞债哪掺倘涨币封采绥慌闲禾滋嘶温坊邵易惹瞥趋升滇首胃漂缝缮鹰09Beziercurvesandsurfaces09BeziercurvesandsurfacesKUCG浙江大浙江大学学计算机算机学学院院n Bernstein基函数具有下列性质:基函数具有下列性质:n 1) 非负性:n 对于所有的i,n以及 均有n 成立;n 2) 规范性:n 3)对称性 控干首哥诱椅谢法象液浇歇难希仇着苏褒庄骇文歇突粱转拌期酞为原喜胜09Beziercurvesandsurfaces09BeziercurvesandsurfacesKUCG浙江大浙江大学学计算机算机学学院院n4)递推性 n5)端点性 剖瞎撼驰入您娩痉逞猖训雪痒铬含褐烷偶陌瓣芭蛾抽去袜被颠噶氢缆撞课09Beziercurvesandsurfaces09BeziercurvesandsurfacesKUCG浙江大浙江大学学计算机算机学学院院n6)最大性 :n 在 处达到最大值;n7)可导性 n8)升阶公式 霹稿阀网幕质拨拽急蹲楚力撇天无蓄斑函企疫斋务髓挥汤膘膘坑寞二绝恶09Beziercurvesandsurfaces09BeziercurvesandsurfacesKUCG浙江大浙江大学学计算机算机学学院院n9)分割性n10)积分性 卯燎蓄氖枷牲缸眷园城叁洗轰善腆箕征空津腆匈挠等鉴厦炒谚刮蕉旦番躺09Beziercurvesandsurfaces09BeziercurvesandsurfacesKUCG浙江大浙江大学学计算机算机学学院院n2..Bezier曲线的性质曲线的性质 Bezier曲线C(u)具有以下性质: 1)端点性质端点性质 2) 端点切矢量端点切矢量 Bezier曲线在 点处与边 相切,在点 处与边 相切。
皋苯疙陇恋恰霉诧厘攘烯恫术釜誊蒜缨较竣厅婴乌斗专督怂哪色民山饶柬09Beziercurvesandsurfaces09BeziercurvesandsurfacesKUCG浙江大浙江大学学计算机算机学学院院n3) 端点的曲率端点的曲率:在C(u)两端点的曲率分别为:n这是因为n 孽等照疗败络皆笆原杖址缎恋坝壳狙铁彻凑顿一卖贼销巡客刘一哇走砌柏09Beziercurvesandsurfaces09BeziercurvesandsurfacesKUCG浙江大浙江大学学计算机算机学学院院n4)对称性)对称性 n若保持原全部顶点的位置不变,只是把次序颠倒过来,则新的Bezier曲线形状不变,但方向相反n5)几何不变性)几何不变性nBezier曲线的位置和形状只与特征多边形的顶点的位置有关,它不依赖坐标系的选择葫蹦凌铰挚七霞窃力坛磅差稠盼扑柄候牲仪莽谣墨匠檬彼盒讽坡页卉癸涎09Beziercurvesandsurfaces09BeziercurvesandsurfacesKUCG浙江大浙江大学学计算机算机学学院院n6)凸包性)凸包性 n因 为 是 多 边 形 各 顶 点 P0,P1,Pn的 加 权 平 均 , 而 权 因 子 ,这反映在几何图形上有两重含义:na. Bezier曲线C(u)位于其控制顶点P0,P1,Pn的凸包之内;nb.Bezier曲线C(u)随着其控制多边形的变化而变化;n7)变差缩减性)变差缩减性n对于平面Bezier曲线C(u),平面内任意条直线与其交点的个数不多于该直线与其控制多边形的交点个数;悔亏授刷栖近葵悯僵卢吩嗡还催凋眩糊唁姓先喂照觅嘱棠籍窟芥银善模逾09Beziercurvesandsurfaces09BeziercurvesandsurfacesKUCG浙江大浙江大学学计算机算机学学院院n4..Bezier曲线的曲线的De Casteljau算法算法n给定三维空间点给定三维空间点 以及一维标量参数以及一维标量参数u u;;假定:假定:n并且并且 那么 即为Bezier曲线上参数u处的点。
暇糖甸宠迹诀瘸肘淮骤沏少嫂因漳枣靖伪诱硒挥崖既颠著臣铂旦诗韦远养09Beziercurvesandsurfaces09BeziercurvesandsurfacesKUCG浙江大浙江大学学计算机算机学学院院DeCasteljau (P,n,u,C){ /* Compute point on a Bezier curve using DeCasteljau algorithm *//* Input : P,n,u *//* Output: C (a point) */for(i=0;i<=n;i++ ) Q[i]=P[i] ;for(k=1; k<=n; k++)for(i=0; i<=n-k; i++)Q[i]=(1.0-u)*Q[i]+u*Q[i+1] ;C=Q[0] ;}蹿怕漓墟粒垄踊坏植浴慧烁脆拈襄哎条光雨拱绰谣诗概言冲碱晌占圭护肘09Beziercurvesandsurfaces09BeziercurvesandsurfacesKUCG浙江大浙江大学学计算机算机学学院院n5..Bezier曲线的几何作图法曲线的几何作图法n利用De Casteljau算法可以以几何方式计算参数值 处的曲线点:n1)根据给定的参数值u ,在控制多边形的每条边上确定某一分割点,使分割后的线段之比为u:(1-u);由此得分割点为:n由此组成一个边数为(n-1)的新的多边形; 叭箭必奖真喻诬恰卢斩杉腕硅呜畔舀腊倍卸椒个献斟探硕槐充变松秃戌仁09Beziercurvesandsurfaces09BeziercurvesandsurfacesKUCG浙江大浙江大学学计算机算机学学院院n2) 用 相 同 的 方 法 对 该 多 边 形 再 次 分 割 , 得 到 分 割 点 形成另一个新的多边形;n3) 按 相 同 的 过 程 分 割 n-1次 后 , 得 到 两 个 顶 点 ,再分割得到所求的点 即为所求的u处的曲线点;异呢敲阜毋版漠找碧涌羔纵纯拍魔捞焕坍腑死挨琅叹刚么孤医覆扬没扬外09Beziercurvesandsurfaces09BeziercurvesandsurfacesKUCG浙江大浙江大学学计算机算机学学院院Sub-Dividing Bezier CurvesP0P1P2P3考试!!辉卤岭荐握急回阻袋蛹薛三匆济嗜貌间朝遥淬涌蔷驻臃疫厄稚曳胀馋铭毫09Beziercurvesandsurfaces09BeziercurvesandsurfacesKUCG浙江大浙江大学学计算机算机学学院院n 图8.6 Bezier 曲线的几何作图法 搏抑妙蜘冶姥录拽扫凝很贵荫概值郭撤贵独亭抬伴绷无摸黄凉成誉梯戎弟09Beziercurvesandsurfaces09BeziercurvesandsurfacesKUCG浙江大浙江大学学计算机算机学学院院n6..Bezier曲线的分割曲线的分割n几何作图法中计算得到 的同时也将原Bezier曲线分为两个子曲线段: 就是定义在 上的子曲线段,而 是定义在 上的子曲线段。
Bezier曲线的任意分割是指给定两个参数值 求原Bezier曲线 上由两点 与 所界定的那段子曲线段的控制顶点:1)先用 对原曲线做一分为二的分割; 滞炼鲍蛹酵翰忍蜒痴喳诊捻俄氨泉蜡漳姓栽让待阐尊星挡匹时爽舟卜翠史09Beziercurvesandsurfaces09BeziercurvesandsurfacesKUCG浙江大浙江大学学计算机算机学学院院n2) 对 那个子曲线用 做一分为二的分割,所得子曲线段就是所求的原Bezier曲线的子曲线段 n Bezier 曲线的分割 铂悍杉扔钟寅斡泄渍鄙琶描算腔妹号碱则勺务牵超兼缴徐寡朔酸晌迄炭藏09Beziercurvesandsurfaces09BeziercurvesandsurfacesKUCG浙江大浙江大学学计算机算机学学院院n77.Bezier曲线的升阶曲线的升阶有时为了便于Bezier曲线的修改,需要增加控制顶点提高灵活性,而不要改变原来曲线的形状,也就是将n次的Bezier曲线进行升级表达为n+1次的Bezier曲线,即:n只需将左边乘以 然后比较 的系数,即可得到 煌声生扇驯已好六警绵垫帅档汞邦倒中佯城橡额搜勘篮臂窃涯掠献星掏俊09Beziercurvesandsurfaces09BeziercurvesandsurfacesKUCG浙江大浙江大学学计算机算机学学院院n几何意义:n1) 新 的 控 制 顶 点 是 对 老 的 特 征 多 边 形 在 参 数 处进行线性插值的结果;n2)升阶后的新的特征多边形在老的特征多边形的凸包内;n3)升阶后的新的特征多边形更逼近Bezier曲线;必畦刨漾拒木膊塌宣雌官镭布惭悄碘泪秒容蜕屋反耶秘择如尽紊氟潭爬君09Beziercurvesandsurfaces09BeziercurvesandsurfacesKUCG浙江大浙江大学学计算机算机学学院院n例如对于二次Bezier曲线: n升阶后的控制顶点为 撵幽挑桨灌韶来亡型儒吓饺豫冗招由怀苔韩英攀尼颈包轨困哇脯绿螺哼镐09Beziercurvesandsurfaces09BeziercurvesandsurfacesKUCG浙江大浙江大学学计算机算机学学院院n8. Bezier曲线的顶点反求曲线的顶点反求n已知Bezier曲线上给定参数处的位置矢量和参数阶次,利用Bezier曲线定义和端点特性,可列出一组方程,求解方程组,就可得到相应的控制顶点。
例子: 已知三次Bezier曲线上的四个点分别为Q0(120,0),Q1(45,0), Q2(0,45),Q3(0,120),它们对应的参数分别为0, 1/3, 2/3, 1,反求三次Bezier曲线的控制顶点 由已知条件可得方程组:铣嫉倪赦琴咐肄卞陛镰愁剔渍庆矢婉胳硬译轮跺铆荔喉厘溶龚甥棉棍拆崩09Beziercurvesandsurfaces09BeziercurvesandsurfacesKUCG浙江大浙江大学学计算机算机学学院院Q Q0 = P P0 (t=0)Q Q1 = (8/27)P P0 + (4/9)P P1 + (2/9)P P2 + (1/27)P P3 (t=1/3)Q Q2 = (1/27)P P0 + (2/9)P P1 + (4/9)P P2 + (8/27)P P3 (t=2/3)Q Q3 = P P3 (t=1)zier曲线的端点性质得到的;其余两式是由三次Bezier曲线的展开式:C(u)=(1-u)3P0+3u(1-u)2P1+3u2(1-u)P2+u3P3 分别将Q Q0、Q Q1、Q Q2、Q Q3的x、y坐标代入方程组求解,可得:x0 = 120 x1= 35 x2 = –27.5 x3 = 0 y0 = 0 y1 = –27.5 y2 = 35 x3 = 120 伊触悟曳厄桌阶公介亏色僧辐舜圃镁税户未苍颐旅春肾阔墙芦绥厅翌哆僳09Beziercurvesandsurfaces09BeziercurvesandsurfacesKUCG浙江大浙江大学学计算机算机学学院院9. Bezier9. Bezier曲线的拼接曲线的拼接设有两条Bezier曲线 和 ,其控制顶点分别为:P0,P2,Pn 和Q0,Q2,Qm:具拾及粳田埠晒滨浑纤殖易乱倦椒砍孙浊忍裙瓮芹比刺拯哪佣时楔涕姓贤09Beziercurvesandsurfaces09BeziercurvesandsurfacesKUCG浙江大浙江大学学计算机算机学学院院n现考虑两条曲线的拼接,不同阶几何连续的条件如下:1)一阶连续性 根据端矢量条件: 其连续条件为 即 : 买庆嘿伙费宋榷钮吏颐獭妓额扔晤麓双恫呀缚酸仿挪曝呸诀巳嗡怒缮卒猜09Beziercurvesandsurfaces09BeziercurvesandsurfacesKUCG浙江大浙江大学学计算机算机学学院院n1) 二阶连续性n根据二阶导矢量:n为满足连续性条件:n可得: n 餐闲擦脯擞耍宣札海转靡暮戒赦书谨阮户捆糯炼汞玩芍皋尔嘻佑盅读搜脉09Beziercurvesandsurfaces09BeziercurvesandsurfacesKUCG浙江大浙江大学学计算机算机学学院院n n Bezier 曲线的拼接 疯俐损堑藐矢宦刨厂芒饶遁甄大映镊慰铸捷幽产漫卉官滓痕笔碱辱摈豌冀09Beziercurvesandsurfaces09BeziercurvesandsurfacesKUCG浙江大浙江大学学计算机算机学学院院Bezier曲面曲面 n1.定义.定义 在空间给定 个点称下列张量积形式的一般称为Pij为Bezier曲面 的控制顶点;把由两组多边形 (i=0, 1, …, n)和 (j=0,1,2, …., m)组成的网称为Bezier曲面 的控制网格,记为 绘名吭皇丢辙盈骄男恿阵涌碍菊屈擅杀陶痘杆喉馒棉账梨婪悬酒耶展朵殉09Beziercurvesandsurfaces09BeziercurvesandsurfacesKUCG浙江大浙江大学学计算机算机学学院院控制网格 是 的大致形状勾画;是对 的逼近。
Bezier 曲面 伦板岭兜皇搏聋衙各雕破胚锌獭晋徽指脉纱佰遣漳痈拄甲哺讫扫绷袁钞恿09Beziercurvesandsurfaces09BeziercurvesandsurfacesKUCG浙江大浙江大学学计算机算机学学院院n2.性质.性质nBezier曲面 具有以下性质:1)端点位置端点位置: 四个端点分别是 这是因为2)边界曲线边界曲线 的四条边界的四条边界线分别是以线分别是以为控制多边形的Bezier曲线 堆当镊獭砸荒帘握卷碎樱座饶蛹霍派假改措颗谣渐坦沈锹位芦颅女骗鄙蹋09Beziercurvesandsurfaces09BeziercurvesandsurfacesKUCG浙江大浙江大学学计算机算机学学院院3)端点的切平面端点的切平面 三角形 所在的平面分别在点 与曲面相切 4)端点法线方向端点法线方向 由端点的切平面知是 在点的法线方向;其余各端点 的法向情况也类似梆拆峙琳两责所幻微跳捶撞胆饮垢缴浇瘪逢猿缘耶纲霖也浚剃澡因腆盼急09Beziercurvesandsurfaces09BeziercurvesandsurfacesKUCG浙江大浙江大学学计算机算机学学院院5)5)凸包性凸包性 曲面 位于其控制顶点 的凸包性。
6)几何不变性几何不变性 曲面 的形状和位置与坐标系的选取无关,仅仅与各控制顶点的位置有关 n7) 变差递减性变差递减性n对于Bezier曲面,空间任意条直线与其交点的个数不多于该直线与其控制多边形的交点个数;治钠陨饵囱磅匡籽珊处揖淘炕拙常嗜脏蜂长巳扒猿巍兢爷构扛驾吸摆琉萤09Beziercurvesandsurfaces09BeziercurvesandsurfacesKUCG浙江大浙江大学学计算机算机学学院院n3.Bezier曲面的曲面的De Casteljau算法算法假定已知 个点构成的Bezier曲面 以及参数下面的De Casteljau算法可计算出相应的曲面上的点坐标:首先对确定的 计算 ,也就是说利用De Casteljau算法计算控制顶点的第 J0行 ;利用(m+1)次 De Casteljau算法计算 ;再次对 计算 的值得到所求的点屹揍苫沦轻蔡垦吓扎馒掀鞭居知抱庄娘蒋拜控溯蒜凤悍粉宋奎继屏惊济蒲09Beziercurvesandsurfaces09BeziercurvesandsurfacesKUCG浙江大浙江大学学计算机算机学学院院DeCasteljauSurf(P, n, m, u, v, S){ /* Compute a point on a Bezier surface */ /* Input : P , n, m, u, v */ /* Output : S */if(n<=m){for(j=0;j<=m;j++)DeCasteljau(P[j][], n, u, Q[j]) DeCasteljau(Q, m, v, S) ;}else {for(i=0;i<=n;i++)DeCasteljau(P[][i], m, v, Q[i]) ;DeCasteljau(Q, n, u, S) ;} 挑终粉亢企弓汤乱讳匀肯显朋沁换壕潮准逾仓谷孕贪蔚宇匈庐档辞本便缀09Beziercurvesandsurfaces09BeziercurvesandsurfacesKUCG浙江大浙江大学学计算机算机学学院院4.Bezier曲面的微分曲面的微分 n 阶的Bezier曲面 的偏微分n5.BezierBezier曲面的法矢量曲面的法矢量 nBezier曲面的法矢量等于两个偏微分的叉积; 萨灿疆勺柿尔坪新的咸逻淫标竿淑庞淋与创渔贩摘直娠青愤找样搏谜毡增09Beziercurvesandsurfaces09BeziercurvesandsurfacesKUCG浙江大浙江大学学计算机算机学学院院n6.Bezier曲面的升阶曲面的升阶 假设将 阶的Bezier曲面升阶为 ,则:采用Bezier曲线升阶类似的处理方法,得到: 熊砒劲滚盲坏惕最得隐乞撒宣廷炭孝饯焕射伦梁鄂冠附弟雷荐靳壁辞欢赴09Beziercurvesandsurfaces09BeziercurvesandsurfacesKUCG浙江大浙江大学学计算机算机学学院院若升阶为 ,则:7..Bezier曲面的几种表达形式曲面的几种表达形式 1)双一次Bezier曲面: 这是一双曲抛物面(马鞍面);2)双二次Bezier曲面 构俞螺溉咏萍蹄食腿莹缘倘肆护铅淮病数陀盐俐恕渐箍主黍浆骸扑撰讲扬09Beziercurvesandsurfaces09BeziercurvesandsurfacesKUCG浙江大浙江大学学计算机算机学学院院该曲面的四条边界是抛物线 3)双三次Bezier曲面:该曲面的四条边界都是三次Bezier曲线;可通过控制内部的四个控制顶点 来控制曲面内部的形状; 奥光编麓瞧述陪齿袋赤咳淫娃梁配刀娥座杏缓镣机侣吗苛澳疮仑眉制钩黍09Beziercurvesandsurfaces09BeziercurvesandsurfacesKUCG浙江大浙江大学学计算机算机学学院院n8..Bezier曲面拼接曲面拼接 两块曲面拼接时,若在其公共边界上任一点的切平面重合,则称这两曲面沿其公共边界达到了G1连续。
设 阶Bezier曲面 和另一块 阶曲面 拼接: 荷外泰颜遂滚调门坟映惕储科靡求案腥耍乳醇奶思栽轮凶皋纪断兼伎墙组09Beziercurvesandsurfaces09BeziercurvesandsurfacesKUCG浙江大浙江大学学计算机算机学学院院如果下列条件满足其中k为常数,则 和 沿其公共边界 P(1,v)达到G1连续 淆翠故锨沦朔愁仇狰烃拭绽翰舔蚂檀买镍铃矫响封削牢商具驱等遍陇迢者09Beziercurvesandsurfaces09BeziercurvesandsurfacesKUCG浙江大浙江大学学计算机算机学学院院Common edge酝蔚集赖橇否陡爬畏埂沥任酞舆壕婶乙暇冻段帛掣霞龟腑和锁跪一牡烘趾09Beziercurvesandsurfaces09BeziercurvesandsurfacesKUCG浙江大浙江大学学计算机算机学学院院What Does OpenGL Support?nEvaluators: a general mechanism for working with the Bernstein polynomialsnCan use any degree polynomialsnCan use in 1-4 dimensionsnAutomatic generation of normals and texture coordinatesnNURBS supported in GLUnQuadricsnGLU and GLUT contain polynomial approximations of quadrics司宗路分崇趾致松耀镰卑根击硫贴妇讽仆假箭蔗盔做孕千井活敢触居暇噎09Beziercurvesandsurfaces09BeziercurvesandsurfacesKUCG浙江大浙江大学学计算机算机学学院院One-Dimensional EvaluatorsnEvaluate a Bernstein polynomial of any degree at a set of specified valuesnCan evaluate a variety of variablesnPoints along a 2, 3 or 4 dimensional curvenColorsnNormalsnTexture CoordinatesnWe can set up multiple evaluators that are all evaluated for the same value跑钞卸锤纤仿魏掷傍慧迁懊牵竟宏粉泄懒娱搪宅金沈物尝膨备扑蠕脐因注09Beziercurvesandsurfaces09BeziercurvesandsurfacesKUCG浙江大浙江大学学计算机算机学学院院Setting Up an EvaluatorglMap1f(type,u_min,u_max,stride, order, pointer_to_array)what we want to evaluatemax and min of u1+degree of polynomialpointer to control dataseparation between data pointsEach type must be enabled by glEnable(type)赫判役路锅颂捅啼阂范嚎侵铁贪各猫蠢迁几痔萍色篇趟纂目碎硒贮霄约苯09Beziercurvesandsurfaces09BeziercurvesandsurfacesKUCG浙江大浙江大学学计算机算机学学院院ExampleConsider an evaluator for a cubic Bezier curve over (0,1)point data[ ]={…………..}; * /3d data /*glMap1f(GL_MAP_VERTEX_3,0.0,1.0,3,4,data);data are 3D verticescubicdata are arranged as x,y,z,x,y,z……three floats between data points in arrayglEnable(GL_MAP_VERTEX_3);临狡擒竣其墅宋摆构赌辣柯戚绰楼苹嚎它慰衣列吸挫雇植溯摧愿庚喧磨蒲09Beziercurvesandsurfaces09BeziercurvesandsurfacesKUCG浙江大浙江大学学计算机算机学学院院EvaluatingnThe function glEvalCoord1f(u) causes all enabled evaluators to be evaluated for the specified unCan replace glVertex, glNormal, glTexCoordnThe values of u need not be equally spaced赌嗣校阴漓挣廊归垒亢决钝郎伍啮雅崭绣打戍疥箍恕央挺朋始蹈辅漳酣课09Beziercurvesandsurfaces09BeziercurvesandsurfacesKUCG浙江大浙江大学学计算机算机学学院院Example• Consider the previous evaluator that was set upfor a cubic Bezier over (0,1)• Suppose that we want to approximate the curve with a 100 point polylineglBegin(GL_LINE_STRIP) for(i=0; i<100; i++) glEvalCoord1f( (float) i/100.0);glEnd();衷织妊室稚肇孙匀屈彼钧娃凑模占烁跨井册返竣远皆婆兑霞柄逮呀堡拜揉09Beziercurvesandsurfaces09BeziercurvesandsurfacesKUCG浙江大浙江大学学计算机算机学学院院Equally Spaced PointsRather than use a loop, we can set up an equally spaced mesh (grid) and then evaluate it with one function callglMapGrid(100, 0.0, 1.0);sets up 100 equally-spaced points on (0,1)glEvalMesh1(GL_LINE, 0, 99);renders lines between adjacent evaluated points from point 0 to point 99吴给瞄爵享猜蚕颊撰移门干擅肩僧哥赖棉捷耘饿亩予湛滋滨洗访藐猾纶管09Beziercurvesandsurfaces09BeziercurvesandsurfacesKUCG浙江大浙江大学学计算机算机学学院院Bezier SurfacesnSimilar procedure to 1D but use 2D evaluators in u and vnSet up withglMap2f(type, u_min, umax, u_stride, u_order, v_min, v_max, v_stride, v_order, pointer_to_data)nEvaluate with glEvalCoord2f(u,v)冉逐稗孤肝棺狱膨窿伟尘撞鲍对诫照黍蓉些剂衡思鬃醚股颂雪偶借婿绵叭09Beziercurvesandsurfaces09BeziercurvesandsurfacesKUCG浙江大浙江大学学计算机算机学学院院Examplebicubic over (0,1) x (0,1)point data[4][4]={………};glMap2f(GL_MAP_VERTEX_3, 0.0, 1.0, 3, 4, 0.0, 1.0, 12, 4, data);Note that in v direction data pointsare separated by 12 floats since arraydata is stored by rows培寓靳擦巳云舍干奢荐赐套嚼亥黄易撕徒颂督玖仙翻瘦拍猴惊绩掷刷刷不09Beziercurvesandsurfaces09BeziercurvesandsurfacesKUCG浙江大浙江大学学计算机算机学学院院Rendering with Linesfor(j=0;j<100;j++) { glBegin(GL_LINE_STRIP); for(i=0;i<100;i++) glEvalCoord2f((float) i/100.0, (float) j/100.0); glEnd();glBegin(GL_LINE_STRIP); for(i=0;i<100;i++) glEvalCoord2f((float) j/100.0, (float) i/100.0); glEnd();}must draw in both directions凭搪征捅谩畦撕砍售孽耽肛诌铰委壤幌因澜疼嫂久旁库瘴溅陌翟船亢桥揽09Beziercurvesandsurfaces09BeziercurvesandsurfacesKUCG浙江大浙江大学学计算机算机学学院院Rendering with Quadrilateralsfor(j=0; j<99; j++) { glBegin(GL_QUAD_STRIP); for(i=0; i<100; i++) { glEvalCoord2f ((float) i/100.0, (float) j/100.0); glEvalCoord2f ((float)(i+1)/100.0, (float)j/100.0); } glEnd():}We can form a quad mesh and render with lines康贸酪厦贼氦曙比慧阑姓熏揪渭允惫摔拙渤磺厅帝元雍除做撰念柯雪挝峦09Beziercurvesandsurfaces09BeziercurvesandsurfacesKUCG浙江大浙江大学学计算机算机学学院院Uniform MeshesnWe can form a 2D mesh (grid) in a similar manner to 1D for uniform spacingglMapGrid2(u_num, u_min, u_max, v_num, v_min, v_max)nCan evaluate as before with lines or if want filled polygonsglEvalMesh2( GL_FILL, u_start, u_num, v_start, v_num)引聚雁鲸浸穷来父料给力恢谋浙境傻泥西喂烂撒升裴啦地驶挥彪涕脆无彤09Beziercurvesandsurfaces09BeziercurvesandsurfacesKUCG浙江大浙江大学学计算机算机学学院院Rendering with LightingnIf we use filled polygons, we have to shade or we will see solid color uniform renderingnCan specify lights and materials but we need normalsnLet OpenGL find themglEnable(GL_AUTO_NORMAL);韭兼良冒诧家两鳖舞畦怕正甥更舵赛肺杀窟婉葱甘剐酒图浴雏叁览赐惭翱09Beziercurvesandsurfaces09BeziercurvesandsurfacesKUCG浙江大浙江大学学计算机算机学学院院OpenGL中的Bezier曲线/曲面n二次曲面n创建二次曲面对象oGLUquadricObj* gluNewQuadric() ;ovoid gluDeleteQuadric(GLUquadric *qobj) ;n指定二次曲面绘制的方法和状态oVoid gluQuadricDrawStyle(GLUquadric* qobj,Glenum drawstyle) ;oGLU_FILL,GLU_LINE,GLU_POINT,GLU_SILHOUETTEoVoid gluQuadricNormals(GLUquadric* qobj,GLenum normals) ;oVoid gluQuadricOrientation(GLUquadric* qobj,GLenum orientation) ;oVoid gluQuadricTexture(GLUquadric* qobj,GLenum textureCoords) ;箍靳蜀联扳盛迪铜阮跪奄佣榆违坪县捏个度挑秧啄钾痒屈腋划能卢菠称喷09Beziercurvesandsurfaces09BeziercurvesandsurfacesKUCG浙江大浙江大学学计算机算机学学院院二次曲面n绘制二次曲面o球体oVoid gluSphere(GLUquadric* qobj,GLdouble radius,GLint slices, Glint stacks) ;o园柱oVoid gluCylinder(GLUquadric* qobj,GLdouble baseRadius,GLdouble topRadius,GLdouble height,GLint slices, Glint stacks) ;o圆盘oVoid gluDisk(GLUquadric* qobj,GLdouble innerRadius,GLdouble outerRadius, GLint slices, Glint stacks) ;o部分圆盘oVoid gluPartialDisk(GLUquadric* qobj,GLdouble innerRadius,GLdouble outerRadius, GLint slices, GLint loops, GLdouble startAngle,Gldouble sweepAngle) ;鸳墓火植绰阿任曰巷沦烙悸孔楼踞鲜欢枚沧涉邹调滴胞冯构狰矫伟鱼盔亚09Beziercurvesandsurfaces09BeziercurvesandsurfacesKUCG浙江大浙江大学学计算机算机学学院院OpenGL中的二次曲面n二次曲面的绘制请见quadric.c浦团扳复镐蠕颗刽莆阎劣穆荧脉索涧义菊乌中扦驳杰帜政钓彻郑材聂菇幕09Beziercurvesandsurfaces09BeziercurvesandsurfacesKUCG浙江大浙江大学学计算机算机学学院院OpenGL中的Bezier曲线n#include
