第五讲 几何造型及自由曲线曲面.pptVIP

  • 5
  • 0
  • 约8.12千字
  • 约 64页
  • 2018-06-27 发布于湖北
  • 举报
MoveTo (arry1[n][0],arry1[n][1]); a0 = k1; a1 = k3; a2 = -3*k1+3*k2-2*k3-k4; a3 = 2*k1-2*k2+k3+k4; b0 = m1; b1 = m3; b2 = -3*m1+3*m2-2*m3-m4; b3 = 2*m1-2*m2+m3+m4; dt = 1.0/steps; for(i=1;isteps;i++) { t = i*dt; t2 = t*t; t3 = t*t2; x = a0+a1*t+a2*t2+a3*t3; y = b0+b1*t+b2*t2+b3*t3; lineto(x,y); } } 5. 5 曲线及曲面的理论 二、常用的曲线 参数曲线 (2) 三次参数曲线 ——Hermite曲线方程 5. 5 曲线及曲面的理论 二、常用的曲线 参数曲线 (3) 三次参数曲线的拼接 光滑拼接条件: 边界重合:前一段曲线的终点为后一段曲线的起点; 切向矢量连续:前一段曲线终点处的切矢等于后一段曲线起点处的切矢; 曲率连续:前一段曲线终点处的二阶切矢等于后一段曲线起点处的二阶切矢。 ——Hermite曲线方程 两段三次参数曲线光滑连接的条件: n段三次参数曲线光滑连接的条件: 二、常用的曲线 参数曲线 (3) 曲线的拼接 5. 5 曲线及曲面的理论 pi点处满足光滑连接条件。 i i-1 i+1 ——三切矢方程 二、常用的曲线 参数曲线 5. 5 曲线及曲面的理论 (3) 参数曲线的特性 n段拼接的参数曲线通过n+1个点 参数曲线由其端点(或通过点)位置以及各个点处的切矢确定,改变数据点的位置矢量,调节切矢的方向或者切矢的长度,都可以改变曲线形状。 ——Hermite曲线方程 i i-1 i+1 n段Hermite曲线方程光滑拼接的条件: 例:给定9个型值点,其中起始点和终止点是同一个点,从而其特征多边形是一个首尾相接的封闭多边形,具体坐标位置如下: (100,300),(120,200),(220,200),(270,100),(370,100),(420,200),(420,300),(220,280),(100,300) 假定各点处的一阶导数数值如下: (70,-70), (70,-70), (70,-70), (70,-70), (70,70), (70,70), (-70,70), (-70,70), (70,-70) 用Hermite插值方法绘制曲线。 Hermit三次曲线算法主要实现子程序实例 void HermitCurve() { int i; int arry1[9][2]={100,300,120,200,220,200,270, 100,370, 100, 420,200,420,300,220,280,100,300}; int arry2[9][2]={70,-70,70,-70,70,-70,70,-70,70,70,70,70, -70,70,-70,70,70,-70}; for(i=0;i8;i++) { SetColor(4); line(arry1[i][0],arry1[i][1],arry1[i+1][0],arry1[i+1][1]); SetColor(12); Hermit3(arry1,arry2,i,100); } } void Hermit3(int **arry1,int **arry2,int n,int steps) { int i,x,y,k1,k2,k3,k4,m1,m2,m3,m4; float a0,a1,a2,a3,b0,b1,b2,b3,dt,t,t2,t3; k1=arry1[n][0]; k2=arry1[n+1][0]; k3=arry2[n][0]; k4=arry2[n+1][0]; m1=arry1[n][1]; m2=arry1[n+1][1]; m3=arry2[n][1]; m4=arry2[n+1][1]; Hermit三次曲线绘制演示 2. Bezier曲线——由曲线上的两个端点和若干个不在曲线上但能决定曲线形状的点确定。 通常n次Bezier曲线由n+1个顶点构成的特征多边形确定。特征多边形上的各顶点为曲线的特征点或控制点。 (1) n次Bezier曲线数学表达式: 二、常用的曲线 5. 5 曲线及曲面的理论 三次Bezier曲线 其中: ——Bernstein基函数,即曲线上各个位置矢量的调和函数。 规定: 5. 5

文档评论(0)

1亿VIP精品文档

相关文档