[圣诞特别篇]Mathematica制作圣诞树|文艺数学君

  • A+
所属分类:美丽的图像
摘要正值圣诞节期间,就用mathematica制作一个圣诞树给大家,祝大家圣诞快乐。

 

这一篇就作为圣诞节的特别文章了,来教教大家如何使用mathematica制作圣诞树。

首先我们可以看一下效果。

圣诞树

可以看到还是非常漂亮的,下面就上代码。

圣诞树框架

首先我们要生成圣诞树的大体框架,代码如下。

a = .5;
r = .3;
pts = Table[-{t*r*Cos[a*t], t*r*Sin[a*t], t}, {t, 0, 80, .1}];
Graphics3D[
{RGBColor["#0E7337"], PointSize[Medium], Point[pts]}
, Boxed -> False
]

上面就是一个参数方程,然后使用Table函数生成点,最后通过Graphics3D画出来。我们看一下效果。

圣诞树框架

圣诞树美化

接下来我们要给我们上面画出的圣诞树进行美化,美化的方法就是通过加上随机的球来模拟圣诞树上的玩具,在将背景变为黑色,具体代码如下。

Graphics3D[{
{RGBColor["#0E7337"], PointSize[Medium], Point[pts]},
{RGBColor["#0E7337"], PointSize[Tiny], Point[pts - .8]},
Table[{Hue[RandomReal[]], Specularity[White, 20],
Sphere[dec - {0, 0, 2.6}, RandomReal[3]]}, {dec, decorationPos}]
}
, Boxed -> False, BoxRatios -> {1, 1, 1.7}, ViewPoint -> {4, 0, 0},
Background -> Black
]

通过上面的代码,我们可以得到下面的效果图,是不是已经好看了一些。

mathematica美化圣诞树

 

让圣诞树动起来

最后我们通过视角的变换让圣诞数看起来是在运动,达到了最后的效果。

pic1 = Table[
Graphics3D[{
{RGBColor["#0E7337"], PointSize[Medium], Point[pts]},
{RGBColor["#0E7337"], PointSize[Tiny], Point[pts - .8]},
Table[{Hue[RandomReal[]], Specularity[White, 20],
Sphere[dec - {0, 0, 2.6}, RandomReal[3]]}, {dec, decorationPos}]
}
, Boxed -> False, BoxRatios -> {1, 1, 1.7},
ViewPoint -> {x, N[Sqrt[16 - x^2]], 0}, ImageSize -> {300, 300},
Background -> Black
]
, {x, -4, 4, 0.5}];
pic2 = Table[
Graphics3D[{
{RGBColor["#0E7337"], PointSize[Medium], Point[pts]},
{RGBColor["#0E7337"], PointSize[Tiny], Point[pts - .8]},
Table[{Hue[RandomReal[]], Specularity[White, 20],
Sphere[dec - {0, 0, 2.6}, RandomReal[3]]}, {dec, decorationPos}]
}
, Boxed -> False, BoxRatios -> {1, 1, 1.7},
ViewPoint -> {x, -N[Sqrt[16 - x^2]], 0}, ImageSize -> {300, 300},
Background -> Black
]
, {x, 4, -4, -0.5}];
pic = Join[pic1, pic2]

导出gif

最后一步,就是把上面的图片导出为gif,就大功告成了。

Export["merrcy.gif", pic]

mathematica制作美丽的圣诞树

 

  • 微信公众号
  • 关注微信公众号
  • weinxin
  • QQ群
  • 我们的QQ群号
  • weinxin
王 茂南

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: