工程硕士课程-计算机图形学-第5章_第1页
工程硕士课程-计算机图形学-第5章_第2页
工程硕士课程-计算机图形学-第5章_第3页
工程硕士课程-计算机图形学-第5章_第4页
工程硕士课程-计算机图形学-第5章_第5页
已阅读5页,还剩55页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第五章曲线与曲面基础知识插值曲线

Bezier曲线

Bezier曲面

B样条曲线曲面插值曲面§5.1基础知识

1.显式、隐式和参数表示

显式表示2.参数表示曲线的优点

更大的灵活性

几何不变性

便于处理斜率无穷大的情况

易于定界能用矢量、矩阵表示

参数表示

隐式表示过同样三个点的非参数表示的曲线旋转前后的情况对几何不变性的理解(1)旋转后

45

xy旋转前

P0[0,0]P1[1,0.5]P0[2,0]yx对几何不变性的理解(2)过同样三个点的参数表示的曲线旋转前后的情况旋转后

45

xy旋转前x

P0[0,0]P1[1,0.5]P0[2,0]

y

圆的三种绘制方法的比较

③①

①②③

②4.样条、样条曲线、参数样条曲线3.自由曲线与曲面

指形状比较复杂,不能简单用二次方程描述的曲线和曲面

自由相对于规则而言要想绘制出来,也要设法先用数学方程表示样条

一种通过一系列的点绘制曲线的绘图工具样条曲线

基于样条绘制曲线的原理用数学方程表示的曲线

参数样条曲线

用参数形式表示的样条曲线5.插值、逼近、光顺、拟合插值:给定几个数据点,寻找一条曲线通过这些数据点,并满足一定要求。逼近:给定几个数据点,寻找一条曲线不一定通过这些数据点,但也能满足一定要求。光顺:曲线的拐点不能太多,拐来拐去曲线就会不顺眼。拟合:在曲线、曲面设计中,用插值或逼近的方法使生成的曲线或曲面达到某些要求(如连续、光顺的要求)。

点点通过

大致通过6.位置矢量、切矢量位置矢量OP0,写成P0对于参数曲线P(t)及其曲线上的P0点P0xP(t)yP0’

切矢量P0T,写成P0’Tx0P0

xP(t)yy0o7.调和函数P(t)=P0+(P1-P0)tP(t)=(1-t)P0+t·P1P(t)=

0(t)P0+

1(t)P1

P0P11

1(t)

0(t)01t

§5.2插值曲线

二次抛物线插值曲线

过P0、P1、P2三点作一条抛物线,使其在参数等于0、1/2、1时分别经过P0、P1、P2点。

这条曲线即为过这三点的二次插值曲线。

P2

P0

P1

表达式【例】求图中由P0,P1,P2三点决定的抛物线插值公式解:将P0,P1,P2的值代入下式:得:P0[0,0]°°°P1[25,40]P2[100,0]xy°°°xyQ(t)=[100t2,-160t2+160t]

如给定4个型制值点P1,P2,P3,P4,对相邻三个点进行抛物线插值,如对P1,P2,P3插值得抛物线Q1(t),对P1,P2,P3得抛物线Q2(s),在P1P2之间,对这两条抛物线进行线性调配,即:P(T)=(1-T)·Q1(u)+T·Q2(s)

其中T[0,1],u[0.5,1],s[0,0.5]利用二次插值曲线构造抛物线参数样条曲线。P0P1P2P3P0P1P2P3Q1(u)Q2(s)P(T)统一参数:T=2tu=0.5+ts=t将P(T)=(1-T)·Q1(u)+T·Q2(s)改写为:

P(t)=(1-2t)·Q1(0.5+t)+2t·Q2(t)展开并整理得:P0P2PiPmPm-1P1对于离散点列:P0,P1,…,Pm来说:可以证明这几段(共m-2段)三次曲线段组成了过P1到Pm-1的一条达C1连续的插值曲线

已知P0、P1、P0’、P1’,求作一条三次曲线Q(t),使Q(0)=P0、Q(1)=P1、Q’(0)=P0’、Q’(1)=P1’。

2.三次Hermite插值曲线解:设Q(t)=At3+Bt2+Ct+Dt

[0,1]则Q’(t)=2At2+2Bt+Ct

[0,1]。。P0P1P’0P’1可以得到:亦可写成:

Q(t)=F0(t)P0+F1(t)P1+F2(t)P’0+F3(t)P’1其中:

