用计算机程序制作三维立体画(1)

用计算机程序制作三维立体画(1)

ID:22956488

大小:51.50 KB

页数:5页

时间:2018-11-02

用计算机程序制作三维立体画(1)_第1页
用计算机程序制作三维立体画(1)_第2页
用计算机程序制作三维立体画(1)_第3页
用计算机程序制作三维立体画(1)_第4页
用计算机程序制作三维立体画(1)_第5页
资源描述:

《用计算机程序制作三维立体画(1)》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、用计算机程序制作三维立体画(1)摘要该文介绍了三维立体画的原理和制作方法,并给出了用C语言编写的源程序。借助于Pbrush.exe,读者可以自己设计和欣赏各式各样的三维立体画。目前,市面上正在流行各式各样的立体画,其特点是从外表来看与一般的图案很相似,但是双眼紧盯着注视片刻后,一恍惚之间眼前便出现了画中画——立体像。笔者第一次看到这种画便被发明者的创意所倾倒。利用众所皆知的双眼视差原理,竟能在一张平面纸上制造出如此奇幻。但是立体画本身除了其发明者的灵感和画面创的别出心裁之外,其原理上并无神秘之处。用计算机程序来实现它,可说是易如反掌。笔者用一个晚上时间,便在微机上用BASIC语言

2、实现了简单形体——平面圆饼的立体画。当然,要使该程序具有完善的功能,提高其制作速度,还是应该用编译语言(如C语言)来编写。本文中给出的源程序借助于WindoP图形文件,可使大家自己制作任意形态的立体画。一、立体画的原理看过立体电影的人都知道,当人的双眼分别接收不同视角拍摄的图像时便会产生立体感。这是由于人眼长期观察的习惯造成的。和立体电影原理相同的立体摄影风景照片也很早就已出现。图1中给出了这种立体照片的示意图。左、右照片分别是人的双眼角度上观察一棱锥体时左右眼看到的图像(图2)。左眼看到的是棱锥的顶端向右错动了一些的图像,右眼的看到则是棱锥的顶端向左错动了一些的图像。如果用一张

3、硬卡片隔开两张照片(如图3),09A04000.GIF;图109A04001.GIF;图209A04002.GIF;图3双眼分别看两张画,会看到一个立体的棱锥体。这种立体照片的观察方法在测绘学中也早已采用。但是,目前的三维立体画在形式上与这些很不相同。它是怎样在同一张画面上呈现立体的呢?首先,分析一下人们是怎样从这些立体画中看出“立体形体”的。从前面所说的可以知道,人眼要得到立体感,双眼必须有视差,即双眼看到的图像应该有差异。人们在看立体画时,都有“恍惚”一下的过程。在这过程中,双眼的视中心发生了错动(如图4)。这样09A04003.GIF;图4左眼看到的是画面的“偏左像”,右眼

4、看到的是画面的“偏右像”。只要“偏左像”和“偏右像”的内容相当于图1的左、右照片,双眼就会感到立体形体。那么,能否把图1的左、右照片分别当做“偏左像”和“偏右像”,简单重叠来得到立体画呢?(作文网zw.ΝsΕAc.编辑整理)显然不行。能够合成立体画的“偏左像”和“偏右像”是要满足一定条件的。如果图5中表现的棱锥体的表面上有图案的话,09A04004.GIF;图5像素a和像素a'应该具有相同的颜色,因为它们是从不同视角观察的同一个实体点。像素b和像素b'、像素c和像素c'的情况与此相同。把两幅画分别当作“偏左图”和“偏右图”,部分重叠成为同一画面时,在新的画面上这种关系仍应该表现为

5、a=a',b=b',c=c'(如图6)。但这时应该注意到,在这张合成09A04005.GIF;图6画面上,点a'既是“偏右图”上的点a',又是“偏左图”上的点b。而一张画面上相同坐标点的像素只可能是一种颜色,因此,产生了新的像素关系a'=b。另外,点a既是“偏左图”上的点a,又是“偏右图”上的点c',所以,a=c'。以此类推,点b'和点c也有类似的情况。因此出现了新的关系表示式,...'=c=c'=a=a'=b=b'=...。这就构成了立体画面上像素必须要满足的条件:“等颜色像素链”。立体画上的所有点都从属于某一条“等颜色像素链”。这就是所有立体画图案都呈现出某种程度上的水平周期

6、性的原因。因此,对于任意立体形状,只要构造出相应的这种“等像素链”,并按其规律充填图案即可得到立体画。但是正如前面所述,由于这种“等像素链”条件的约束,人们虽然可以随意构造出各种形体的立体画,但其立体形体的表面图案是不能完全随人意愿的。二、制作立体画的计算机程序由于人的双眼的水平性,以上的“等像素链”只按水平方向分布,与垂直方向无关。因此,在程序中,各个像素行的处理过程是相互独立的。制作立体画的程序主结构图如图7。09A04006.GIF;图7制作立体画的程序主结构图在以上结构图中,关键是如何建立“等像素链”。具体的处理如下。对于立体形体上的每一个点,首先求出该点在“偏左图”和“

7、偏右图”上的坐标。以图1中的棱锥顶点为例,实际上其X坐标是在中心点,但由于双眼的位置并不在其正上方,顶点在“偏左图”上向右位移,在“偏右图”上向左位移,而且其位移值的大小显然与其高度有关,即该点坐标越高位移值就越大。a,b,c等点也都有这些位移。在求出一个点在“偏左图”和“偏右图”上的坐标后,再算出在合成图(如图6)上的对应坐标,以建立“等像素”关系,如a=a'。当立体形体的一个水平剖面上的全部点经过以上处理后,合成图的各条“等像素链”关系也就自然形成了。另外,由于有可能出现高点

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

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

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