β

用Mathematica画苹果

谁见到过风? 180 阅读

首先看看实物,我不由得感慨,苹果太贵了,吃不起,因此自己画一个解解馋。最终画的苹果在文章最后,欢迎品尝。

由于苹果是个上下凹进去的球,因此可以考虑圆环体作为苹果的基体,然后对圆环体进行压缩变化,就可以画出苹果来了,整个过程看起来还是相当简单的。然而怎样用函数去优化它的形状做起来还是有点麻烦的,比如中间给图形添加涟漪以使它出现凹凸不平的样子,以及最后给苹果添加翘曲的瓣瓣,这些地方我都试了很多次,修改了很多次。既要注意它的形状又要保证所有的函数必须连为一体,因为我想要的是一个完整的“苹果函数”,而不是由几个独立的函数拼凑起来。

整个画图过程可分一下几步:

  1. 将圆环体压实,并进行初步变化
  2. 在第1步的基础上添加涟漪
  3. 在第2步的基础上添加翘曲的瓣瓣
  4. 最后调整,上色,抛光,出图

下面是圆环体的图像:

易知其参数方程为:

其中r为小圆的半径,R为小圆圆心到圆环中心的距离,由于R和r的不同,环的图像也不同,具体可以看下图:

(注:此图来自wolfram mathworld)

因此可以通过改变R和r的值来得到我们想要的图形,在这里令R=r=1,获得的图像如下:

其剖面图形如下:

它是一个近似圆饼状的图形,但是苹果是上大下小的,因此还要继续调整,容易想到将其剖面圆形变换成侧偏的椭圆即可,先作xz上的平面图,这里设定苹果竖立放置时,上下方向变为z方向,其它两个方向一个为x方向,一个是y方向。

然后画三维图像,并做适当调整:

这个与苹果比较接近了,但还是不逼真,下面用三角函数为苹果做上一圈涟漪,做在x和y上都行,因为他们对称。

苹果身做好了,接下来要为它添个瓣, 由于瓣长在上面,角度v=pi,要找到一个函数使得图像pi处急剧增大这里用log函数,图像如下:

在xz面上合成:

这像个什么东东?接着将其整合到三维图形中:

最后在x轴上加微小偏移把瓣瓣搞弯,然后去纹上色抛光即可出炉了:

作者:谁见到过风?
原文地址:用Mathematica画苹果, 感谢原作者分享。

发表评论