F0(t)=2t3-3t2+1

F1(t)=-2t3+3t2

F2(t)=t3-2t2+t

F3(t)=t3-t2。。P0P1P’0P’1Q=T·M·G参数幂向量矩阵特征矩阵几何系数矩阵边界条件矩阵F0(t)、F1(t)、F2(t)、F3(t)称为调和函数(权函数)t01/41/23/41F0127/321/25/320F105/321/227/321F209/641/83/640F30-3/64-1/8-9/640F0(t)F1(t)F2(t)F3(t)110tF调和函数(1)调和函数仅与参数值有关,而与原始条件无关(2)调和函数对于物体空间的三个坐标值作用是相同的(3)当处于参数边界条件时只有一个是起作用的。【例】已知P0[0,1]、P1[1,0]、P’0[1,0]、P1’[0,-1],求此四个条件决定的三次Hermite曲线,并求出Q(0.5)及Q’(0.5)的值。解:

P1[1,0]

P0P’0[1,0]P’1[

0,-1]

[0,1]即:Q(t)=(2t3-3t2+1)[0,1]+(-2t3+3t2)[1,0]+(t3-2t2+t)[1,0]+(t3-t2)[0,-1]=[-t3+t2+t,t3-2t2+1]Q’(t)=[-3t2+2t+1,3t2-4t]Q(0.5)=[0.625,0.625]Q’(0.5)=[1.25,-1.25]

P(0.5)=[0.625,0.625]

P’(0.5)=[1.25,-1.25]

将P’1改为[1,0]如何?

Q(t)=(2t3-3t2+1)[0,1]+(-2t3+3t2)[1,0]+(t3-2t2+t)[1,0]+(t3-t2)[1,0]=[t,2t3-3t2+1]Q’(t)=[1,6t2-6t]Q(0.5)=[0.5,0.5]Q’(0.5)=[1,-1.5]

P1[1,0]

P0P’0[1,0]P’1[

1,0]

[0,1]

P(0.5)=[0.5,0.5]

P’(0.5)=[1,-1.5]

Bezier其人

Bezier曲线的定义

伯恩斯坦基函数的性质

Bezier曲线的性质

Bezier曲线的作图与编程

Bezier曲线的拼接§5.3Bezier曲线1.

Bezier其人

2.Bezier曲线的定义

给定空间n+1个控制点的位置矢量Pi,则决定一条n次Bezier曲线,其参数方程可表示为:

其中,Pi构成该曲线的特征多边形,Bi,n(t)是伯恩斯坦多项式(基函数),可表示为:Bezier曲线的几个例子二次项系数(扬辉三角形)

C00C10C11C20C21C22C30C31C32C33C40C41C42C43C44

111121133114641

一次Bezier曲线n=1,有P0,P1两个控制点,决定一条一次Bezier曲线(直线)。。P0P1

二次Bezier曲线。。P1。P0。P2P’(0.5)P(0.5)n=2,有P0、P1、P2三个控制点,决定一条二次Bezier曲线(抛物线)。三次Bezier曲线

P0

P2

P1

P3

P0

P1

P2

P3n=3,有P0,P1,P2,P3四个点,决定一条三次Bezier曲线3.伯恩斯坦基函数

伯恩斯坦基函数的图形B0,1(t)B1,1(t)一次B0,2(t)B1,2(t)B2,2(t)二次B0,3(t)B1,3(t)B2,3(t)B3,3(t)B0,4(t)B1,4(t)B2,4(t)B3,4(t)B4,4(t)B0,6(t)B1,6(t)B2,6(t)B3,6(t)B4,6(t)B5,6(t)B6,6(t)4.Bezier曲线的性质端点处的性质

Q(0)=P0

Q(1)=Pn

Q’(0)=n(P1-P0)Q’(1)=n(Pn-Pn-1)

对称性保持n次Bezier曲线诸顶点的位置不变,而把次序颠倒过来,即下标为i的点(Pi)改为下标为n-i的点(Pn-i),则此时曲线的形状仍不变,只不过曲线的走向相反而已。

P0

P1

P2

P3凸包性

凸包:包围诸顶点的最小凸多边形。凸包性:Bezier曲线必在此凸包内。

P0

P1

P2

P3Q’(0)Q’(1)5.Bezier曲线的作图与编程(1)求作Q(1/3)的点P30

=Q(1/3)P10P20P11P21P12P0P3P2P1P10P11P12P20P21P30P0P1P2P3

P10P11P12

