「java光栅化」直线光栅化代码

博主:adminadmin 2023-03-19 09:47:07 683

今天给各位分享java光栅化的知识,其中也会对直线光栅化代码进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

buffer size是什么意思

Frame Buffer Size: (帧缓冲区大小) 存储空间,通常大于一个单独的信息区.

缓冲区都是离散的内存块。

由其空间分辨率(n x m)和深度(或精度,每个像素的位数)k确定。

各种缓冲区的空间分辨率一样,但深度值(即表示一个像素信息的字长)可以不一样.

通常我们只是集中在一个帧缓冲区组成部分中的一个缓冲区,因此有时就直接简称为缓冲区。

颜色缓冲区:内容要被输出到显示设备上的缓冲区,用于显示前、后、辅助、重叠(overlay)。

在双缓存中,颜色缓冲区由两个缓冲区组成,分别用于读与写,称为前缓冲区与后缓冲区。

如果要生成立体图像,需要提供左、右缓冲区、深度缓冲区、累加缓冲区、高分辨率缓冲区、模板缓冲区、保存掩码(masks)。

颜色缓冲区k确定可以表示的颜色多少。

通常在RGB模式中为24位,在RGBA模式中为32位。

深度缓冲区的k值确定深度的分辨率。

通常是32位,这样与浮点数或整数的精度匹配。

把缓冲区k个n x m平面中的任一个称为位平面(bitplane), 空间中特定位置处的k个元素构成一个像素(pixel)。

因此一个像素既可以是一个字节,也可以是一个整数,甚至是一个浮点数,具体与所用的缓冲区以及信息的存放格式有关。

应用程序通常并不知道在帧缓冲区中各种信息的存放方式。

帧缓冲区是在API的内部实现的,对用户而言它是一个黑盒子。

应用程序是通过API向帧缓冲区发送(写入)/接受(读出)信息。

此时在通常的内存与实现的缓冲区间传送的数据需要经过一定的格式转化。

这时需要仔细考虑数据传送的时间效率。

向缓冲区中写入内容。

在现代的计算机图形系统中,用户程序既可以向缓冲区中写入内容,也可以从中读出内容

下述因素使得这种操作与通常的读写内存操作不同。

很少情形下只想读写一个像素,而是读写一个矩形的像素块(位块,bit blocks)。

位块操作:

1)在填充多边形时每次光栅化一条扫描线。

2)当显示光栅字符时写一小块像素。

3)当进行清除操作时,改变缓冲区中所有像素的值。

4)需要在硬件和软件方面提供对位块进行尽可能有效操作的功能。

•称为位块传送(bit-block transfer, bitblt)操作,也称为光栅操作(raster operations, raster-ops)。

位块复制:

假设要把源缓冲区中的一块n×m像素复制到目标缓冲区中,那么进行这种操作的位块传送函数应当具有形式:write_block(source, n, m, x, y, destination, u, v);

OpenGL实现了单独的像素流水线。

提供了一组缓冲区:

1)数据可以在这些缓冲区之间传送,也可以在缓冲区与处理器内存间传送。

2)根据所用缓冲区的不同,可以在其中存储颜色索引、颜色分量和深度值等。

3)只有颜色缓冲区的内容可以显示在屏幕上。

光栅位置:

OpenGL维持了一个当前光栅位置,它是状态的一部分。

1)可看作在屏幕坐标系中定义的内部光标,指示光栅化像素写入的位置。

由glRasterPos*()设置:glRasterPos3f(x,y,z);

三个浮点数定义了一个光栅位置,在变换为屏幕坐标前要经过模型-视图变换和投影变换

光栅位置的属性。

它是一个几何实体,存储为四维齐次坐标要经过几何流水线的处理最终产生屏幕坐标上的一个二维位置,对像素或位的写入采用光栅单位(整数),像素中心位于两个整数的中间值

在帧缓冲区中这个位置就是接下来光栅化像素被绘制的地方。

如果光栅位置不在视景体内,就不进行像素写入操作,整个位图或像素矩形会被裁剪掉。

缓冲区的选择:

1)OpenGL可以向任何缓冲区中写入内容,或者从中读取内容。

2)默认的是后缓冲区。

3)可以用glDrawBuffer和glReadBuffer改变当前的读写缓冲区。

4)注意在帧缓冲区中像素的格式与它在处理器的内存中的格式是不同的。

流水线解释:

1)解包(unpack)是把像素从用户程序的格式转化为OpenGL内部所用的格式。

2)这些新像素可以通过用户定义的查找表映射到新值。

3)所得结果经过一系列测试后确定是否有必要把像素写到帧缓冲区中;如果可以写入,那么写入的方式是什么。例如,可以划出一块区域,里面不绘制任何内容;或者利用逻辑操作确定如何把像素与帧缓冲区中已有数据组合在一起。

4)从帧缓冲区中把信息读取到处理器内存,需要进行打包(pack):即从OpenGL内部格式转化为程序可用的格式。

java基础面试题有哪些?

下面是10道java基础面试题,后附答案

1.什么是 Java 虚拟机?为什么 Java 被称作是“平台无关的编程语言”?

Java 虚拟机是一个可以执行 Java 字节码的虚拟机进程。Java 源文件被编译成能被 Java 虚拟机执行的字节码文件。

