




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
会计学1Bezier曲线计算机图形学Bézier曲线和曲面法国工程师Bézier使用逼近样条为雷诺汽车公司设计汽车外形而开发。数学基础简单,容易实现
Bézier样条在各种CAD系统、大多数图形系统、相关绘图和图形软件包中有广泛应用第1页/共42页BézierCurves定义控制点:
pk=(xk,yk,zk),k=0,1,···n.构造P(u)Bk,n(u)是Bernstein(伯恩斯坦)函数:C(n,k)是二项式系数:Prescribed:00=1,0!=1.Bernsteinbasis第2页/共42页4Vectorequation第3页/共42页2023/1/175两点创建1次Bezier曲线n=1,
矩阵方程:P0
到P1直线。第4页/共42页2023/1/176TheTwoFirstDegreeBlendingFunctions1次Bernstein函数第5页/共42页2023/1/177Whenn=2, Thematrixformis:Thisisaparabola(抛物线)startingatP0andendingatP1.And:3点创建2次Bezier曲线第6页/共42页2023/1/178BlendingFunctions
andtheCurveExamples2次Bernstein函数第7页/共42页2023/1/1793次
BézierCurvesFourpointscanspecifyingacubicBéziercurve.P(t)=B0,3P0+B1,3P1+B2,3
P2+B3,3P3 =(1-t)3P0+3t(1-t)2P1+3t2(1-t)P2+t3P3 (0t
1)第8页/共42页2023/1/17103次BézierCurves矩阵表达式第9页/共42页2023/1/1711 Thatis:代数形式第10页/共42页Asarule,aBézierCurveisapolynomialofdegreeonelessthanthenumberofcontrolpointsused:
twopointsgenerateastraightline,
threepointsgenerateaparabola,
fourpointsacubiccurve,andsoforth.UkUn-k第11页/共42页2023/1/1713已知Bezier曲线特征多边形的顶点P0(1,2)、P1(3,4)、P2(5,6)、P3(7,8),求Bezier曲线的参数方程P(t)(矩阵表示);计算t=0.5,曲线上点P(0.5)
重要试从Bèzier曲线的定义式写出三次Bèzier曲线的矩阵表示。(本题15分,只写出结果者得2分)UkUn-k第12页/共42页2023/1/1714Examplesprog8BezierCurve.exe第13页/共42页2023/1/1715BézierCurves的性质EndpointInterpolation(端点插值)AffineInvariance(仿射不变性)Convex-hullProperty(凸包性)LinearPrecision(线性)Variation-diminishingProperty(变差缩减性)DerivativesofBézierCurves(导数)掌握第14页/共42页2023/1/1716端点插值EndpointInterpolationABézierCurvedosenotgenerallypassthrough,orinterpolate,allofthecontrolpoints,butitalwaysinterpolatesthefirstandthelastpoint.第15页/共42页2023/1/1717P0P3P2P1Q0Q3Q1Q2AffineInvariance(仿射不变性)第16页/共42页2023/1/1718Convex-hullProperty(凸包性)ABézierCurveneverwandersoutsideitsconvexhull.第17页/共42页2023/1/1719LinearPrecision(线性)Ifallofthecontrolpointsareplacedinastraightline,theirconvexhullcollapses(压缩)toaline.TheBézierCurveistherefore“trapped”insidethishullandsomustalsobeastraightline.第18页/共42页2023/1/1720Variation-diminishingProperty
(变差缩减性)第19页/共42页2023/1/1721DerivativesofBézierCurves导数ThefirstderivativeofaBézierCurveisSothevelocity(thefirstderivative)isanotherBézierCurve,builtonanewsetofcontrolvectorspk.第20页/共42页2023/1/1722Whent=0,t=1,onecanevaluatethederivativesatthestartingpointandtheendingpoint:Thus,theslopeatthebeginningofthecurveisalongthelinejoiningthefirsttwocontrolpoints,andtheslopeattheendisalongthelinejoiningthelasttwoendpoints.第21页/共42页2023/1/1723因此,曲线在起点处的切线方向是第一第二控制点的连线,长度是其n倍;曲线在终点处的切线方向是倒数第二第一控制点的连线,长度是其n倍。端点的二阶导数取决于与其最靠近的三个控制点,与其他点无关。事实上,r阶导矢只与(r+1)个相邻点有关,与更远点无关。
第22页/共42页2023/1/1724使用BézierCurves设计
ClosedBéziercurve(封闭)Topassclosertoagivenpoint(靠近曲线)PiecinglowerdegreeBéziercurvesections
(Bezier曲线拼接)第23页/共42页2023/1/1725ClosedBéziercurve第24页/共42页2023/1/1726ToPassClosertoGivenPoint第25页/共42页2023/1/1727Bezier曲线拼接G0:Pn=Q0;(ai=
Pi-
Pi-1
bj=
Qj-
Qj-1)G1:b1=an
,
thatis,
Pn-1,
Pn=Q0
,
Q1arecollinear.C1:b1=an,thatis,
Pn=Q0andQ1=Pn+(Pn-Pn-1).C2:basedonC1,andQ2=Pn-2+4(Pn-Pn-1).第26页/共42页2023/1/1728Chapter8
Three-DimensionalObjectRepresentations贝塞尔曲面(BézierSurfaces)第27页/共42页2023/1/1729张量积Bezier曲面定义 Withpj,kspecifyingthelocationofthe(m+1)by(n+1)controlpoints.第28页/共42页2023/1/1730MatrixForm第29页/共42页2023/1/1731ExampleBézierSurfaceconstructedform=2,n=2.prog8Beziersurf.exe第30页/共42页2023/1/1732BézierSurfacesHavetheSame PropertiesasBézierCurves.DoublecubicBéziersurfacepatchanditsboundary10P20P01P11P21P31P02P22P12P32P13P23P00)0,0(PP=30)0,1(PP=03)1,0(PP=33)1,1(PP=)0,(uP)1,(uP),0(vP),1(vP第31页/共42页2023/1/1733用OpenGL画Bezier曲线Bezier曲线由以下函数定义:
voidglMap1{fd}(GLenumtarget,TYPEu1,TYPEu2,GLintstride,GLintorder,constTYPE*points);GLenumtarget,枚举型变量,指定控制点维数:GL_MAP1_VERTEX_3、GL_MAP1_VERTEX_4。TYPEu1、TYPEu2,指定参数的最小、最大值。constTYPE*points,指向控制点数组的指针。GLintstride,指出在数组constTYPE*points中,从一个控制点到下一个控制点之间的数据个数(位移量)。GLintorder,控制点个数,即Bezier曲线的阶数,多项式次数+1。第32页/共42页2023/1/1734定义了Bezier曲线后,进行计算之前,需用target的值为参数调用glEnable()激活(glDisable()取消)。用以下函数计算曲线上的点:
voidglEvalCoord1{fd}{v}(TYPEu);TYPEu的取值在TYPEu1、TYPEu2之内。该函数会将参数规范化。例子:源代码运行第33页/共42页2023/1/1735定义并激活贝塞尔曲线后,亦可用定义网格(Grid,均匀间隔坐标)的方式在参数区间均匀取值计算曲线上点的坐标。定义一维网格:
voidglMapGrid1{fd}(GLintn,TYPEu1,TYPEu2);GLintn,参数的均匀分割数。一维求值并绘制曲线:
voidglEvalMesh1(GLenummode,GLintp1,GLintp2);GLenummode,取值GL_POINT或GL_LINE,画点或划线。GLintp1、GLintp2,参数的对应范围。第34页/共42页2023/1/1736用OpenGL画Bezier曲面Bezier曲面由以下函数定义:
voidglMap2{fd}(GLenumtarget,TYPEu1,TYPEu2,GLintustride,GLintuorder,TYPEv1,TYPEv2,GLintvstride,GLintvorder,TYPE*points);GLenumtarget,枚举型变量,指定控制点维数:GL_MAP1_VERTEX_3、GL_MAP1_VERTEX_4。TYPEu1、TYPEu2,TYPEv1、TYPEv2指定参数u和v的最小、最大值。constTYPE*points,指向控制点数组的指针。GLintustride、GLintvstride,分别指出在数组constTYPE*points中,从一个控制点到下一个控制点之间的数据个数(位移量)。GLintuorder、GLintvorder,分别指出两个方向的控制点个数,即其各自的阶数,多项式次数+1。第35页/共42页2023/1/1737定义了Bezier曲面后,进行计算之前,需用target的值为参数调用glEnable()激活(glDisable()取消)。用以下函数计算曲面上的点:
voidglEvalCoord2{fd}{v}(TYPEu,TYPEv);TYPEu、TYPEv的取值分别在TYPEu1、TYPEu2和TYPEv1,TYPEv2之内。该函数会将参数规范化。例子:源代码运行第36页/共42页2023/1/1738定义
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论