用数学知识设计一个镂空的花瓶

2017-05-18 16:37郑祥谢作如
中国信息技术教育 2017年9期
关键词:瓶身程序员柱子

郑祥+谢作如

制作一个镂空花瓶的想法,最初源于学校开设瓯窑课程的蒋老师。他想做一个瓶身由扭转的柱子构成,看起来特别有创意和艺术感的花瓶,如图1所示。但是,这种扭转的柱子结构很难用手捏出来,即使捏出来了一时半会儿也很难定型,只能通过灌浆法向模具中灌浆来完成定型。于是,他希望我们能用创客空间里的3D打印机来制作模具。但由于当时的3D建模水平比较弱,我们觉得没法做出这种扭曲旋转的效果,只好放弃了。直到现在看到了IME3D提供的3D程序员软件,才想到了解决的方案。

创意分析

一个瓶身由柱子扭转而成的镂空花瓶,主要由底盘和瓶身两个部分组成。其中,瓶身是由多根柱子扭转而成的,“如何让这些柱子均匀地分布在底盘(圆形)的边缘”成了这个想法能否实现的关键,而在3D建模中柱子与底盘的位置关系用平面坐标(x,y)就可确定,要想确定柱子的平面坐标(x,y)就需要一定的数学知识的支持。

3D程序员软件是一款用代码编程的形式来实现三维建模的软件,支持以各种数学公式生成模型的方式。只要找到柱子旋转的规律,就能用一个循环来批量生成旋转的柱子,从而实现这个花瓶的建模。3D程序员学习版的下载地址是http://www.ime3d.com/。

数学分析

设定底盘的半径为30,柱子的平面坐标为(x,y),柱子的数量为16根,可考虑从以下几方面思考问题。

思路一:通过圆的函数公式来寻找柱子的平面坐标(x,y)

圆的函数公式是(x-a)2+(y-b)2=r2,由于模型的中心位置为原点(0,0),因此该圆的公式可以简化为x2+y2=r2。设定底盘的半径为30,则x的范围为[-30,30],y坐标则可用x来表示,y=。

然而,思路一中根据x坐标无法简单有效地实现柱子在底盘上的均匀分布,如上页图2圆的函数曲线所示,因此放弃思路一。

思路二:通过角度来确定柱子的平面坐标(x,y)

要实现柱子在底盘上位置的均匀分布,其实就是在底盘上进行16等分,而这16个坐标位置则可以用角度θ来表示。通过三角函数即可得出柱子的横坐标x=rcosθ,纵坐标y=rsinθ,r为底盘的半径,θ的范围是[0,360],如图3所示。

按照思路二的分析,在编程过程中代表角度的循环变量θ的变化范围是0至360度,步长为22.5(即360/16)度,柱子的平面坐标为(rcosθ,rsinθ),r=30。

编程实现

按照以上分析进行编程建模,采用的建模软件为3D程序员。

步骤一:创建半径为30,高度为3的底盤

模型拉伸的模型居中属性设为:不居中,制作花瓶底盘的效果如图4所示。

步骤二:通过循环模块确定16根柱子的平面坐标

根据数学分析中的思路二,可以确定循环模块的几个参数设置,循环变量θ的变化范围:0~360,循环步长:22.5(即360/16)度,16根柱子所在平面上的坐标公式:(rcosθ,rsinθ),半径r:30。

以下是通过以上参数,设置的寻找16根柱子坐标的编程脚本,柱子截面以圆形为例,编程确定16根柱子的平面坐标具体设置如图5所示。

步骤三:通过高级拉伸模块完成对16根柱子的扭曲拉伸

通过编程脚本中的循环模块确定16根柱子的平面坐标后,就可通过高级拉伸模块完成这16根柱子的添加。

高级拉伸模块的属性设置可自行调整,高级拉伸制作螺旋结构的瓶身的设置如图6所示。

步骤四:通过布尔合并完成底盘和瓶身的合并,如图7所示。

步骤五:修改参数,调整模型

根据生成模型的外观,适当地进行调整,如将底盘半径适当扩大为32,效果如图8所示。

拓展升级

以上是利用三角函数和圆轨迹的关系,制作瓶身螺旋结构的花瓶的基本过程。除此之外,可以对模型的高度层数、扭曲角度,以及循环体中的循环步长等参数进行设置,可以调整出不同的效果。其中,高度层数的参数设置为1~5,会展现不同的拉伸效果,而循环步长则可以改柱子的数量。

图9的3D模型是不是很像一个艺术花瓶,其高度层数为4。这个螺旋花瓶的脚本代码如图10所示。不过,学生说这不像花瓶,倒像果篮,也有学生说这是一个艺术垃圾桶。但不管如何,这种有规律的模型结构,很适合用3D程序员来实现。

如果对相关内容感兴趣,请关注主持人博客。

猜你喜欢
瓶身程序员柱子
城里有朋友
春日粉妆
希腊遗址
2020年程序员依然很吃香
观察:长廊和柱子
百变瓶子
程序员之子
加班
Alexander Wang操刀为Evian设计瓶身