Java 被设计成允许应用程序可以运行在任意的平台,而不需要程序员为每一个平台单独重写或者是重新编译。Java 虚拟机让这个变为可能,因为它知道底层硬件平台的指令长度和其他特性。

2.“static”关键字是什么意思?Java 中是否可以覆盖(override)一个 private 或者是static 的方法?

“static”关键字表明一个成员变量或者是成员方法可以在没有所属的类的实例变量的情况下被访问。

Java 中 static 方法不能被覆盖,因为方法覆盖是基于运行时动态绑定的,而 static 方法是编译时静态绑定的。static 方法跟类的任何实例都不相关,所以概念上不适用。

3.JDK 和 JRE 的区别是什么?

Java 运行时环境(JRE)是将要执行 Java 程序的 Java 虚拟机。它同时也包含了执行 applet 需要的浏览器插件。Java 开发工具包 (JDK)是完整的 Java 软件开发包,包含了 JRE,编译器和其他的工具(比如:JavaDoc,Java 调试器),可以让开发者开发、编译、执行 Java 应用程序。

4.是否可以在 static 环境中访问非 static 变量?

static 变量在 Java 中是属于类的,它在所有的实例中的值是一样的。当类被 Java 虚拟机载入的时候,会对 static 变量进行初始化。如果你的代码尝试不用实例来访问非 static 的变量,编译器会报错,因为这些变量还没有被创建出来,还没有跟任何实例关联上。

5.Java 支持的数据类型有哪些?什么是自动拆装箱?

Java 语言支持的 8 中基本数据类型是:

byte

short

int

long

float

double

boolean

char

自动装箱是 Java 编译器在基本数据类型和对应的对象包装类型之间做的一个转化。比如:把 int 转化成 Integer,double 转化成 double,等等。反之就是自动拆箱。

6.Java 支持多继承么?

不支持,Java 不支持多继承。每个类都只能继承一个类,但是可以实现多个接口。

7.Java 中,什么是构造函数?什么是构造函数重载?什么是复制构造函数?

当新对象被创建的时候,构造函数会被调用。每一个类都有构造函数。在程序员没有给类提供构造函数的情况下,Java 编译器会为这个类创建一个默认的构造函数。

Java 中构造函数重载和方法重载很相似。可以为一个类创建多个构造函数。每一个构造函数必须有它自己唯一的参数列表。

Java 不支持像 C++中那样的复制构造函数,这个不同点是因为如果你不自己写构造函数的情况下,Java 不会创建默认的复制构造函数。

8.Java 中的方法覆盖(Overriding)和方法重载(Overloading)是什么意思?

Java 中的方法重载发生在同一个类里面两个或者是多个方法的方法名相同但是参数不同的情况。与此相对,方法覆盖是说子类重新定义了父类的方法。方法覆盖必须有相同的方法名,参数列表和返回类型。覆盖者可能不会限制它所覆盖的方法的访问。

9.接口和抽象类的区别是什么?

Java 提供和支持创建抽象类和接口。它们的实现有共同点,不同点在于:

接口中所有的方法隐含的都是抽象的。而抽象类则可以同时包含抽象和非抽象的方法。

类可以实现很多个接口,但是只能继承一个抽象类

类如果要实现一个接口,它必须要实现接口声明的所有方法。但是,类可以不实现抽象类声明的所有方法,当然,在这种情况下,类也必须得声明成是抽象的。

抽象类可以在不提供接口方法实现的情况下实现接口。

Java 接口中声明的变量默认都是 final 的。抽象类可以包含非 final 的变量。

Java 接口中的成员函数默认是 public 的。抽象类的成员函数可以是 private, protected 或者是 public。

接口是绝对抽象的,不可以被实例化。抽象类也不可以被实例化,但是,如果它包含 main 方法的话是可以被调用的。

10.什么是值传递和引用传递?

对象被值传递,意味着传递了对象的一个副本。因此,就算是改变了对象副本,也不会影响源对象的值。

对象被引用传递,意味着传递的并不是实际的对象,而是对象的引用。因此,外部对引用对象所做的改变会反映到所有的对象上。

最后祝你面试顺利!

三维图形可视化制作技术

(一)OpenGL

OpenGL(Open Graphics Libaray)由SGI公司为其图形工作站开发的可以独立于窗口操作和硬件环境的图形开发系统。其目的是将用户从具体的硬件和操作系统中解放出来。用此系统可以不去理解这些系统的结构和指令系统,只要按规定的格式书写应用程序就可以在任何支持该语言的硬件平台上执行。由于OpenGL的高度可重用性,已经有几十家大公司表示接受OpenGL作为标准软件接口,目前加入OpenGL ARB(OpenGL体系结构审查委员会)的成员有SGI公司、HP公司、MicroSoft公司、Intel公司、IBM公司、SUN公司、DEC公司、ATT公司的Unix软件实验室等。在该组织的努力下,OpenGL已经成为高性能图形和交互式视景处理的工业标准,能够在Windows95/98、Windows NT、Windows 2K、Macos、Beos、OS/2以及Unix上应用。OpenGL的实质是作为图形硬件的软件接口,是一组三维的API函数。

1.OpenGL的主要功能

