网站大量收购独家精品文档,联系QQ:2885784924

基于bSpline插值的直纹面与旋转曲面.docVIP

  1. 1、本文档共20页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于bSpline插值的直纹面与旋转曲面

基于bSpline插值的直纹面和旋转曲面(上)   此程序主要分为两部分,一部分是抽象旋转曲面和直纹面的类,另一部分是视图界面的类组织,二者通过在视图界面定义数据成员建立联系。   第一部分: 旋转曲面类:   class Revsurf:public bspline,public Mesh                         //旋转曲面 { public:        Revsurf(Point3* pt1,int num,int uu,int vv,int mm);             //构造函数        ~Revsurf(); public:        void writeMesh(char *fname);                             //将生成的点、法线、面片写入文件        void makefaces();                                       //生成面片及索引        void makenormals();                                     //生成法线及索引        int ctlpt_num;                                          //控制点的个数        int v;                                                  //经度方向        int u;                                                  //纬度方向        Point3 *ctlpt;                                           //保存控制点        void makepoints();                                       //生成点及索引 };   Revsurf::Revsurf(Point3 *pt1,int num,int uu,int vv,int mm)                                          //旋转曲面 :ctlpt(pt1),ctlpt_num(num),u(uu),v(vv),bspline(mm,num) {        numVerts=u*v;        numNorms=u*v;        numFaces=(u-1)*v;            pt=new Point3[numVerts];        norm=new Vector3[numNorms];        face=new Face[numFaces]; }   Revsurf::~Revsurf() { }   /******************************旋转曲面生成顶点*********************************/ void Revsurf::makepoints() {        int i=0,j=0,k=0;        float t=0,x=0,y=0,z=0;        Point3 *p;                                        //记录两条u线的点        p=new Point3[u];          //细节处理1e-5        for(t=knot[0]+1e-5;iu;t+=knot[ctlpt_num+m-1]/(float)(u-1)-1e-5)                           //采集两条u线的点        {               p[i].set(0,0,0);               for(k=0;kctlpt_num;k++)               {                      p[i].x+=ctlpt[k].x*getbsplineValue(k,m,t,knot);                      p[i].y+=ctlpt[k].y*getbsplineValue(k,m,t,knot);                      p[i].z+=ctlpt[k].z*getbsplineValue(k,m,t,knot);               }               i++;        }          glBegin(GL_LINE_STRIP

文档评论(0)

317960162 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档