二元函数图形化的库——Figure 3D (原创程序)

middle 2005-05-09 01:32:14
数据图形化(Data Visualization)是让辛苦采集或计算而得的数据产生真正价值的有效工具。因为我们需要的往往不是数据本身,而是数据所呈现的事物的本质。通过数据图形化,可以获得事物变化的趋势,转折点等等。对于以函数形式体现的数据,这些本质表现为单调性和极值等等。

实际中采集或计算的的数据经常以一元函数的形势得到。一元函数是十分容易理解的。即使不进行图形化,一个给定的一元函数的性质也可以通过简单的取样获得。而且其图形化也是比较简单的。

更加复杂的情况是二元函数。对于给定的二元函数,通过直接观察其解析形势,往往不能想象出其性质。而对其取样又比较困难——沿着其(x,y)平面的哪些方向进行取样往往只有得知其主要性质之后才能决定。因此对二元函数的图形化是十分有用的。看到一个二元函数的曲面,用户可以得到直观地感受,分析出在某一区域的极点和平坦区等。

由于具有两个自由变量,对二元函数的可视化是一个三维的曲面。在计算机的二维显示器上显示三维图形需要进行三维渲染(3D Redering)。这种工作往往借助3D引擎达到,比如OpenGL和Direct3D。

对于二元函数图形化这个工作,我个人认为使用全功能的3D引擎太过浪费(too expensive)。另外几个让我个人感觉不爽的因素是,常见的3D引擎都是C语言的,而且仅仅支持3D处理,相应的窗口处理还是必须利用特定平台的本地接口(native APIs)。而3D引擎的和本地接口的结合又是各不相同。Windows对OpenGL的支持比较差,Direct3D又不能跨平台。Java3D可能最符合要求,但是Sun对这个扩展包越来越不上心了。

所有这些不利,如果对于一个游戏的开发来说,与3D引擎提供的便利相比,都是不重要的。但是对于一个简单的二元函数可视化的任务来说,都是too expensive的体现。我可不想为我的程序写一个硬件抽象层(HAL)来interface不同的引擎,也不想为下一个Java或者Windows版本重写代码。编写一个二元函数图形化的库,这个问题我考虑了大约一年了。其间Java3D,OpenGL都考虑过,因为不能达到预期的目标又都放弃了。

我的目标是:
1. 图形化二元函数。
2. 保持跨平台性,不因为平台的转换而修改代码。
3. 保持低层接口(underlying supporting APIs)的稳定,不使用频繁修改的API。
4. 重视静态图形质量。放弃动画性能。
5. 不需要音效。
6. 暂时不支持用户交互。
7. 最好是Java的,因为我今后一段时间写的应用都是Java的。

所有这些目标和起来的努力,就是我今天能提供的Figure 3D。最终这个程序成为了一个可以重用的组件,仅仅基于J2SE,没有使用其他的第三方库。显示效果还可以接受。我会继续改进。大家如果有兴趣可以发信给我fengdong@263.net.cn。
...全文
191 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
zzwu 2005-05-12
  • 打赏
  • 举报
回复
这2个图形和数据采集有联系吗?

看来好象都是利用一个2元函数表达式得到的.
middle 2005-05-12
  • 打赏
  • 举报
回复
两个截图和数据采集没有联系。是通过二元函数得到的。
middle 2005-05-09
  • 打赏
  • 举报
回复
控件的截图:
http://bbs.chinaunix.net/forum/uploadfile/untitled-1_14511115648572.gif
http://bbs.chinaunix.net/forum/uploadfile/untitled-2_46171115648782.gif

4,445

社区成员

发帖
与我相关
我的任务
社区描述
图形图像/机器视觉
社区管理员
  • 机器视觉
  • 迪菲赫尔曼
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