(1)建模。不但有简单的点线面还提供了复杂的三维物体(球、锥等)以及复杂的曲线曲面(Bezier、Nurbs等)绘制函数。

(2)变换。主要包括基本变换(平移、旋转等)和投影变换(平行、透视投影等)。

(3)颜色模式设置。RGBA模式、ColorIndex颜色索引。

(4)光照和材质设置。OpenGL光有辐射光、环境光、漫反射光、镜面光;材质是用光反射率来表示的。场景中物体最终反映到人眼的颜色是光的RGB分量和材质的RGB分量叠加形成的。

(5)纹理映射。主要表达物体表面的细节。

(6)位图显示和图像增强。图像功能除了基本的复制和图像像素读写外,还提供融合(Blending)、反走样(Antialiasing)、雾化(Fog)等特殊的图像处理效果。

(7)双缓冲(Double Buffering)动画。双缓冲即前台缓冲和后台缓冲。后台计算场景、产生画面,前台显示后台已经计算好的画面。

(8)交互技术。主要是提供三种工作模式:绘图模式、选择模式和反馈模式。绘图模式完成场景的绘制,可以借助物体的几何参数及运动控制参数、场景的观察参数、光照参数和材质参数、纹理参数、OpenGL函数的众多常量控制参数、时间参数等和Windows对话框、菜单、外部设备等构成实时交互的程序系统。在选择模式下,则可以对物体进行命名,选择命名的物体,控制对命名的物体的绘制。而反馈模式则给程序设计提供了程序运行的信息,这些信息也可反馈给用户,告诉用户程序的运行状况和监视程序的运行进程。

(9)其他。利用OpenGL还能实现深度暗示(Depth Cue)、运动模糊(Motion Blur)等特殊效果。

2.OpenGL的基本原理

OpenGL是一个硬件发生器的软件接口,其主要目的是将二维、三维物体绘制到一个帧缓冲里,它包括几百个图形函数。开发者主要利用这些函数来建立三维模型和进行三维实时交互。

(1)图元操作和指令。OpenGL能够从多种可选择的模式画图元,而且一种模式的设置一般不会影响其他模式的设置,无论发生深墨情况,指令总是被顺序处理,也就是说,一个图元必须完全画完之后,后继图元才能影响帧存。

(2)图形控制。OpenGL提供诸如变换矩阵、光照、反走样方法、像素操作等参数来控制二维和三维图形的绘制。它并不提供一个描述或建立复杂几何物体的手段。OpenGL提供的是怎样画复杂物体的机制而非描绘复杂物体本身的面面俱到的工具。即OpenGL是过程性的而非描述性的。

(3)执行模式。OpenGL命令的解释模式是客户/服务器模式的,即由客户发布命令,命令由OpenGL服务器(解释器)来处理,服务器可以运行在相同的或不同的计算机上,基于这一点,OpenGL是网络透明的。

地下水三维可视化系统开发与应用

3.OpenGL的命令语法与状态

基于OpenGL标准开发的微机应用程序必须在32位Windows平台下,如Windows98/NT环境,运行时所需的动态连接库为OpenGL32.DLL、Glu32.DLL。OpenGL包含100多个库函数,这些函数按一定的格式来命名。

(1)核心函数115个,每个函数以gl开头,这些函数是最基本的,可以运行在任何工作平台上。这些函数创建二维和三维几何形体,设置视点,建立视觉体,设置颜色及材质,建立灯光,进行纹理映射,反走样,处理融合,雾化场景等,它们可以接受不同的参数,因而可派生300多个函数。

(2)OpenGL实用库函数以glu开头,共43个。这些函数基于OpenGL核心函数,主要提供对辅助函数的支持,并且执行了核心OpenGL函数的交互,因而是比核心函数更高一层的函数,也更有通用性。可以运行在任何OpenGL工作平台上。

(3)辅助库函数,共31个。以aux开头,它们是一类特殊的OpenGL函数,是帮助初学者尽快进入OpenGL编程而做简单练习用的。因此并不能在所有平台上运行。但Windows98/NT支持它们。

(4)Windows专用库函数,以wgl开头。主要是连接OpenGL和Windows窗口系统的,用它们可以管理着色描述表及显示列表,扩展功能,管理字体位图等。

(5)Win32 API函数,共6个,用于处理像素格式及缓冲。

(6)OpenGL结构,共4个。

4.OpenGL图形操作步骤

步骤1:设置像素格式:主要包括建立OpenGL绘制风格、颜色模式、颜色位数、深度位数等;

步骤2:建立模型:建立三维模型;

步骤3:舞台布景:如何把景物放置在三维空间的适当位置,设置三维透视视觉体以观察场景;

步骤4:效果处理:设置物体的材质(颜色、光学性能及纹理映射等)加入光照及光照条件;

步骤5:光栅化:把景物及其颜色信息转化为可在计算机上显示的像素信息。

(二)VRML

1.VRML简介

VRML是英文Virtual Reality Modeling Language——虚拟现实造型语言的缩写。其最初的名字叫Virtual Reality Makeup Language。名字是由第一届WWW(1994,日内瓦)大会上,由Tim Berners Lee和Dave Raggett所组织的一个名为Bird-of-a-Feather(BOF)小组提出的。后来Makeup改为Modeling。VRML和HTML是紧密相连的,是HTML在3D领域的模拟和扩展。由于VRML在Internet具有良好的模拟性和交互性,因而显示出强大的生命力。

