首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Mathematica之多彩的盒子

Mathematica之多彩的盒子

作者头像
WolframChina
发布2018-05-31 14:11:23
3490
发布2018-05-31 14:11:23
举报
文章被收录于专栏:WOLFRAMWOLFRAM

Mathematica除了让学习更有趣之外,还使我们的生活变得更有意义.

下面小编从Mathematica中给大家变出一个多彩的盒子.

首先要找六张你喜欢的图片,把这些图片赋值给一个变量 pics 现在让我们取出第一张图片来做一点测试, 也就是将该照片作为纹理应用在 3 D 的多边形之中.

Graphics3D[{Texture[pics[[1]]], Polygon[{{-1, -1, -1}, {1, -1, -1}, {1, 1, -1}, {-1, 1, -1}}, VertexTextureCoordinates -> {{0, 0}, {1, 0}, {1, 1}, {0, 1}}]},

Lighting -> "Neutral"]

好的, 刚才是一张多边形的例子, 那现在我们想要将这张图片的纹理映射在盒子的 6 个面上, coords 就是这 6 个面的坐标..

vtc = {{0, 0}, {1, 0}, {1, 1}, {0, 1}};

coords = {{{0, 0, 0}, {0, 1, 0}, {1, 1, 0}, {1, 0, 0}}, {{0, 0, 0}, {1, 0, 0}, {1, 0, 1}, {0, 0, 1} }, {{1, 0, 0}, {1, 1, 0}, {1, 1, 1}, {1, 0, 1}}, {{1, 1, 0}, {0, 1, 0}, {0, 1, 1}, {1, 1, 1}}, {{0, 0, 1}, {1, 0, 1}, {1, 1, 1}, {0, 1, 1}}};

Graphics3D[{Texture[pics[[1]]], Polygon[coords, VertexTextureCoordinates -> Table[vtc, {6}]]}, Lighting -> "Neutral", Boxed -> False]

再更复杂一点, 刚才是一张纹理的例子, 那现在我们想要将 6 张图片的纹理映射在盒子的 6 个面上.原理其实都是一样的,但在这里我们加入一点点的透明度..

sides = pics[[;; 6]];

v = {{-1, -1, -1}, {1, -1, -1}, {1, 1, -1}, {-1, 1, -1}, {-1, -1, 1}, {1, -1, 1}, {1, 1, 1}, {-1, 1, 1}};

idx = {{1, 2, 3, 4}, {1, 2, 6, 5}, {2, 3, 7, 6}, {3, 4, 8, 7}, {4, 1, 5, 8}, {5, 6, 7, 8}};

vtc = {{0.01, 0.01}, {0.99, 0.01}, {0.99, 0.99}, {0.01, 0.99}};

Graphics3D[{Opacity[.8], EdgeForm[Directive[Thick, White]], Table[{Texture[sides[[i]]], GraphicsComplex[v, Polygon[idx[[i]], VertexTextureCoordinates -> vtc]]}, {i, 6}]}, Boxed -> False, Method -> {"RotationContor" -> "Globe"}, Lighting -> "Neutral"]

现在让我们钻到盒子的里面去看一下,

当然需要指定我们的观察点了 ViewVector -> {{.8, .8, 0}, {0, 0, 0}}.

Graphics3D[{Black, EdgeForm[None], Table[{Texture[sides[[i]]], GraphicsComplex[v, Polygon[idx[[i]], VertexTextureCoordinates -> vtc]]}, {i, 6}]},

ViewVector -> {{.8, .8, 0}, {0, 0, 0}}, ViewAngle -> 2, Boxed -> False, Method -> {"RotationContor" -> "Globe"}]

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2016-06-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 WOLFRAM 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档