在“VPython程序设计入门”一文中,介绍了建模的第三种方法:将2D图形沿指定路径拉伸为3D图形,并用该方法创建了倒扣碗、中空矩形柱、圆管90度弯头和截面为三角形的圆环等3D图形。该方法很灵活,能得到各种各样的3D图形。本文程序将2D图形圆拉伸为有三角形和梯形孔洞的圆柱,即用2D图形圆拉伸为圆柱,并在圆柱的圆形面上,有一个三角形和一个梯形的孔洞,该孔洞从圆柱的一个圆形面贯穿到圆柱的另一个圆形面。具体程序如下。其中函数Extrusion是按照参数path指定的路径,将参数shape指定的2D图形,拉伸为3D图形。如果有孔洞,参数shape将是一个列表,参数shape列表的第1项是被拉伸的2D图形;定义孔洞形状的2D图形将作为shape列表的第2项,第3项,…。孔洞之间不得相互重叠。
from vpython import *
extrusion(path=[vec(0,0,0), vec(0,0,-3)], #拉伸路径
texture=textures.metal, #圆柱的纹理
shape=[ shapes.circle(radius=1.5), #2D图形圆的半径为1.5,将拉伸为圆柱
shapes.triangle(pos=[0,-0.6], length=1.2), #等边三角形边长为1.2,将成为孔洞
shapes.trapezoid(pos=[0,0.6], width=1.6, #梯形孔洞,底宽为1.6,高为1,顶宽为0.6
height=1, top=0.6) ], pos=vec(-3,0,0)) #如省略顶宽,默认顶宽为底宽的一半
运行效果


被折叠的 条评论
为什么被折叠?



