立体图与三维数据展示
icon2 Program Impossible | icon4 2008-08-11 17:51| icon39 Comments | 本文内容遵从CC版权协议 转载请注明出自matrix67.com

    我的左眼有相当严重的散光,因此无缘各种类型的3D立体图,包括看对眼、立体眼镜、左右两幅图(一只眼睛看一个)等等。后来,网上出现了一种只需要一只眼睛就能体验的3D图,原理非常简单,效果也比较震撼。只需要在两个眼睛的位置分别拍照,然后做成gif循环显示两个图片,大脑也可以从中迅速获取信息分辨出第三维来。闲逛ffffound时偶然发现这个图,突然想到:同样的方法为何不用于展示三维数据呢?于是试着用Mathematica做了一个。Mathematica输出gif动画相当简单,只需要一句Export["file.gif",{g1, g2, ...}]就行了。在这里,我们将用三维空间的点来展示组合数的各位数字之和的分布情况。可以看到,使用3D动画的效果非常明显。

img = ListPointPlot3D[
  Table[Total[IntegerDigits[Binomial[i, j]]], {i, 0, 50}, {j, 0, 50}],
   ViewVertical -> {0, 0, 1}, ImageSize -> 600];
Export["F:\\file.gif", {Show[img, ViewVector -> {-32, -20, 60}],
  Show[img, ViewVector -> {-31, -21, 60}]}];

    类似地,我们还可以做出环视一周的gif动画来,虽然这样将很难观察出细节,但对总体的把握效果将更好。

9 条回复

  • 楼层: 沙发 | | 影棋魂 说:

    好玩~

  • 楼层: 板凳 | | liquid 说:

    这gif做的真鬼畜

  • 楼层: 地毯 | | liquid 说:

    给一个简单的tip,点击右上的最小化或者恢复窗口/最大化按钮,摁住不要放,可以暂停gif图。帮助观察比较

  • 楼层: 地板 | | LT 说:

    img = ListPointPlot3D[Table[Total[IntegerDigits[Binomial[i, j]]], {i, 0, 50}, {j, 0, 50}], ViewVertical -> {0, 0, 1}, ImageSize -> 600];
    x = True;
    img1 = Show[img, ViewVector -> {-32, -20, 60}];
    img2 = Show[img, ViewVector -> {-31, -21, 60}];
    DynamicModule[{x = 0}, Dynamic[x++; If[OddQ[x], img1, img2]]]

    比GIF闪的快一点呵呵

  • 楼层: 地下室 | | wandsea 说:

    看多了眼花 = =

  • 楼层: 地基 | | shellex 说:

    就是视觉暂留效应嘛...晃个不停。
    ffffound的有好东东,基本上每天晃一眼

  • 楼层: 地壳 | | hetong_007 说:

    ffffound上面好多图不和谐…

  • 楼层: 地幔 | | Ai.Freedom 说:

    不错不错, 这个比较简单, 我也看不懂那种要对眼的..

  • 楼层: 地核 | | Matrix67: My Blog » Blog Archive » 错觉动画:旋转的网格 说:

    [...] 网友liquid曾经告诉我们: 给一个简单的tip:点击右上的最小化或者恢复窗口/最大化按钮,摁住不要放,可以暂停gif图,帮助观察比较。 [...]

您也随便说几句吧:

请注意:如果您是第一次在本站发表评论,您的评论需要通过管理员的审核。

您可以在Gravatar设置您的头像。