当前位置: 首页 > news >正文

《 VPython 10套新手入门完整可运行源码》

VPython 10套新手入门完整可运行源码

全部复制即可运行,安装依赖:pip install vpython

1. 基础弹跳小球(力学入门)

fromvpythonimport*# 场景设置scene=canvas(title="弹跳小球",width=600,height=400)floor=box(pos=vector(0,-5,0),size=vector(12,0.5,6),color=color.gray(0.3))ball=sphere(pos=vector(0,4,0),radius=1,color=color.red)# 物理参数ball.v=vector(0,0,0)g=vector(0,-9.8,0)dt=0.01whileTrue:rate(100)ball.v+=g*dt ball.pos+=ball.v*dt# 地面碰撞反弹ifball.pos.y-ball.radius<floor.pos.y+floor.size.y/2:ball.v.y=-ball.v.y*0.85# 恢复系数

2. 弹簧振子(简谐运动)

fromvpythonimport*scene=canvas(title="弹簧振子")wall=box(pos=vector(-5,0,0),size=vector(0.5,4,4),color=color.gray(0.2))block=box(pos=vector(2,0,0),size=vector(1.5,1.5,1.5),color=color.blue)spring=helix(pos=wall.pos,axis=block.pos-wall.pos,radius=0.4,coils=12)# 物理参数k=15m=2block.v=vector(1.2,0,0)dt=0.01whileTrue:rate(100)spring.axis=block.pos-wall.pos stretch=mag(spring.axis)-7F=-k*stretch*norm(spring.axis)block.v+=F/m*dt block.pos+=block.v*dt

3. 单摆仿真

fromvpythonimport*scene=canvas(title="单摆")pivot=sphere(pos=vector(0,5,0),radius=0.2,color=color.gray(0.5))bob=sphere(pos=vector(3,0,0),radius=0.4,color=color.green)rod=cylinder(pos=pivot.pos,axis=bob.pos-pivot.pos,radius=0.1)L=mag(bob.pos-pivot.pos)bob.v=vector(0,0.6,0)g=9.8dt=0.01whileTrue:rate(100)rod.axis=bob.pos-pivot.pos theta=atan2(bob.pos.x,bob.pos.y-pivot.pos.y)a_tan=-g*sin(theta)/L bob.v.x+=a_tan*dt bob.pos.x+=bob.v.x*dt# 约束摆长r=bob.pos-pivot.pos bob.pos=pivot.pos+L*norm(r)

4. 两球弹性碰撞

fromvpythonimport*scene=canvas(title="弹性碰撞")ball1=sphere(pos=vector(-3,0,0),radius=0.8,color=color.orange)ball2=sphere(pos=vector(3,0,0),radius=0.8,color=color.cyan)m1,m2=1,1ball1.v=vector(2.5,0,0)ball2.v=vector(0,0,0)dt=0.01whileTrue:rate(100)ball1.pos+=ball1.v*dt ball2.pos+=ball2.v*dt# 碰撞检测dist=mag(ball1.pos-ball2.pos)ifdist<ball1.radius+ball2.radius:v1,v2=ball1.v.x,ball2.v.x ball1.v.x=((m1-m2)*v1+2*m2*v2)/(m1+m2)ball2.v.x=((m2-m1)*v2+2*m1*v1)/(m1+m2)

5. 点电荷电场可视化

fromvpythonimport*scene=canvas(title="点电荷电场",background=color.black)q1=sphere(pos=vector(0,0,0),radius=0.3,color=color.red)q2=sphere(pos=vector(4,0,0),radius=0.3,color=color.blue)# 绘制电场箭头k=9e9step=1forxinrange(-6,7,step):foryinrange(-4,5,step):forzinrange(-2,3,step):pos=vector(x,y,z)r1=pos-q1.pos r2=pos-q2.pos E1=k*1*norm(r1)/mag(r1)**2E2=k*(-1)*norm(r2)/mag(r2)**2E=E1+E2 arrow(pos=pos,axis=E*0.08,color=color.yellow)

6. 行星绕恒星轨道(开普勒)

fromvpythonimport*scene=canvas(title="行星轨道")star=sphere(pos=vector(0,0,0),radius=1.2,color=color.yellow,emissive=True)planet=sphere(pos=vector(6,0,0),radius=0.4,color=color.blue,make_trail=True)G=1M_star=10planet.v=vector(0,1.3,0)dt=0.01whileTrue:rate(100)r=planet.pos-star.pos F=-G*M_star*1*norm(r)/mag(r)**2planet.v+=F*dt planet.pos+=planet.v*dt

7. 滑块斜面摩擦

fromvpythonimport*scene=canvas(title="斜面滑块")# 斜面angle=radians(25)slope=box(pos=vector(3,-1.5,0),size=vector(8,0.3,3),color=color.gray(0.4))slope.rotate(angle=angle,axis=vector(0,0,1),origin=slope.pos)block=box(pos=vector(0,2,0),size=vector(1,1,1),color=color.magenta)g=9.8mu=0.12block.v=vector(0,0,0)dt=0.01whileTrue:rate(100)# 沿斜面坐标系分解重力sinA=sin(angle)cosA=cos(angle)a_down=g*sinA-mu*g*cosA block.v.x+=a_down*dt block.pos.x+=block.v.x*dt block.pos.y=block.pos.x*tan(angle)+0.6

8. 带电粒子在磁场回旋

fromvpythonimport*scene=canvas(title="磁场中带电粒子回旋",background=color.black)# 匀强磁场箭头B=vector(0,0,0.8)forzinrange(-4,5,2):arrow(pos=vector(0,0,z),axis=vector(0,0,1),color=color.green,shaftwidth=0.1)charge=sphere(pos=vector(-4,0,0),radius=0.3,color=color.orange,make_trail=True)q=1m=0.5charge.v=vector(0,2.5,0)dt=0.01whileTrue:rate(100)F=q*cross(charge.v,B)charge.v+=F/m*dt charge.pos+=charge.v*dt

9. 实时数据绘图(弹簧能量曲线)

fromvpythonimport*scene=canvas(title="弹簧振子能量")plot=graph(title="动能&势能",xtitle="时间",ytitle="能量")Ek_curve=gcurve(color=color.red,label="动能")Ep_curve=gcurve(color=color.blue,label="弹性势能")wall=box(pos=vector(-5,0,0),size=vector(0.5,3,3))block=box(pos=vector(2,0,0),size=vector(1,1,1))spring=helix(pos=wall.pos,axis=block.pos-wall.pos,radius=0.3)k=12m=1block.v=vector(1.5,0,0)t=0dt=0.01whileTrue:rate(100)spring.axis=block.pos-wall.pos stretch=mag(spring.axis)-6F=-k*stretch*norm(spring.axis)block.v+=F/m*dt block.pos+=block.v*dt# 能量计算Ek=0.5*m*mag(block.v)**2Ep=0.5*k*stretch**2Ek_curve.plot(t,Ek)Ep_curve.plot(t,Ep)t+=dt

10. 3D基础几何体+鼠标交互

fromvpythonimport*scene=canvas(title="基础几何体 鼠标拖拽物体")box(pos=vector(-3,0,0),size=vector(1.5,1.5,1.5),color=color.cyan)sphere(pos=vector(0,0,0),radius=0.8,color=color.orange)cylinder(pos=vector(3,0,0),axis=vector(0,2,0),radius=0.6,color=color.green)cone(pos=vector(0,-3,0),axis=vector(0,1.5,0),radius=0.7,color=color.magenta)# 鼠标拖拽逻辑drag_obj=Nonedefmouse_down(evt):globaldrag_obj drag_obj=scene.mouse.pickdefmouse_move(evt):ifdrag_obj:drag_obj.pos=scene.mouse.posdefmouse_up(evt):globaldrag_obj drag_obj=Nonescene.bind("mousedown",mouse_down)scene.bind("mousemove",mouse_move)scene.bind("mouseup",mouse_up)

