你好,欢迎来到电脑编程技巧与维护杂志社! 杂志社简介广告服务读者反馈编程社区  
合订本订阅
 
 
您的位置:杂志经典 / 编程语言
空间曲面真实感图形生成和显示技术(上)
 

真实感图形是一种计算机图形生成技术,它首先采用数学方法建立所需三维场景的几何描述,然后根据假定的光照条件下计算画面上可见的各景物表面的光亮度,使观察者产生逼真的三维立体视觉效果。本文以空间曲面为例,讨论真实感图形显示技术,即借助于光照、浓淡、明暗技术,生成并显示具有立体感的空间曲面。它具备图像逼真、显示速度快、计算简便等特点,有一定的使用价值。

一、           空间曲面真实感图形显示

为显示空间曲面的真实感图形,我们必须逐个象素地计算曲面上各点的颜色。不但要考虑光源的性质、光源与该曲面的距离、曲面的形状等等,而且由于曲面通常包含成千上万个甚至上百万个象素,因此若考虑全面以求逼真度很高,但这样会使计算复杂、计算量太大,导致显示速度很慢,且编程实现困难。

笔者曾在本刊第1期介绍过“空间曲面三维实体图形显示技术”,先将曲面函数的定义域划分成若干个小区域,依此对每个小区域,绘制对应的封闭轮廓线,再用相应的色彩填充,从而完成曲面的三维实体图形显示。其实质是将曲面划分成若干各小曲面,不难想象,当定义域划分成若干个小区域的个数足够多,以致对应的小曲面足够小,其结果是显示的曲面具有真实感的立体效果。笔者将程序中N取为199,并且在填充多边形前设定画笔的颜色与画刷的颜色一致,运行的结果是曲面的立体效果很好。N越大,逼真度越高,但显示的时间就愈长。

二、空间曲面真实感图形生成与快速显示

虽然上述程序能达到较好的显示效果,但由于该程序频繁地设置画笔与画刷的颜色,使得显示速度太慢。为此,笔者采用扩展内存技术,先将所有要显示的数据送入扩展内存,然后再写入BMP格式的文件。在DOS下将扩展内存的数据直接送入显存,显示速度很快;在WINDOWS下显示BMP文件也是既易又快。

    1.扩展内存XMS

扩展内存规范提供了对640K以上内存、非连接内存、非EMS内存的有控制的访问,允许应用程序共享内存而不发生冲突。MicrosoftHIMEM.SYS提供了XMS

XMS扩展内存规范给出的一组INT 2F功能调用如下:

l         INT 2Fh功能43h,子功能00h

作用:判断是否有XMS高端内存管理

      软件。

调用寄存器:AX=4300h

返回寄存器:AL=80h 已安装XMS驱动程序,AL80h 无驱动程序

l         INT 2Fh功能43h,子功能10h

作用:获得XMS驱动程序的地址以便使用其功能。

调用寄存器:AX=4310h

返回寄存器:ES:BX->驱动程序入口点

说明:在AH设定为功能代码时做对驱动程序入口点的FAR调用。常用的有下面几个:

1.       AH=08h 查询自由的扩展内存,返回:AX=最大的扩展内存块的K数;DX=总的扩展内存的K数。

2.       AH=09h DX=需要的K数,分配扩展的内存块,返回:AX=0001h成功, DX=内存块的句柄;AX=0000h 失败。

3.       AH=0Ah DX=要释放块的句柄,释放扩展的内存块,返回:AX=0001 h 成功;AX=0000h 失败。

4.       AH=0Bh DS:SI->EMM结构(见下表),返回:AX=0001h 成功;

AX=0000h 失败。

1   EMM结构的格式

偏移量

长度

       内容

00h

双字

move的字节数

04h

源句柄

06h

双字

源块中的偏移量

0Ah

目的块句柄

0Ch

双字

目的块中的偏移量

     注:要move的字节数必须为偶数;当源块(目的块)位于常规内存时,源句柄(目的块句柄)只能赋0值。

基于上述XMS扩展内存规范,本文用Turbo C给出一组存取扩展内存的函数。详见源程序。

2.区域的填充

由于本文采用扩展内存技术,先将所有要显示的数据送入扩展内存。在对划分的小曲面用相应的颜色填充时,无法调用现有的填充函数。事实上,待填充的小曲面均为四边形,针对这一特殊性,本文采用如下算法:首先依次得到四边形各边上各点的坐标,并按纵坐标的大小顺序将各点的横坐标存入数组,再连接纵坐标相等的各点。关于这纵坐标相等的各点,其实质是某一水平扫描线与该四边形的交点,交点的数目在14之间,程序按照数目的多少作相应的处理。
  推荐精品文章

·2024年9月目录 
·2024年8月目录 
·2024年7月目录 
·2024年6月目录 
·2024年5月目录 
·2024年4月目录 
·2024年3月目录 
·2024年2月目录 
·2024年1月目录
·2023年12月目录
·2023年11月目录
·2023年10月目录
·2023年9月目录 
·2023年8月目录 

  联系方式
TEL:010-82561037
Fax: 010-82561614
QQ: 100164630
Mail:gaojian@comprg.com.cn

  友情链接
 
Copyright 2001-2010, www.comprg.com.cn, All Rights Reserved
京ICP备14022230号-1,电话/传真:010-82561037 82561614 ,Mail:gaojian@comprg.com.cn
地址:北京市海淀区远大路20号宝蓝大厦E座704,邮编:100089