三维图形、线及曲面的绘制.doc

三维图形、线及曲面的绘制.doc

ID:55553483

大小:411.50 KB

页数:27页

时间:2020-05-17

三维图形、线及曲面的绘制.doc_第1页
三维图形、线及曲面的绘制.doc_第2页
三维图形、线及曲面的绘制.doc_第3页
三维图形、线及曲面的绘制.doc_第4页
三维图形、线及曲面的绘制.doc_第5页
资源描述:

《三维图形、线及曲面的绘制.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、三维图形、曲线及曲面的绘制制作者:贾运蕾班级:计算机学院九九级(一)班三维图形在二维平面的投影及旋转(以房子为例)A.程序要求:将一个三维图形--房子投影到二维平面上,并为追求其真实感,应将它不能被观察者看到的面隐藏,为追其动态效果,可以使房子以一定方式旋转起来。B.设计思想:1.三维坐标系中确定房子各个点的坐标,另外不要忘记给各个点按照一定次序编号,以便用以确定哪两个点之间有连线,以便于当将三维图形—房子投影到二维平面时更便于重画;房子共有十个顶点,十七条边线,七个面,给每个面编号并记下位于每个面中的顶点编号及边线编号,以便于在消

2、隐面时确定哪些面应该去除。2.建立数据结构:1)建立点的数据结构:structpixel{intx;inty;intz;};2)本程序需要三个piexel类型的数组:顶点:p[10];面:二维数组face[7][];参考点:refer3.三维坐标系中确定房子各顶点及所选定的某一参考点的坐标值。4.将三维图形--房子投影到二维平面上。1)采用透视投影,方法如下:设顶点的三维坐标分别为:x,y,z;投影到二维平面后,其二维坐标为xp,yp;投影平面平行与xy平面,距投影中心(即三维坐标系原点)的距离为d。则:xp=d*x/z,yp=d*

3、y/z另有结论:①幕布远推,物体的投影变大;幕布近推,物体的投影变小。②d不变,随z变大,物体的投影变小;d不变,随z变小,物体的投影变大。2)由于按照公式1)做物体的投影很不方便,所以可以改进,较好的方法是物体不动,而观察者可以根据自己的需要确定观察位置,再投影取像,即:以观察点为原点,建立观察坐标系,把用户坐标系下的物体变为观察坐标系下的物体,再投影成像,称为取景变换。公式如下:已知观察点坐标为(a,b,c);v=sqrt(a*a+b*b),u=sqrt(a*a+b*b+c*c)-b/v-a*c/(u*v)-a/u0a/v-b*

4、c/(u*v)-b/u0变换矩阵=0v/u-c/u000u1通过变换矩阵的运算,已将原坐标系中的点观察坐标系中的点有了观察坐标系下的坐标,还不能生成图象,还需要经过一次投影。利用公式:xp=d*xe/ze,yp=d*ye/ze三维图形即可以显示到二维平面。注意:因为所选择的视区只能放下三维图形的一部分,所以应调整比例。5.房子面的隐藏:为追求真实感,在观察者观察房子时应将被遮挡的面隐藏起来。例如:d1c1a1b1c2a2b2长方体a1c2在被从垂直桌面向内方向观察时,就会有三个面—a2b2c2d2,c1d1d2c2和a1a2d2d1

5、被遮挡。同理,房子被观察者观察时也存在同一问题,解决方法如下:np4p3p1p2面s:p1p2p3p4法线方向r=p2-p1q=p3-p2n=r*q可见:cosØ正,Ø:0—90度,s可见cosØ负,Ø:90—180度,s不可见cosØ的求解:p.n=

6、p

7、.

8、n

9、.cosØØp.n=px.nx+py.ny+pz.nzpn注意:在判断房子任意一个面的方向向量时,该方向向量都指向房子内部中心。6.房子的旋转:由于房子的投影是基于在观察坐标系中完成的,所以房子在旋转时不必改变各顶点的实际坐标,只要保证参考点的坐标发生变化即可。房子的旋转

10、有多种方式,如:参考点可以在一个圆上移动。参考点可以在一个球上移动。参考点的选定依鼠标的点击来确定。C.源程序。D.执行程序。说明:程序执行后,屏幕为黑屏,选择键来选择房子的旋转方向,每按一次键,房子旋转180度,最后按回车键可返回原界面。曲线的绘制一.三次参数样条曲线A.程序要求:在屏幕上由给定的离散的点——型值点构造出一条曲线,该曲线应该经过每一个型值点。B.编程思想:1.若已知有n个型值点(x1,y1),(x2,y2),……,(xn,yn),则可以构造出n-1段的方程曲线上的每一点的横,纵坐标都可以用三次函数表示,以第i段为例

11、。x(t)=a*t*t*t+b*t*t+c*t+dy(t)=e*t*t*t+f*t*t+g*t+h其中0<=t<=li(li=sqrt((xj-xi)*(xj-xi)+(yj-yi)*(yj*yi))表示每一段的直线距离。)若要求出方程组,必须首先求出a,b,c,d,e,f,g,h。2.以求a,b,c,d为例:xi——第i段曲线的起点,xj——第i曲线的终点;li——第i段曲线的长度,lj——第i+1段曲线的长度dxi——xi的导数值,dxj——xj的导数值。a=-2*(xj-xi)/(li*li*li)+(dxj+dxi)/(li

12、*li)b=3*(xj-xi)/(li*li*li)-(dxj-2*dxi)/lic=dxid=xi由上方程组可知:要求得a,b,c,d,必须求得dxi和dxj。3.令:mj=lj/(lj+li),uj=1-mj=li/(lj-li)

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。