VRML是一种3D交换格式,它定义了当今3D应用中的绝大多数常见概念,诸如变换层级、光源、视点、几何、动画、雾、材质属性和纹理映射等。VRML的基本目标是确保能够成为一种有效的3D文件交换格式。

VRML是HTML的3D模型。它把交互式三维能力带入了万维网,即VRML是一种可以发布3D网页的跨平台语言。事实上,三维提供了一种更自然的体验方式,例如游戏、工程和科学可视化、教育和建筑。诸如此类的典型项目仅靠基于网页的文本和图像是不够的,而需要增强交互性、动态效果连续感以及用户的参与探索,这正是VRML的目标。

VRML提供的技术能够把三维、二维、文本和多媒体集成为统一的整体。当把这些媒体类型和脚本描述语言(scripting language)以及因特网的功能结合在一起时,就可能产生一种全新的交互式应用。VRML在支持经典二维桌面模型的同时,把它扩展到更广阔的时空背景中。

VRML是赛博空间(cyber space)的基础。赛博空间的概念是由科幻作家William Gibson提出的。虽然VRML没有为真正的用户仿真定义必要的网络和数据库协议,但是应该看到VRML迅速发展的步伐。作为标准,它必须保持简单性和可实现性,并在此前提下鼓励前沿性的试验和扩展。

2.VRML的基本工作原理及其特性

(1)用文本信息描述三维场景。在Internet网上传输,在本地机上由VRML的浏览器解释生成三维场景,解释生成的标准规范即是VRML规范。正是基于VRML的这种工作机制,才使其可能在网络应用中有很快的发展。当初VRML的设计者们考虑的也正是文本描述的信息在网络上的传输比图形文件迅速,所以他们避开在网络上直接传输图形文件而改用传输图形文件的文本描述信息,把复杂的处理任务交给本地机从而减轻了网路的负荷。

(2)统分结合模式。VRML的访问方式基于C/S模式,其中服务器提供VRML文件,客户通过网络下载希望访问的文件,并通过本地平台的浏览器(Viewer)对该文件描述的VR世界进行访问,即VRML文件包含了VR世界的逻辑结构信息,浏览器根据这些信息实现许多VR功能。这种由服务器提供统一的描述信息,客户机各自建立VR世界的访问方式被称为统分结合模式,也是VRML的基本概念。由于浏览器是本地平台提供的,从而实现了VR的平台无关性。

(3)基于ASCII码的低带宽可行性。VRML像HTML一样,用ASCII文本格式来描述世界和链接,保证在各种平台上通用,同时也降低了数据量,从而在低带宽的网络上也可以实现。

(4)实时3D着色引擎。传统的VR中使用的实时3D着色引擎在VRML中得到了更好的体现。这一特性把VR的建模与实时访问更明确地隔离开来,也是VR不同于三维建模和动画的地方。后者预先着色,因而不能提供交互性。VRML提供了6+1个自由度,即三个方向的移动和旋转,以及和其他3D空间的超链接(Anchor)。

(5)可扩充性。VRML作为一种标准,不可能满足所有应用的需要。有的应用希望交互性更强,有的希望画面质量更高,有的希望VR世界更复杂。这些要求往往是相互制约的,同时又受到用户平台硬件性能的制约,因而VRML是可扩充的,即可以根据需要定义自己的对象及其属性,并通过Java语言等方式使浏览器可以解释这种对象及其行为。

(三)X3D

X3D(Extensible 3D——可扩展3D)是一个软件标准,定义了如何在多媒体中整合基于网络传播的交互三维内容。X3D将可以在不同的硬件设备中使用,并可用于不同的应用领域中。比如工程设计、科学可视化、多媒体再现、娱乐、教育、网页、共享虚拟世界等方面。X3D也致力于建立一个3D图形与多媒体的统一的交换格式。X3D是VRML的继承。VRML(Virtual Reality Modeling Language-虚拟现实建模语言)是原来的网络3D图形的ISO标准(ISO/IEC 14772)。X3D相对VRML有了改进,提供了以下的新特性:更先进的应用程序界面,新添的数据编码格式,严格的一致性,组件化结构(用来允许模块化的支持标准的各部分)。

1.X3D设计目标

X3D确立了以下的设计目标:

(1)分离数据编码和运行时间结构;

(2)支持大量的数据编码格式,包括XML(Extensible Markup Language);

(3)增加新的绘图对象、行为对象、交互对象;

(4)给3D场景提供可选的应用程序界面(APIs);

(5)定义规格的子集“概貌(Profiles)”以适合不同的市场需要;

(6)允许在不同层次(1evels)的服务上都能实现X3D规格;

(7)尽可能添加完善规格中行为的定义或描述。

2.X3D特性

为了满足工程设计、科学可视化、多媒体再现、娱乐、教育、网页、共享虚拟世界等方面使用的需要,X3D添加了以下的新特性:

(1)3D图形:多边形化几何体、参数化几何体、变换层级、光照、材质、多通道/多进程纹理帖图;

(2)2D图形:在3D变换层级中显示文本、2D矢量、平面图形;

(3)动画:计时器和插值器驱动的连续动画;人性化动画和变形;

