如何用有限个点拟合出光滑的曲线

2016-02-19 17:58 14 1 收藏

想不想get新技能酷炫一下,今天图老师小编就跟大家分享个简单的如何用有限个点拟合出光滑的曲线教程,一起来看看吧!超容易上手~

【 tulaoshi.com - 编程语言 】


  /* 二次抛物线法绘制曲线函数 */
  
  void paowuxian(int *x,int *y,int n,unsigned int k)
  
  {
  unsigned int i,j;
  float t1,t2,t3,t,a,b,c,d,tx,ty;
  *x=*(x+1);*(y)=*(y+1);
  *(x+n+1)=*(x+n);*(y+n+1)=*(y+n);
  t=0.5/k;
  setcolor(10);
  moveto(*(x+1),*(y+1));
  for(i=0;in-1;i++)
    {
    for(j=1;jk;j++)
      {
      t1=j*t;
      t2=t1*t1;
      t3=t2*t1;
      a=4*t2-t1-4*t3;
      b=1-10*t2+12*t3;
      c=t1+8*t2-12*t3;
      d=4*t3-2*t2;
      tx=a*(*(x+i))+b*(*(x+i+1))+c*(*(x+i+2))+d*(*(x+i+3));
      ty=a*(*(y+i))+b*(*(y+i+1))+c*(*(y+i+2))+d*(*(y+i+3));
      lineto(tx,ty);
      }
    }
    lineto(*(x+i+2),*(y+i+2));
  }
  
  /* 二次B样条法绘制曲线函数 */
  
  void byangtiao(int *x,int *y,int n,unsigned int k)
  {
  unsigned int i,j;
  float t,t1,t2,a,b,c,tx,ty;
  *x=*(x+1);*y=*(y+1);
  *(x+n+1)=*(x+n);*(y+n+1)=*(y+n);
  t=1.0/k;
  setcolor(13);
  moveto((*x+(*(x+1)))/2.0,(*y+(*(y+1)))/2.0);
  for(i=0;in;i++)
    {
    for(j=1;jk;j++)
      {
      t1=j*t;
      t2=t1*t1;
      a=(t2-2*t1+1)/2.0;
      b=t1-t2+1/2.0;
      c=t2/2.0;
      tx=a*(*(x+i))+b*(*(x+i+1))+c*(*(x+i+2));
      ty=a*(*(y+i))+b*(*(y+i+1))+c*(*(y+i+2));
      lineto(tx,ty);
      }
    }
  }
  
  /*这个忘了是什么算法了。:)似乎是叫三次参数样条法*/
  
  void parspl(int p[][2],int n,int k)
  {
  int i,j;
  float t1,t2,t3,t,a,b,c,d,x,y;
  p[0][0]=p[1][0];p[0][1]=p[1][1];
  p[n+1][0]=p[n][0];p[n+1][1]=p[n][1];
  t=0.5/k;
  moveto(p[1][0],p[1][1]+D);
  for(i=0;in-1;i++)
    {
    for(j=1;jk;j++)
      {
      t1=j*t;
      t2=t1*t1;
      t3=t2*t1;
      a=4*t2-t1-4*t3;
      b=1-10*t2+12*t3;
      c=t1+8*t2-12*t3;
      d=4*t3-2*t2;
      x=a*p[i][0]+b*p[i+1][0]+c*p[i+2][0]+d*p[i+3][0];
      y=a*p[i][1]+b*p[i+1][1]+c*p[i+2][1]+d*p[i+3][1];
      lineto(x,y,15);
      }
    }
    lineto(p[i+2][0],p[i+2][1],15);
  } 

来源:http://www.tulaoshi.com/n/20160219/1616487.html

延伸阅读
如何去除痤疮 5个方法还你光滑肌肤 痤疮对于青春期的女性来说是一个非常让人苦恼的问题,会让你本来光滑无暇的肌肤变得坑坑洼洼,那么我们应该如何去除痤疮呢?自制面膜能不能帮助我们呢?其实去除痤疮很简单,只要你按照图老师小编介绍的这五个小方法去做,就能轻松的解决这个问题了。 一、皮肤清洁要做到位 很...
标签: 摄影
教你如何用曲线加强色调对比,这次教程主要是调色,也顺便说一下逆光拍摄的小贴士吧。下面就一起来了解一下吧,希望会对大家有所帮助的 很久很久不出教程了,网上问的人也多,就拿出一张以前发过的图来做教程吧,目前问逆光的是最多的。 这次教程主要是调色,也是我现在修人像用的主要的方法,所以经常有人问我用了哪些PS功能,其实就...
标签: 生活常识
如何让皮肤光滑 如何让皮肤光滑 第一:将香蕉捣碎,加入牛奶,涂在脸上。20分钟后洗净,可以使你的皮肤细腻光滑。 第二:把鸡蛋清和蜂蜜搅拌均匀后涂在脸上可以使皮肤光滑并减少皱纹。 第三:把姜黄粉末和牛奶混合后涂在脸上可以去除晒斑和减少脸上的汗毛。 注意事项 以上就是一些可以让皮肤变光滑的方法,在生活中不妨试...
标签: 皮肤护理
问答 图钉提问: 妊娠5个月,腿部及肚皮腰部皮肤瘙痒两天,以腿部症状严重,为红色沙砾状皮疹,皮疹不融合,夜间比白天严重,身体其他部分没有,搔抓后腿部出现轻度苔藓样皮损,与衣服摩擦有疼痛感。本次发病及持续的时间:三天前无明显诱因发病目前一般情况:食欲睡眠尚可,病史:既往皮肤干燥诊断和治疗经过及效果:当地诊断不一,有的说是妊...
利用CAD控制点绘制样条曲线   AutoCAD2013样条曲线控制点是指通过指定控制点来绘制样条曲线。 图01 1.单击AutoCAD2013工具栏绘图按钮;从弹出的菜单中选择样条曲线控制点;或执行命令:SPLINE 图02 2.AutoCAD2013命令提示: 指定第一个点(指定样条曲线的第一个点) 图03 3.输入下一个点(指...

经验教程

603

收藏

18
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部