标题：VisAD
定义
VisAD（算法开发的可视化）是用于数字数据的交互式和协作可视化以及分析的 Java 组件库。
介绍
VisAD（算法开发的可视化）是用于数字数据的交互式和协作可视化以及分析的 Java 组件库。威斯康星大学的 Space Science and Engineering Center (SSEC)、University Corporation for Atmospheric Research (UCAR) Unidata Program、位于 Urbana-Champaign 的 Illinois 大学的 National Center for Supercomputer Applications (NCSA) 以及澳大利亚气象局的开发人员由于希望使其先进的可视化技术对科学家的日常工作有用而协作创建了 VisAD。
VisAD 使用了 Java 2 的一些特性，包括用于可视化的 Java3D 和 Java2D、用于分布对象的 RMI 和用于链接到旧算法的 JNI。（VisAD 的分析和可视化代码是纯 Java 代码，但它确实支持到以其它语言编写的用户原有代码的 JNI 连接。）事实上，它的数学数据模型可以应用到任何数字数据；支持用户、数据源和科学规范间数据共享；提供对那些不依赖于存储格式和位置的数据的透明访问。它可以访问 netCDF、FITS、HDF-EOS、McIDAS、Vis5D、GIF、QuickTime、TIFF、ASCII 和 JPEG 文件格式的数据。它的显示模型支持交互式 3-D、数据溶合、多个数据视图、直接操作、协作和虚拟现实。数据分析和计算与可视化集成在一起以支持计算指导和其它复杂的交互模式。VisAD 是设计用来支持更宽范围的用户界面，从简单的数据浏览器 Applet 到可以使多组科学家协作开发数据分析算法的复杂应用程序。
VisAD 分发版包括源代码（还有以 .jar 文件表示的已编译类）文档和几个来自地球科学、天文学和其它学科的样本应用程序。还包括 VisAD Spread Sheet，它使得无需编写任何应用程序代码就可以访问许多 VisAD 的特性。
VisAD 的当前版本是 2.0，可以自由获得，由 GNU Lesser General Public License (LGPL) 特许。
使用示例
import visad.*;
import visad.java2d.DisplayImplJ2D;
import java.rmi.RemoteException;
import java.awt.*;
import javax.swing.*;
/**
VisAD指南示例 P1_01
第一个指南示例.根据MathType( time -> height )而描述的一个方程式
height = f(time), 这个方程式描述了一条简单的线
这个方程的表达式如下: height = 45 - 5 * time^2,
我们现在拥有height的值,而time是一个连续的独立的具有值的变量
在程序中我们在Set中设置它的值
运行程序"P1_01"
*/
public class P1_01{
// Declare variables
// The quantities to be displayed in x- and y-axis
private RealType time, height;
// The function height = f(time), represented by ( time -> height )
private FunctionType func_time_height;
// Our Data values for time are represented by the set
private Set time_set;
// The Data class FlatField, which will hold time and height data.
// time data are implicitely given by the Set time_set
private FlatField vals_ff;
// The DataReference from the data to display
private DataReferenceImpl data_ref;
// The 2D display, and its the maps
private DisplayImpl display;
private ScalarMap timeMap, heightMap;
// The constructor for our example class
public P1_01 (String []args)
throws RemoteException, VisADException {
// Create the quantities
// Use RealType(String name)
time = new RealType("time");
height = new RealType("height");
// Create a FunctionType, that is the class which represents our function
// This is the MathType ( time -> height )
// Use FunctionType(MathType domain, MathType range)
func_time_height = new FunctionType(time, height);
// Create the time_set, with 5 integer values, ranging from 0 to 4.
// That means, that there should be 5 values for height.
// Use Integer1DSet(MathType type, int length)
time_set = new Integer1DSet(time, 5);
// Those are our actual height values
// Note the dimensions of the array:
//   float[ number_of_range_components ][ number_of_range_samples]
float[][] h_vals = new float[][]{{0.0f, 33.75f, 45.0f, 33.75f, 0.0f,} };
// Create a FlatField, that is the class for the samples
// Use FlatField(FunctionType type, Set domain_set)
vals_ff = new FlatField( func_time_height, time_set);
// and put the height values above in it
vals_ff.setSamples( h_vals );
// Create Display and its maps
// A 2D display
display = new DisplayImplJ2D("display1");
// Create the ScalarMaps: quantity time is to be displayed along x-axis
// and height along y-axis
// Use ScalarMap(ScalarType scalar, DisplayRealType display_scalar)
timeMap = new ScalarMap( time, Display.XAxis );
heightMap = new ScalarMap( height, Display.YAxis );
// Add maps to display
display.addMap( timeMap );
display.addMap( heightMap );
// Create a data reference and set the FlatField as our data
data_ref = new DataReferenceImpl("data_ref");
data_ref.setData( vals_ff );
// Add reference to display
display.addReference( data_ref );
// Create application window, put display into it
JFrame jframe = new JFrame("My first VisAD application");
jframe.getContentPane().add(display.getComponent());
// Set window size and make it visible
jframe.setSize(300, 300);
jframe.setVisible(true);
}
public static void main(String[] args)
throws RemoteException, VisADException
{
new P1_01(args);
}
}
[1]﻿