运行说明

  1. 安装:pip install vpython
  2. 新建py文件,复制任意一段代码直接运行,会自动弹出浏览器3D窗口
  3. 操作:鼠标左键拖拽旋转视角,滚轮缩放,右键平移画面
  4. 拓展:可自行修改质量、重力、电荷、弹簧劲度系数等参数观察变化
http://www.jsqmd.com/news/1394960/

相关文章:

  • 小白程序员转行AI Agent必看:高薪收藏攻略!
  • 2026年宁波公共标识选哪家 浙江新导向标识值得信赖 - 起跑123
  • 2026年浙江桥式三坐标哪家好,实地体验后给你推荐 - 起跑123
  • 2026年8月新型轻质发泡陶瓷构件厂家怎么选?测评与选厂参考 - 海棠依旧大
  • 2026 年至今,海淀专业的化粪池清理服务团队哪家**,别让臭味毁了家!深度清理的惊人秘密 - 行业推荐官【认证】
  • 2026年西安拆除清运服务商哪家好 宏阳专业回收推荐 - 起跑123
  • 东莞专业防水公司/深圳附近防水公司-莞固防水补强 - 行业严选官
  • 读了80篇文献依然找不到研究空白?教你利用GPT-5.6学会五种“挖缺思维”
  • 2026 年 8 月新发布:北京到青岛港集装箱拖车运输平台联系方式,你从没见过的物流效率密码,原来藏在那片海边的集装箱拖车队伍里? - 行业推荐官-2
  • 2026年市面上包装厂厂家有哪些测评:纸箱、彩印礼盒、缓冲材料与一体化包装服务厂家分析 - 海棠依旧大
  • 2026年常州企业网站制作 创意出众的服务商实力解析 - 起跑123
  • 中网B2B战略咨询的「共创式陪跑」长什么样
  • 拼多多采集工具:单机管理200+店铺零关联的底层架构
  • 2026 年 8 月新发布:肇庆靠谱的消防水箱厂家联系方式,你家楼顶藏的这玩意儿,关键时刻能救你全家的命你家楼顶藏的这玩意儿,关键时刻能救你全家的命 - 行业推荐官【认证】
  • 2026年西安靠谱的铜铁铝电线电缆回收服务商推荐 - 起跑123
  • 2026年浙江选购油烟净化器 易德环境细节更贴心 - 起跑123
  • 2026年重庆建筑工程施工合同纠纷靠谱律所推荐指南 - 起跑123
  • 2026 年 8 月新发布:雨湖专业的一体化热电偶温度变送器生产厂家联系方式,车间测温总出错?这玩意儿竟能把精度拉满还省半成本。-索正自动化仪表 - 企业信息推荐-2
  • 2026年8月市面上岳阳管件公司找哪家测评:PSP管、HDPE双壁波纹管、涂塑钢管、衬塑钢管、PPR管厂家分析 - 海棠依旧大
  • 识破杠杆“十倍盈利”幻象背后的真相:高收益预期下隐藏的风险 - 天下观知
  • 2026年布袋除尘器再加工供应商优选推荐指南 - 起跑123
  • 2026年浙江液压泵品牌推荐 展鹏液压为你适配实用液压泵 - 起跑123
  • 中网B2B战略咨询上海起步,2009年至今只做B2B产业全案
  • 从问题发现到内容资产:GEO 为什么不能只停留在监测?
  • 2026年无锡地区橡胶辊厂家选购参考指南 - 起跑123
  • 2026 年至今,金台口碑好的高大空间空气处理单元制造厂家选哪家,你家厂房的通风降温居然没用到它?才知道这玩意儿能省一半能耗费!-绿帆环境科技 - 行业鉴选官
  • 全栈式AI智能体搭建
  • CED
  • 2026年靠谱寿司店推荐 森田料理等多家优质门店盘点 - 起跑123
  • 2.2预定义门构建二选一选择器(VIVADO)