![Python编程与3D物理学仿真(视频版)](https://wfqqreader-1252317822.image.myqcloud.com/cover/912/43737912/b_43737912.jpg)
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人
1.2.4 圆柱体模型
cylinder()函数用于圆柱体建模,举例如下:
![](https://epubservercos.yuewen.com/AA498E/23020633909723406/epubprivate/OEBPS/Images/40928_20_3.jpg?sign=1739278354-plCaWvKRIbU2Y4wNgzz14BXBi56zUuT4-0-4a18184229a6d0a693aae4b0345ecbe7)
上述语句的作用是以坐标(0,2,1)为底面圆心建立一个高度为5、半径为1的圆柱体,圆柱体的名称为rod,执行程序后显示的图形如图1-11所示。
![](https://epubservercos.yuewen.com/AA498E/23020633909723406/epubprivate/OEBPS/Images/40928_20_4.jpg?sign=1739278354-0IV9i6D802ROUwkfcKbeAz2Vb8RFpw5l-0-3031916c693cebe09a909c698a1a463f)
图1-11
圆柱体函数的定义如图1-12所示。其中,pos为圆柱底面圆心位置,如图中红色箭头的起点,axis定义圆柱体的轴,如图中的红色箭头,包含轴方向和轴长度两层含义。在图1-12中,我们仅指定了x方向的轴长度5,对于该圆柱体来说,顶面圆心的坐标为(0,2,1)+(5,0,0)。
程序示例如下(完整的程序代码见“源代码\1-2-4.py”):
![](https://epubservercos.yuewen.com/AA498E/23020633909723406/epubprivate/OEBPS/Images/40928_21_1.jpg?sign=1739278354-aihOXztM4INx42aoxowClio1Nu2u4VHq-0-b64d6f2e40455c743ce1d55cafebecb4)
程序执行结果如图1-13所示。
![](https://epubservercos.yuewen.com/AA498E/23020633909723406/epubprivate/OEBPS/Images/40928_21_2.jpg?sign=1739278354-aaN6GDKC0Ikmz2PYrFUusE0jxyxzxHhC-0-63d5f93a822ea8c8bcddc6513a67d0d7)
图1-12
![](https://epubservercos.yuewen.com/AA498E/23020633909723406/epubprivate/OEBPS/Images/40928_21_3.jpg?sign=1739278354-btsgh9bqoD1fZvt0U7sNUXFzXxW2gDfw-0-d9dbc65a6d857b38921c338a5163ca9b)
图1-13
上述程序段的作用是建立单摆的三维模型。下面对该段程序进行详细说明:第一行引入3D模块;第二行定义单摆的长度L;第三行定义单摆的摆角theta;第四行在原点处建立一个白色的长方体基座base;第五行在坐标(L*sin(theta),-L*cos(theta),0)处建立一个半径为1的红色小球;第六行在坐标原点即长方体的位置建立一个半径为0.2的蓝色圆柱体摆杆rod,该摆杆的轴为由长方体基座的位置点指向小球的位置点。