计算机图形学4(曲线和曲面造型)教学教材.ppt

计算机图形学4(曲线和曲面造型)教学教材.ppt

  1. 1、本文档共42页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
计算机图形学4(曲线和曲面造型)教学教材.ppt

曲线和曲面造型;曲面造型(Surface Modeling)是计算机辅助几何设计 (Computer Aided Geometric Design,CAGD)和计算机图形学(Computer Graphics)的一项重要内容,主要研究在计算机图形系统中对曲面的表示、设计、显示和分析。 曲面造型起源于汽车、飞机、船舶、叶轮等的外形放样工艺,由Coons、Bezier等大师奠定其理论基础。如今已形成了以有理B样条曲面(Rational B-spline Surface)参数化特征设计和隐式代数曲面(Implicit Algebraic Surface)表示这两类方法为主体,以插值(Interpolation)、拟合(Fitting)、逼近(Approximation)这三种手段为骨架的几何理论体系。;1964年美国麻省理工学院的Coons提出给定封闭曲线的四条边界定义一块曲面的的曲面描述方法。这种方法存在形状控制与连接问题。 1971年法国雷诺汽车公司的Bezier提出一种由控制多边形设计曲线的新方法。该方法简单易用,而且解决了整体形状控制问题,为曲面造型的进一步发展奠定了坚实的基础。Bezier方法仍存在连接问题和局部修改问题。 1974年提出了B样条方法,该方法继承了Bezier方法的一切优点,克服了Bezier方法存在的缺点,较成功地解决了局部控制问题和连接问题,从而使自由型曲线曲面形状的描述问题得到较好解决。不能精确表示圆锥曲线及初等解析曲面,造成了产品几何定义的不唯一。曲线曲面没有统一的数学描述形式,容易造成生产管理混乱。 ;1975年以来美国Syracuse大学的Versprille首次提出有理B样条(NURBS)方法。后来Piegl和Tiller等人的功绩,使NURBS 方法成为现代曲面造型中最为广泛流行的技术。 NURBS 方法可以精确地表示二次规则曲线曲面,实现了用统一的数学形式表示规则曲面与自由曲面。具有可影响曲线曲面形状的权因子,使形状更宜于控制和实现;NURBS方法是非有理B样条方法在四维空间的直接推广,多数非有理B样条曲线曲面的性质及其相应算法也适用于NURBS曲线曲面。 国际标准化组织(ISO)于1991年颁布了关于工业产品数据交换的STEP国际标准,将NURBS方法作为定义工业产品几何形状的唯一数学描述方法,从而使NURBS方法成为曲面造型技术发展趋势中最重要的基础。 ;计算机图形显示;二. 曲线和曲面的理论基础 ;曲线参数表示矢量方程式;2.2 曲面的参数表示 ;矢量方程式为 ;2.3 曲线曲面的参数连续;2.4 曲线曲面的几何连续; 2.5 Bezier曲线;2.6 Bezier曲面 ;2.7 B样条曲线 ;2.8 B样条曲面 ;2.9 非均匀有理B样条(NURBS)曲线和曲面 ;2.9.1 NURBS曲线 ;2.9.2 NURBS曲面;Nurbs曲线数据结构图 ;曲线、曲面数据结构的编程实现 ;class Curve{ public: int CurveNo;      /*曲线号*/     int k;        /*曲线次数*/     ControlPointCP;    /*控制点指针*/     KnotVectorKV;     /*节点矢量指针*/    }   class ControlPoint   {    public:     int VertexNo;     /*控制点序号*/     double Vertex[3];  /*控制点坐标*/     double Weight;    /*控制点权因子*/    public:     void FormatControl(CString& str);    };   class KnotVector   {    public:     int KnotNo;      /*节点序号*/     int Multiplicity;   /*节点重复度*/     double KnotValue;   /*节点值*/    public:     void FormatKnot(CString& str);    }; ;控制点、节点的可视化实现 ;void CModifierVertext::OnAdd()   {   ∥TODO:Add your control notification handler code here    if(UpdateData()!=TRUE)    return;   ControlPoint*pC

文档评论(0)

yuzongxu123 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档