(4)空间化的音频和视频:在场景几何体上映射视听源;

(5)用户交互:基于鼠标的选取和拖曳;键盘输入;

(6)导航:摄像机;用户在3D场景中的移动;碰撞、接近和可见性检测;

(7)用户定义对象:通过创建用户定义的数据类型,可以扩展浏览器的功能;

(8)脚本:通过程序或脚本语言,可以动态地改变场景;

(9)网络:可以用网络上的资源组成一个单一的X3D场景;可以通过超链接对象连接到其他场景或网络上的其他资源;

(10)物理模拟:人性化动画;地理化数据集;分布交互模拟(Distributed Interactive Simulation-DIS)协议整合。

(四)Java 3D

Java 3D用其自己定义的场景图和观察模式等技术构造了3D的上层结构,实现了在Java平台使用三维技术。Java 3D API是Sun定义的用于实现3D显示的接口。3D技术是底层的显示技术,Java 3D提供了基于Java的上层接口。Java 3D把OpenGL和DirectX这些底层技术包装在Java接口中。这种全新的设计使3D技术变得不再繁琐并且可以加入到J2SE、J2EE的整套架构,这些特性保证了Java 3D技术强大的扩展性。Java 3D建立在Java2(Java1.2)基础之上,Java语言的简单性使Java 3D的推广有了可能。Java 3D是在OpenGL的基础上发展起来的,可以说是Java语言在三维图形领域的扩展,其实质是一组API即应用程序接口。利用Java 3D所提供的API就可以编写出一些诸如三维动画、远程三维教学软件、三维辅助设计分析和模拟软件,以及三维游戏等。它实现了以下三维功能:

(1)生成简单或复杂的形体(也可以调用现有的三维形体);

(2)使形体具有颜色、透明效果、贴图;

(3)在三维环境中生成灯光、移动灯光;

(4)具有行为的处理判断能力(键盘、鼠标、定时等);

(5)生成雾、背景、声音;

(6)使形体变形、移动、生成三维动画;

(7)编写非常复杂的应用程序,用于各种领域如VR(虚拟现实)。

1.Java 3D的数据结构

Java 3D的数据结构和OpenGL的数据结构一样,采用的是场景图的数据结构,但Java 3D根据Java语言的特点。Java 3D的场景图是DAG(Directed-acyclic Graph),其特点是具有方向的不对称性。Java 3D的场景图由Java 3D的运行环境直接转变成具有三维显示效果的显示内存数据,从而在计算机上显示出三维效果,显示内存中不断接收Java 3D的运行最新结果,从而产生三维动画。

2.、Java 3D(API)中的类

Java 3D是根据OpenGL的三维图形库及VRML的基础上开发出来的一个API,里面包含了几乎所有编写Java交互式三维应用程序所需的最基本的类(类方法)、接口。主要存放在程序包Javax.media.j3d中,这些是Java 3D的核心类。另外,还有提供一个有助于快速编程的应用类型的包(Utility包)com.sun.j3d.utils(可或缺,主要是能大大地提高程序的编写效率)。除了核心类和Utility包之外,还有:

(1)Java.awt(主要是定义一个显示用的窗口);

(2)Javax.vecmath(主要是处理定义的矢量计算所用的类,今后核心类);

(3)Java 3D的类根据作用可分为Node、NodeComponent,其中Node又分为Group及Leaf两个子类。

(五)IDL

1.IDL简介

IDL(Interactive Data Language)是美国RSI公司(Research System Inc)的产品,它集可视、交互分析、大型商业开发为一体,为用户提供了完善、灵活、有效的开发环境。IDL的主要特性包括:

(1)高级图像处理、交互式二维和三维图形技术、面向对象的编程方式、OpenGL图形加速、跨平台图形用户界面工具包、可连接ODBC兼容数据库及多种程序连接工具等。

(2)IDL是完全面向矩阵的,因此具有处理较大规模数据的能力。IDL可以读取或输出有格式或无格式的数据类型,支持通用文本及图像数据,并且支持在NASA,TPT,NOAA等机构中大量使用的HDF,CDF及netCDF等科学数据格式及医学扫描设备的标准格式DICOM格式。IDL还支持字符、字节、16位整型、长整型、浮点、双精度、复数等多种数据类型。能够处理大于2Gb的数据文件。IDL采用OpenGL技术,支持OpenGL软件或硬件加速,可加速交互式的2D及3D数据分析、图像处理及可视化。可以实现曲面的旋转和飞行;用多光源进行阴影或照明处理;可观察体(Volume)内部复杂的细节;一旦创建对象后,可从各个不同的视角对对象进行可视分析。

(3)IDL具有图像处理软件包,例如感兴趣区(ROI)分析及一整套图像分析工具、地图投影及转换软件包,宜于GIS的开发。

(4)IDL带有数学分析和统计软件包,提供科学计算模型。可进行曲线和曲面拟合分析、多维网格化和插值、线性和非线性系统等分析。

(5)用IDL DataMiner可快速访问、查询并管理与ODBC兼容的数据库,支持Oracle,Informix,Sybase,MS SQL等数据库。可以创建、删除、查询表格,执行任意的SQL命令。

