版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第三专题一一. 曲面造型的发展曲面造型的发展曲面造型的发展趋势曲面造型的发展趋势 曲线的参数方程 )()()(tzztyytxx 给定一个t值,就得到曲线上一点的坐标。当t在参数域a,b内连续变化时,就得到了曲线。为了方便起见,可以将a,b区间规范化成0,1。 kjip)()()()(tztytxt曲线参数表示矢量方程式)()()()(tztytxt, pp 给定一个t值,就得到曲线上一点的坐标。当t在参数域a,b内连续变化时,就得到了曲线。为了方便起见,可以将a,b区间规范化成0,1。 螺旋线的参数方程可以写为螺旋线的参数方程可以写为 bzayaxsincos),( vbt 螺旋线的重要性质
2、:螺旋线的重要性质:,:00 ,:00 bbbz 上升的高度与转过的角度成正比即上升的高度与转过的角度成正比即上升的高度上升的高度 bh2螺距螺距 ,2 tax cos tay sin vtz 或曲线参数方程实例曲线参数方程实例),(),(),(vuzzvuyyvuxx双参数描述表达式 曲面的范围通常用两个参数u和v的变化区间的矩形区域2121,vvvuuu给出。这种曲面通常叫做矩形域曲面。参数u和v的变化区间一般规范为0,1, ),(),(),(),vuzvuyvuxvu s(s),(zyx矢量方程式为 当参数u,v在参数域0,1中连续变化时,其对应点就形成一张曲面。 向线称为曲面的参数曲线
3、(等参数线)。u,v 分别等于0,1时的参数曲线。),(),(),()0000vuzvuyvuxvu s(sv),(),(),(),(0000vuzvuyvuxvu ssuv) 1 ,(),0 ,(), 1 (), 0(ususvsvs) 1 , 1 (),0 , 1 (),1 , 0(),0 , 0(ssss当u=u0时,表示曲面上一条沿V方向的空间曲线,称为向线,向线和曲面的边界曲线曲面的四个角点u向线。当v=v0时, 类似地,可以定义nkduudpduudpuukkuukk, 1 , 0)()(00|0)()(iiupup)(iiiupupup )()(2niniiuuBDuP0,10)
4、()(其中)(,uBni被称为Bernstein基函数。 niinuuinininuuCuBiiinni,1 , 0)1 ()!( !)1 ()(,) 1(*) 1(lk), 1 , 0;,1 , 0(,ljkiDjilk *lk *kiljjlikjivuvBuBDvuS00, 1 , 0,)()(),(。)(,uBikikuuCuBiikik)1 ()(,)(,vBjljljjljluuCvB)1 ()(,为u向Bernstein基函数, 为v向Bernstein基函数,给定n+1个控制顶点 ,k次B样条曲线表示为), 1 , 0(niDinikiiuufDuB0,10),()()(,uf
5、ki110kiuuu), 1 , 0(niDi称为B样条基函数,是由节点矢量U:所决定的k次分段多项式。顺序连接控制顶点所形成的多边形成为控制多边形。移动定点对B样条曲线的影响 k次B样条曲线与k+1个顶点有关 )()(,vfufljki与), 1, 0;, 1, 0(njmiDij) 1() 1(nm), 1, 0;, 1, 0(njmiDij110,kmuuuU110,lnvvvVnimjnlmkljkiijuuvuuuvfufDvuS0011, )()(),(,njkjjkiikinikiiuBuBuRuRduP0,0,)()()()()()(,uRki)(,uRki式中称为k次有理基函
6、数,具有和k次B样条基函数相同的性质 nikiinikiiiuBuBduP0,0,)()()(nii, 1 , 0,nidi, 1 , 0,0, 0,0in其余)(,uBki,110knuuuU式中:分别与首、末权因子。为由节点矢量节点矢量中的节点数为m=n+k+1,n为控制点数,k为B样条基函数的次数。决定的k次B样条基函数。控制顶点相联系。权因子nimjljkijinimjljkijijivBuBvBuBdvuP00,00,)()()()(),(jid,ji,)(,uBki)(,vBlj式中:控制顶点网权因子:v向节点矢量:沿v向的l次B样条基函数:沿u向的k次B样条基函数:u向节点矢量u
7、vNurbsNurbs曲线数据结构图曲线数据结构图 NurbsNurbs曲面数据结构图曲面数据结构图 曲线、曲面数据结构的编程实现曲线、曲面数据结构的编程实现classCurve public: intCurveNo; *曲线号*intk; *曲线次数*ControlPointCP; *控制点指针*KnotVectorKV; *节点矢量指针*classControlPointpublic:intVertexNo; *控制点序号*doubleVertex3; *控制点坐标*doubleWeight; *控制点权因子*public:voidFormatControl(CStringstr);cla
8、ssKnotVectorpublic:intKnotNo; *节点序号*intMultiplicity; *节点重复度*doubleKnotValue; *节点值*public:voidFormatKnot(CStringstr);VCVC写的写的NURBSNURBS曲线数据结构曲线数据结构classSurfaceControlPoint*Up;ControlPoint*Vp;KnotVector*KU;KnotVector*KV;VCVC写的写的NURBSNURBS曲面的数据结构曲面的数据结构控制点、节点的可视化实现控制点、节点的可视化实现 为实现对控制点、节点链表实时进行插入、删除和修改等
9、操作,可将这些操作同对话框联系起来。并通过操作对话框上的控件,实现对控制点、节点链表实时插入、删除和修改等操作过程的可视化。 利用VC实现控制点链表的插入、删除和修改等操作过程的可视化的过程如下: (2)建立与对话框相联系的类CmodifierVertex,同时编写与按钮相关的成员函数OnAdd()、OnInsert()、OnUpdate()、OnRemoveAt()和OnRemoveAll(); (1)建立如图1所示的对话框,对话框中有按钮Add、Insert、Update、RemoveAt、RemoveAll,可对控制点链进行操作;有组合框可显示控制点链表中的数据;(3)将控制点链表中的数
10、据在组合框中显示出来。 voidCModifierVertext:OnAdd()TODO:Addyourcontrolnotificationhandlercodehereif(UpdateData()!TRUE)return;ControlPoint*pControlnewControlPoint;pControlVertexNom_VertexNo;pControlVertex0m_Vertexx;pControlVertex1m_Vertexy;pControlVertex2m_Vertexz;pControlWeightm_Weight;ControlPoint_ListAddTail
11、(pControl);AddToListBox(pControl);*将数据添加到组合框*添加操作的程序设计实例 PIXELFORMATDESCRIPTOR pixelDesc; /像素存储格式化,对结构变量进行了填充; pixelDesc.nSize = sizeof(PIXELFORMATDESCRIPTOR);/pfd的大小pixelDesc.nVersion = 1; /版本号pixelDesc.dwFlags = PFD_DRAW_TO_WINDOW | /支持窗口PFD_SUPPORT_OPENGL| /支持OpenGLPFD_DOUBLEBUFFER; /支持双缓存pixelDe
12、sc.iPixelType = PFD_TYPE_RGBA; /RGBA类型pixelDesc.cColorBits = 32; /32位色深度pixelDesc.cRedBits = 8; /各颜色位pixelDesc.cRedShift = 16;pixelDesc.cGreenBits = 8;pixelDesc.cGreenShift = 8;pixelDesc.cBlueBits = 8;pixelDesc.cBlueShift = 0;pixelDesc.cAlphaBits = 0; /无alpha缓存pixelDesc.cAlphaShift = 0; /忽略转换位pixelD
13、esc.cAccumBits = 64; /各累计位pixelDesc.cAccumRedBits = 16;pixelDesc.cAccumGreenBits = 16;pixelDesc.cAccumBlueBits = 16;pixelDesc.cAccumAlphaBits = 0;pixelDesc.cDepthBits = 32; /32位深度缓存pixelDesc.cStencilBits = 0; /无模版缓存pixelDesc.cAuxBuffers = 0; /无辅助缓存pixelDesc.iLayerType = PFD_MAIN_PLANE; /主层pixelDesc.
14、bReserved = 0; /保留pixelDesc.dwLayerMask = 0;pixelDesc.dwVisibleMask = 0;pixelDesc.dwDamageMask = 0; /设置一个线程的当前绘图描述表wglMakeCurrent(hDC,m_hGLContext);/对自由曲线曲面的绘制DoNURBS();/释放绘图描述表wglMakeCurrent(hDC,NULL);/释放RC(一般在WM_DESTORY消息响应函数OnDestory()中进行)wglDeleteContext(m_hGLContext); 至此,一个基于OpenGL的基本程序框架构造完毕,具
15、体对自由型曲线曲面的构造工作在DoNURBS()中完成。 在绘制自由曲线曲面之前用wglCreateContext()创建一个渲染上下文RC并将其作为参数,通过wglMakeCurrent()来建立一个当前的绘图描述表,并在绘制完毕后将其释放。/节点序列GLfloat Notes8=0.0f,0.0f,0.0f,0.0f,1.0f,1.0f,1.0f,1.0f; /定义控制点for(int i=0;i4;i+)for(int j=0;j4;j+)LinchpinPtij0=(GLfloat)(3.0f*(i-0.5f);LinchpinPtij1=(GLfloat)(3.0f*(j-0.5f)
16、;if(0i & i3 & 0j & j3)LinchpinPtij2=4.0f;elseLinchpinPtij2=-4.0f; /创建NURBS曲面对象Nurb=gluNewNurbsRenderer();/设置NURBS曲面对象属性gluNurbsProperty(Nurb,GLU_SAMPLING_TOLERANCE,30.0f);gluNurbsProperty(Nurb,GLU_DISPLAY_MODE,GLU_FILL);/开始NURB区间绘制gluBeginSurface(Nurb); /定义NURBS曲面的形状gluNurbsSurface(Nurb,
17、8,Notes,8,Notes,4*3,3,&LinchpinPt000,4,4,GL_MAP2_VERTEX_3);/结束曲面绘制gluEndSurface(Nurb);glPopMatrix();/强制绘图,不驻留缓存glFlush(); void gluNurbsSurface(GLUnurbsObj * nobj, /NURBS曲面对象GLint sknot_count, /u方向节点数目GLfloat * sknot, /u方向节点数组指针GLint tknot_count, /v方向节点数目GLfloat * tknot, /v方向节点数组指针GLint s_stride,
18、 /u方向控制点数据跨度GLint t_stride, /v方向控制点数据跨度GLfloat * ctlarray, /控制点数组指针GLint sorder, /u方向上多项式阶数GLint torder, /v方向上多项式阶数GLenum type /确定求值器类型); 另有gluNurbsCurve()函数也可用于NURBS曲线曲面的定义,使用方法与之类似。GLfloat Light_position=1.0f,1.0f,1.0f,0.0f,;GLfloat Light_diffuse=1.0f,1.0f,0.0f,1.0f,;glLightfv(GL_LIGHT0,GL_POSITION,Light_position); /定义光源位置glLightfv(GL_LIGHT0,GL_DIFFUSE,Light_diffuse); /定义光源漫射光glEnable(GL_AUTO_NORMAL); /自动生成曲面法向量glEnable(GL_LIGHTING); /启动光照模型;glEnable(GL_LIGHT0); /使光源GL_LIGHT0有效 OpenGL中所指的材质均指构成三维实体的材料在光照模型中对于R、G、B三原色的反射率。与光源的定义类似,材质的定义分环境、漫射、 镜面反射等成分,另
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年高中一年级化学上学期模拟冲刺卷
- 初中双减工作总结
- 2025年管理综合医学试题及答案
- 江苏省公务员2025年行政职业能力测试真题卷
- 2025年急性喉炎护理试题及答案
- 2025年超声影像模拟试题及答案
- 2025年二甲评审院感应知应会试题及答案(共180题)
- 河南省2025年公务员数量关系强化卷
- 2025年北京市公务员申论冲刺卷
- 2025购物中心店铺租赁合同
- 软件测试与质量保证课件 第1章 软件测试基础
- 2025江苏南通市通州区石港镇招聘便民服务中心人员2人考试笔试备考题库及答案解析
- 电力设计安全相关课件
- 2025四川南充市嘉陵城市发展集团有限公司招聘10人备考考试题库附答案解析
- 《公路工程集料试验规程》JTG 3432-2024新旧规范对比(细集料、填料)
- 企业建扶贫车间申请书
- 季度安全生产工作会议
- Unit1作文专项人教版九年级英语全册
- 2025四川成都新都投资集团有限公司招聘23人笔试参考题库附带答案详解
- 麦克白课件教学课件
- 电动液压车安全培训内容课件
评论
0/150
提交评论