Octave + Vtk = Octaviz,数据因此而美丽!
今晚,在观摩 Octave 3.0.0 的 3D 数据可视化功能之时,突发奇想,为什么不用 Vtk 作为 Octave 的 2D/3D 图形渲染器呢?于是 google 了一下,居然真的有这样的东西,它就是 Octaviz。
Octaviz 使用 C++ 和 Python 语言对 Vtk 进行了封装,实现了在 Octave 环境中调用 Vtk 图形渲染功能完成各类 2D/3D 数据的可视化任务。目前 Octaviz 还处于开发中,但已具备相当的可用性与稳定性,目前最新版本是 0.4.7,其安装说明见:http://octaviz.sourceforge.net/index.php?page=build。
在 Gentoo 下安装 Octaviz 比较省力,前提是已安装了 Octave 与 Vtk,而且尽量是最新版本的。 目前,Octave 最新版本为 3.0.0,其安装过程可参考我的另一篇日志《关于 Octave 3.0》。Vtk 的最新版本是 5.0.4,可直接从 gentoo portage 中安装。
若系统已具备 Octave (version >= 3.0.0) 与 Vtk (version >= 5.0.4) ,可在 bugs.gentoo.org 上搜到较早版本的 Octaviz ebuild 文件,我找到的是 octaviz-0.4.6.ebuild,然后对其进行适应性修改,使之支持最新的 octaviz 0.4.7,我修改后的 ebuild 可从本站下载:octaviz-0.4.7.ebuild。
如果不知在 gentoo 中如何使用所下载的 ebuild,请阅读 http://zh.gentoo-wiki.com/HOWTO_Write_Ebuilds。
安装 octaviz 时,需要很长的时间,慢慢等,可以看看一些平日“没空”去看的那些书。
octaviz 安装完毕后,可以使用下面给出的 octave 脚本文件 test.m 测试一下:
n = [31 21 11;18 42 14;55 46 17;56 25 13];
c = [5 49 15;30 50 16;42 42 15;43 29 13;18 28 12;32 6 8;63 36 15;59 60 20];
h = [23 5 7;32 0 16;37 5 0;73 36 16;69 60 20;54 62 28;57 66 12;6 59 16;1 44 22;0 49 6];
vtk_plot3(o(:,1),o(:,2),o(:,3),'MarkerSize', 8, 'MarkerColor', [1 0 0]);
vtk_plot3(n(:,1),n(:,2),n(:,3),'MarkerSize',10, 'MarkerColor', [0 0 1]);
vtk_plot3(c(:,1),c(:,2),c(:,3),'MarkerSize',10, 'MarkerColor', [0 1 0]);
vtk_plot3(h(:,1),h(:,2),h(:,3),'MarkerSize', 5, 'MarkerColor', [1 1 1]);
在终端中执行:
可视化效果应当如下图所示:
下面还有一个测试示例:
m0 = 4; m1 = 3; m2 = 2; m3 = 3; m4 = 6; m5 = 2; m6 = 6; m7 = 4;
r = sin(m0*phi).^m1 + cos(m2*phi).^m3 + sin(m4*theta).^m5 + cos(m6*theta).^m7;
x = r .* sin(phi) .* cos(theta);
y = r .* cos(phi);
z = r .* sin(phi) .* sin(theta);
vtk_surf(x,y,z);