(6)IDL可以通过ActiveX控件将IDL应用开发集成到与COM兼容的环境中。用Vi-sual Basic,Visual C++等访问IDL,还可以通过动态连接库方式从IDL调用C,Fortran程序或从其他语言调用IDL。

(7)用IDL GUIBuilder可以开发跨平台的用户图形界面(GUI),用户可以拖放式建立图形用户界面GUI,灵活、快速地产生应用程序的界面。

(8)IDL为用户提供了一些可视数据分析的解决方案,早在1982年NASA的火星飞越航空器的开发就使用了IDL软件。

2.IDL的编程方式

IDL有两种编程方式,一是利用IDL平台的GUIBuilder进行编程,这种方式的特点是所见即所得,使用IDL自身所具有的控件进行编程和界面设置,但使用灵活性不够;另一种是利用IDL平台的集成开发环境的组件编程技术,这种方式的特点是较为灵活,而且功能较强,可以随着编程者的意愿进行设置。另外在IDL中有批处理文件语句,即在命令行中直接输入命令语句来进行数据的读入和输出,以及进行属性设置和处理。此外,IDL提供IDLDRAW WIDGET控件,可进行基于COM技术的开发。

3.IDL的应用领域

由于其强大的功能和独特的特点,IDL语言可以应用地球科学(包括气象、水文、海洋、土壤、地质、地下水等)、医学影像、图像处理、GIS系统、软件开发、大学教学、实验室、测试技术、天文、航空航天、信号处理、防御工程、数学统计及分析、环境工程等很多领域,IDL语言都可以得到广泛的应用。目前应用IDL语言,已经开发出了ENVI,IMAGIS,RiverTools,医学等成熟产品。具体的应用实例也非常多,如在2000年澳大利亚悉尼奥运会综合预报系统、美国国家环境卫星数据和信息服务中心的厄尔尼诺现象分析等工作中得到了成功的应用。

北京市勘察设计研究院应用IDL语言,已开发了真三维地质分析系统AutoDig,能够直接对简单的地质数据,或其他带层次性的数据实现科学的、完整的三维建模;同时也提供真三维显示功能,不仅能对三维体实现任意的旋转、放大、缩小,而且也能实现交互式的真三维切割功能。

(六)小结

三维图形技术是随着计算机软硬件技术的发展而发展变化的,其鼻祖是SGI公司推出的OpenGL三维图形库。OpenGL是业界最为流行也是支持最广泛的一个底层3D技术,几乎所有的显卡厂商都在底层实现了对OpenGL的支持和优化。OpenGL同时也定义了一系列接口用于编程实现三维应用程序,但是这些接口使用C(C++)语言实现并且很复杂。掌握针对OpenGL的编程技术需要花费大量时间精力。

Java 3D是在OpenGL的基础上发展起来的,可以说是Java语言在三维图形领域的扩展,其实质是一组API即应用程序接口。

Direct3D是Microsoft公司推出的三维图形编程API,它主要应用于三维游戏的编程。众多优秀的三维游戏都是由这个接口实现的。与OpenGL一样,Direct3D的实现主要使用C++语言。

VRML2.0(VRML97)自1997年12月正式成为国际标准之后,在网络上得到了广泛的应用,这是一种比BASIC,JAVASCRIPT等还要简单的语言。现已发展为X3D。脚本化的语句可以编写三维动画片、三维游戏、计算机三维辅助教学。它最大的优势在于可以嵌在网页中显示。

美国RSI公司(Research System Inc)研制和开发的最新可视软件IDL(Interactive Data Language)交互式数据语言,是进行数据分析、可视化和跨平台应用开发的较佳选择,它集可视、交互分析、大型商业开发为一体,为用户提供了完善、灵活、有效的开发环境。三维技术的比较见表1-2。

表1-2 三维技术对比

制大型游戏的软件

Game Developer Magazine 1994 - 2000年,共7年的游戏开发者杂志电子版(含源码)

Graphics Programming Black Book (by Michael Abrash).zip,图形编程黑书,Id software的Michael Abrash编著

Game Programming Gems I.rar ,游戏编程精粹I、II(含源码)

Game Programming Gems II.rar

Graphics Gems I.rar ,图形学精粹I、II、III、IV、V

Graphics Gems II.rar

Graphics Gems III IBM.rar

Graphics Gems IV IBM.rar

Graphics Gems V.rar

Computer Graphics, C Version (2nd Ed.).rar ,计算机图形学C版(第二版)

half_life2_engine.zip ,半条命2游戏引擎源代码

D3DTutorial10_Half-Life2_Shading.pdf ,半条命2游戏引擎光照分析

Course.PTR.3D.Game.Engine.Programming.eBook-LinG.rar ,3D游戏引擎编程

3D Game Engine Design.rar ,3D游戏引擎设计

3D Game Engine Design source code.rar ,3D游戏引擎设计源代码

3D.Game.Programming.All.In.One.zip ,3D游戏编程大全

Game Design - Theory and Practice.rar ,游戏设计 - 理论与实践

game.programming.all.in.one.zip ,游戏编程大全

The Cg Tutorial - The Definitive Guide to Programmable Real-Time Graphics.rar ,CG指导 - 可编程实时图形权威指南

Tricks Of The 3D Game Programming Gurus - Advanced 3D Graphics And Rasterization.rar ,3D游戏编程大师技巧 - 高级3D图形和光栅化