P0P3P2P1P30

=Q(1/3)

P10P20P11P21P12P0P3P2P1P30

=Q(1/3)P10P20P11P21P12P0P3P2P1(2)基于递推分割法的编程floatdecas(float*p,floatt,intn){inti,r;floatq[10];for(i=0;i<=n;i++)q[i]=p[i];for(r=1;r<=n;r++){for(i=0;i<=n-r;i++){q[i]=(1-t)*q[i]+t*q[i+1];}}return(q[0]);}main(){inti,n,k;floatt,x,y,px[10],py[10];

scanf(“%d,%d”,&n,&k);for(i=0;i<=n;i++)scanf(“%f,%f”,&px[i],&py[i]);for(i=0;i<=k;i++){t=(float)i/k;x=decas(px,t,n);y=decas(py,t,n);if(i==0)moveto(x,y);elselineto(x,y);}}(3)基于定义的编程

求ti的函数:floatpow(floattinti){floatp=1;intk;for(k=1;k<=i;k++)p=p*t;return(p);}

求Cni

的函数

intcni(intn,inti){if(i==0||i==n)return(1)elsereturn(cni(n-1,i)+cni(n-1,i-1));}

绘制Bezier曲线的函数

Bezier(intk,intpx[],intpy[],intn){inti,j,x,y;floatt;for(j=0;j<=k;j++){t=(float)j/k;x=0;y=0;for(i=0;i<=n;i++)

{x=x+cni(i,n)*pow(t,i)*pow(1-t,n-i)*px[i];

y=y+cni(i,n)*pow(t,i)*pow(1-t,n-i)*py[i];

}

if(i==0)moveto(x,y);elselineto(x,y);}}6.Bezier曲线的拼接

原因

C0连续

P(1)=Q(0)P’(1)=

Q’(0)C1连续G1连续

P(t)

Q(s)

P0P1P2Q0Q2Q1

P(t)Q(s)P0P1P2Q0Q1Q2Q1

P(t)

Q(s)P0P1P2Q0Q2P(1)=Q

(0)=1:C1连续1:G1连续

要求

平面上两条三次Bezier曲线的拼接P(1)=Q(0)P3=Q0

P’(1)=Q’(0)3(P3-P2)=3(Q1-Q0)∵

P3=Q0∴P2、P3、Q0、Q1一直线且P3-P2=Q1-Q0C1连续

P(t)Q(s)

P0P1P2Q3Q2Q1Q0P3C0连续

P(t)Q(s)P3Q0Q1Q2Q3P0P1P2§5.4Bezier曲面1.参数曲面的基本概念S(

,

)=[R·cos

·cos

,R·cos

·sin

,R·sin

]

其中[0,2],[-/2,/2]

一般曲面的参数表示S(u,w)=[x(u,w),y(u,w),z(u,w)]

u,w

[0,1]xyz0wu110

球面的参数表示

yzx0RA2.Bezier曲面的定义

给定Pi,j(i=0,1,…,m;j=0,1,…n)一共(m+1)

(n+1)个顶点,则决定一张m

n次曲面片,其参数方程表达式如下:其中Bi,m(u)及Bj,n(w)为伯恩斯坦基函数。

P00

P01

P02

P12

P22

P21

P20

P10

P11

1

1次Bezier曲面片

共P00、P10、P01、P11四个点,决定1

1次Bezier曲面片,实际上是一张双线性插值曲面,或叫扭面。

P00

P10

P01P11uw

1

1次Bezier曲面公式可以从双线性插值曲面的性质推出

P1(u)=(1-u)·P00+u·P10P2(u)=(1-u)·P01+u·P11

P00

P10

P01P11uw

Q(u,w)P1(u)P2(u)XZY

2

2次Bezier曲面片

P00

P01

P02

P12

P22

P21

P20

P10

P11

3

3次Bezier曲面片P01P00P10P20P30P02P03P11P12P13P21P22P23P31P32P33

uw§5.5B样条曲线曲面1.Bezier曲线的缺点2.二次B样条曲线段

Pi

Pi+2

Pi+1

Q(0)

Q(0.5)

Q’(0.5)

Q(1)

3.三次B样条曲线段Pi+1

Pi

Pi+2

Pi+3

Q(1)Q(0)

Q’(1)Q’(0)4.诸顶点决定的二次B样条曲线

P0P1PiPn

P1P0PiPn5.诸顶点决定的三次B样条曲线

PiP0P1Pn

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论