这一篇就作为圣诞节的特别文章了,来教教大家如何使用mathematica制作圣诞树。
首先我们可以看一下效果。
可以看到还是非常漂亮的,下面就上代码。
文章目录(Table of Contents)
圣诞树框架
首先我们要生成圣诞树的大体框架,代码如下。
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
]
通过上面的代码,我们可以得到下面的效果图,是不是已经好看了一些。
让圣诞树动起来
最后我们通过视角的变换让圣诞数看起来是在运动,达到了最后的效果。
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]
- 微信公众号
- 关注微信公众号
- QQ群
- 我们的QQ群号
评论