Ultimate Game Design Building Game Worlds.rar ,终极游戏设计 - 创建游戏世界

Core.Techniques.And.Algorithms.In.Game.Programming.rar ,核心技术和算法在游戏编程

Simulating Humans.rar ,仿真人类

3D Lighting - History, Concepts, and Techniques.rar ,3D光照 - 历史,概念和技术

Lighting.Techniques.For.Real-Time.3D.Rendering.rar ,光照技术For实时3D渲染

Vector.Game.Math.Processors.zip ,向量游戏数学处理器

AI for Computer Games and Animation - A Cognitive Modeling Approach.rar ,AI(人工智能)for计算机游戏和动画 - 一个认知建模方案

AI.Game.Development.Synthetic.Creatures.With.Learning.And.Reactive.Behaviors.rar ,AI游戏开发 - 合成生物With学习和反应举止

AI.Techniques.for.Game.Programming.rar ,AI技术for游戏编程(含源码)

Ai.Game.Programming.Wisdom.rar ,AI游戏编程(代码)

Real_Time_Rendering.rar ,实时渲染

special.effects.game.programming.rar ,特效(特殊效果)游戏编程(含源码)

Shaders.for.Game.Programmers.and.Artists.zip ,着色器for游戏开发者和艺术家

Real-Time Shader Programming.rar ,实时着色器编程

Wordware.Publishing.Advanced.Lighting.and.Materials.With.Shaders.rar ,高级光照和材质with着色器

OReilly - Physics for Game Developers.rar ,物理for游戏开发者

GPU Programming Guide.rar ,GPU编程指南

Collision.Detection.pdf.rar ,碰撞检测

Collision.Detection.-.Algorithms.and.Applications.rar ,碰撞检测 - 算法与应用

focus.on.3D.terrain.zip ,游戏3D地形编程

Focus.On.3D.Models.zip ,游戏3D模型编程

Focus.On.2D.in.Direct3D.-.fly.pdf ,集中于Direct3D中的2D

Beginning.Game.Audio.Programming.rar ,开始游戏音频编程(含源码)

Internetworked.3D.Computer.Graphics.rar ,互连网间的3D计算机图形学

Beginning.Math.and.Physics.For.Game.Programmers.zip ,开始数学和物理for游戏编程者(PDF版)

Beginning Math and Physics for Game Programmers[CHM].rar ,开始数学和物理for游戏编程者(CHM版)

3D.Math.Primer.for.graphics.and.game.development.zip ,3D数学初步for图形和游戏开发

The art of computer game design.rar ,计算机游戏设计艺术

Sams.Beginning.3D.Game.Programming.eBook-LiB.rar ,3D游戏编程入门

MIT.Press.Rules.of.Play.Game.Design.Fundamentals.rar ,游戏设计基础

design a pc game engine.rar ,设计一个PC游戏引擎

Advanced Graphics Programming Techniques Using Opengl.rar ,高级图形编程技术用OpenGL

Real-time.Rendering.Tricks.and.Techniques.in.DirectX.rar ,DirectX实时渲染技巧与技术

Real-Time Rendering Tricks and Techniques in DirectX(src).ZIP ,DirectX实时渲染技巧与技术(源代码)

Real Time 3D Terrain Engines Using C++ And Dx9.rar ,实时3D地形引擎用C++和Dx9

MS.Press.-.Microsoft.DirectX.9.Programmable.Graphics.Pipeline.rar ,Microsoft DirectX9可编程图形管线

Wordware.Publishing.OpenGL.Game.Development.eBook-YYePG.rar ,OpenGL游戏开发

Beginning.OpenGL.Game.Programming.ebook.zip ,OpenGL游戏编程入门

OpenGL.Programming.Guide.rar ,OpenGL编程指南

Addison.Wesley.-.OpenGL.Programming.Guide.2nd.Edition.rar ,OpenGL编程指南(第二版)

Addison-Wesley,.OpenGL.Shading.Language.(2004).DDU.ShareConnector.rar ,OpenGL着色语言(2004)

Learn Vertex and Pixel Shader Programming With Directx 9.rar ,学习顶点和像素着色器编程用DirectX9

Shaderx2 - Shader Programming Tips Tricks With Directx 9.rar ,Shaderx2 - 着色器编程提示与技巧With DirectX9

ShaderX2 Introductions and Tutorials with DirectX9.rar ,ShaderX2介绍和指导With DirectX9

Direct3D.ShaderX.-.Vertex.and.Pixel.Shader.Tips.and.Tricks.rar ,Direct3D.ShaderX - 顶点和像素着色器提示和技巧

Advanced 3D Game Programming with DirectX 9.rar ,高级3D游戏编程用DirectX 9.0(含源码,CHM版)

Advanced 3D Game Programming with DirectX 9[PDF].rar ,高级3D游戏编程用DirectX 9.0(PDF版)

DirectX 3D Graphics Programming Bible.rar ,DirectX 3D图形编程宝典

Introduction to 3D Game Programming with DirectX 9.0.rar ,介绍对3D游戏编程用DirectX9.0(含部分源代码)

Beginning.Direct3D.Game.Programming.rar ,Direct3D游戏编程入门

Beginning.DirectX9.zip ,DirectX9入门

Cutting Edge Direct 3D Programming.rar ,Cutting Edge(刀刃)Direct 3D编程

Game.Scripting.Mastery.zip ,游戏描述语言掌握

Data.Structures.for.Game.Programmers.rar ,数据结构for游戏编程者(含源码)

2_OpenGL.Extensions.-.Nvidia.rar ,OpenGL扩展(Nvidia)

Managed.DX.9.Kick.Start.Graphics.And.Game.Programming.rar ,DirectX9图形和游戏编程

OpenGL.Reference.Manual.rar ,OpenGL参考手册

OpenGL.Super.Bible.rar ,OpenGL超级宝典

Tricks of the Windows Game Programming Gurus.rar ,Windows游戏编程大师技巧

Tricks of Win Game Programming Gurus 2ed.rar ,Windows游戏编程大师技巧(第二版)

Game.Programming.Beginners.Guide.rar ,游戏编程初学者指南

Chris_Crawford_on_Game_Design.rar ,Chris Crawford写的游戏设计书

Advanced.Animation.with.DirectX.rar ,高级动画with DirectX(含源码)

Inside Direct3D.rar ,深入Direct3D

Direct3D_9_Basics.rar ,Direct3D 9基础

Sams Teach Yourself DirectX 7 in 24 Hours.rar ,教你自己DirectX7在24小时

Programming.Role.Playing.Games.with.DirectX.rar ,用DirectX编程RPG游戏(含源码)

Programming Multiplayer Games.rar ,编程多玩家游戏

Net Game Programming With Directx 9.0.rar ,网络游戏编程with Directx 9.0

Programming Linux Games.rar ,编程Linux游戏

Developing Online Games - An Insiders Guide.rar ,开发在线游戏 - 一个权威人士的指导

Game Coding Complete.rar ,游戏编码完全

Strategy Game Programming with DirectX 9.0.rar ,策略游戏编程用DirectX9.0

Strategy Game Programming with DirectX 9.0 Source Code.zip ,策略游戏编程用DirectX9.0(源代码)

Addison-Wesley - Software Engineering and Computer Games.rar ,软件工程和计算机游戏

Artificial Intelligence and Software Engineering.rar ,AI和软件工程

Game-Programming-OpenGL-C++.rar ,有关OpenGl和C++的一些资料

GBA Programming Game Boy Advance The Unofficial Guide.rar ,GBA编程非官方指南

Palm.OS.Game.Programming.zip ,Palm掌上操作系统游戏编程

Mac.Game.Programming.pdf ,苹果机游戏编程

Premier.Press.J2ME.Game.Programming.rar ,J2ME游戏编程

J2ME Game Development with MIDP2.rar ,J2ME游戏开发with MIDP2

PHP.Game.Programming.zip ,PHP语言游戏编程

Game.Programming.with.Python.Lua.And.Ruby.zip ,游戏编程用Python,Lua和Ruby语言

Apress.dot.NET.Game.Programming.with.DirectX.9.0.eBook-KB.rar ,点NET游戏编程用DirectX9

Wordware.Wireless.Game.Development.In.C.Cpp.With.BREW.chm ,无线游戏开发用C、C++ With BREW

DirectX9 User Interfaces Design and Implementation.rar ,DirectX9用户接口设计和实现

Game.Interface.Design.rar ,游戏接口设计

SAMS Teach Yourself Game Programming in 24 Hours.rar ,教你自己游戏编程在24小时

C.Game.Programming.For.Dummies.2.rar ,C游戏编程傻瓜书2

Beginners Guide to DarkBASIC Game Programming.rar ,初学者指南对DarkBASIC游戏编程

Windows Graphics Programming Win32 GDI and DirectDraw.rar ,Windows图形编程 - Win32 GDI 和 DirectDraw

Game Programming Genesis.rar ,游戏编程起步

2D.Artwork.and.3D.Modeling.for.Game.Artists.zip ,2D艺术品和3D建模for游戏艺术家

Game.Art.for.Teens.pdf ,游戏艺术for青年人

Game Development and Production.rar ,游戏开发和产品

Game.Developers.Market.Guide.rar ,游戏开发者市场指南

MIT.Press.A.History.Of.Modern.Computing.eBook-LiB.rar ,现代计算历史

The C++ Programming Language NO.3 Edition.rar ,C++编程语言(第三版)

Computer Systems A Programmers Perspective.rar ,计算机系统 - 一个编程者的透视

Intel Architecture Software Developer Manual.zip ,Intel架构软件开发者手册

Intel Itanium Assembly Language Reference.rar ,Intel Itanium架构汇编语言参考

Agile Software Development.rar ,灵活的软件开发

Code Reading The Open Source Perspective.rar ,代码阅读与开放源透视

ps2DevEnvironment.exe ,PS2开发环境

doxygen-1.3.9.1-setup.exe ,一种文档自动生成软件

wolf_source.exe ,wolf游戏(id software)源代码

doom_src.zip ,doom游戏(id software)源代码

q2src320.exe ,Quake2游戏(id software)源代码

Q3A_TA_GameSource_127.exe ,QuakeIII(id software)游戏源代码

Q3A_ToolSource.exe ,QuakeIII(id software)工具源代码

java光栅化的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于直线光栅化代码、java光栅化的信息别忘了在本站进行查找喔。