尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
《 VPython 10套新手入门完整可运行源码》
VPython 10套新手入门完整可运行源码全部复制即可运行安装依赖pip install vpython1. 基础弹跳小球力学入门fromvpythonimport*# 场景设置scenecanvas(title弹跳小球,width600,height400)floorbox(posvector(0,-5,0),sizevector(12,0.5,6),colorcolor.gray(0.3))ballsphere(posvector(0,4,0),radius1,colorcolor.red)# 物理参数ball.vvector(0,0,0)gvector(0,-9.8,0)dt0.01whileTrue:rate(100)ball.vg*dt ball.posball.v*dt# 地面碰撞反弹ifball.pos.y-ball.radiusfloor.pos.yfloor.size.y/2:ball.v.y-ball.v.y*0.85# 恢复系数2. 弹簧振子简谐运动fromvpythonimport*scenecanvas(title弹簧振子)wallbox(posvector(-5,0,0),sizevector(0.5,4,4),colorcolor.gray(0.2))blockbox(posvector(2,0,0),sizevector(1.5,1.5,1.5),colorcolor.blue)springhelix(poswall.pos,axisblock.pos-wall.pos,radius0.4,coils12)# 物理参数k15m2block.vvector(1.2,0,0)dt0.01whileTrue:rate(100)spring.axisblock.pos-wall.pos stretchmag(spring.axis)-7F-k*stretch*norm(spring.axis)block.vF/m*dt block.posblock.v*dt3. 单摆仿真fromvpythonimport*scenecanvas(title单摆)pivotsphere(posvector(0,5,0),radius0.2,colorcolor.gray(0.5))bobsphere(posvector(3,0,0),radius0.4,colorcolor.green)rodcylinder(pospivot.pos,axisbob.pos-pivot.pos,radius0.1)Lmag(bob.pos-pivot.pos)bob.vvector(0,0.6,0)g9.8dt0.01whileTrue:rate(100)rod.axisbob.pos-pivot.pos thetaatan2(bob.pos.x,bob.pos.y-pivot.pos.y)a_tan-g*sin(theta)/L bob.v.xa_tan*dt bob.pos.xbob.v.x*dt# 约束摆长rbob.pos-pivot.pos bob.pospivot.posL*norm(r)4. 两球弹性碰撞fromvpythonimport*scenecanvas(title弹性碰撞)ball1sphere(posvector(-3,0,0),radius0.8,colorcolor.orange)ball2sphere(posvector(3,0,0),radius0.8,colorcolor.cyan)m1,m21,1ball1.vvector(2.5,0,0)ball2.vvector(0,0,0)dt0.01whileTrue:rate(100)ball1.posball1.v*dt ball2.posball2.v*dt# 碰撞检测distmag(ball1.pos-ball2.pos)ifdistball1.radiusball2.radius:v1,v2ball1.v.x,ball2.v.x ball1.v.x((m1-m2)*v12*m2*v2)/(m1m2)ball2.v.x((m2-m1)*v22*m1*v1)/(m1m2)5. 点电荷电场可视化fromvpythonimport*scenecanvas(title点电荷电场,backgroundcolor.black)q1sphere(posvector(0,0,0),radius0.3,colorcolor.red)q2sphere(posvector(4,0,0),radius0.3,colorcolor.blue)# 绘制电场箭头k9e9step1forxinrange(-6,7,step):foryinrange(-4,5,step):forzinrange(-2,3,step):posvector(x,y,z)r1pos-q1.pos r2pos-q2.pos E1k*1*norm(r1)/mag(r1)**2E2k*(-1)*norm(r2)/mag(r2)**2EE1E2 arrow(pospos,axisE*0.08,colorcolor.yellow)6. 行星绕恒星轨道开普勒fromvpythonimport*scenecanvas(title行星轨道)starsphere(posvector(0,0,0),radius1.2,colorcolor.yellow,emissiveTrue)planetsphere(posvector(6,0,0),radius0.4,colorcolor.blue,make_trailTrue)G1M_star10planet.vvector(0,1.3,0)dt0.01whileTrue:rate(100)rplanet.pos-star.pos F-G*M_star*1*norm(r)/mag(r)**2planet.vF*dt planet.posplanet.v*dt7. 滑块斜面摩擦fromvpythonimport*scenecanvas(title斜面滑块)# 斜面angleradians(25)slopebox(posvector(3,-1.5,0),sizevector(8,0.3,3),colorcolor.gray(0.4))slope.rotate(angleangle,axisvector(0,0,1),originslope.pos)blockbox(posvector(0,2,0),sizevector(1,1,1),colorcolor.magenta)g9.8mu0.12block.vvector(0,0,0)dt0.01whileTrue:rate(100)# 沿斜面坐标系分解重力sinAsin(angle)cosAcos(angle)a_downg*sinA-mu*g*cosA block.v.xa_down*dt block.pos.xblock.v.x*dt block.pos.yblock.pos.x*tan(angle)0.68. 带电粒子在磁场回旋fromvpythonimport*scenecanvas(title磁场中带电粒子回旋,backgroundcolor.black)# 匀强磁场箭头Bvector(0,0,0.8)forzinrange(-4,5,2):arrow(posvector(0,0,z),axisvector(0,0,1),colorcolor.green,shaftwidth0.1)chargesphere(posvector(-4,0,0),radius0.3,colorcolor.orange,make_trailTrue)q1m0.5charge.vvector(0,2.5,0)dt0.01whileTrue:rate(100)Fq*cross(charge.v,B)charge.vF/m*dt charge.poscharge.v*dt9. 实时数据绘图弹簧能量曲线fromvpythonimport*scenecanvas(title弹簧振子能量)plotgraph(title动能势能,xtitle时间,ytitle能量)Ek_curvegcurve(colorcolor.red,label动能)Ep_curvegcurve(colorcolor.blue,label弹性势能)wallbox(posvector(-5,0,0),sizevector(0.5,3,3))blockbox(posvector(2,0,0),sizevector(1,1,1))springhelix(poswall.pos,axisblock.pos-wall.pos,radius0.3)k12m1block.vvector(1.5,0,0)t0dt0.01whileTrue:rate(100)spring.axisblock.pos-wall.pos stretchmag(spring.axis)-6F-k*stretch*norm(spring.axis)block.vF/m*dt block.posblock.v*dt# 能量计算Ek0.5*m*mag(block.v)**2Ep0.5*k*stretch**2Ek_curve.plot(t,Ek)Ep_curve.plot(t,Ep)tdt10. 3D基础几何体鼠标交互fromvpythonimport*scenecanvas(title基础几何体 鼠标拖拽物体)box(posvector(-3,0,0),sizevector(1.5,1.5,1.5),colorcolor.cyan)sphere(posvector(0,0,0),radius0.8,colorcolor.orange)cylinder(posvector(3,0,0),axisvector(0,2,0),radius0.6,colorcolor.green)cone(posvector(0,-3,0),axisvector(0,1.5,0),radius0.7,colorcolor.magenta)# 鼠标拖拽逻辑drag_objNonedefmouse_down(evt):globaldrag_obj drag_objscene.mouse.pickdefmouse_move(evt):ifdrag_obj:drag_obj.posscene.mouse.posdefmouse_up(evt):globaldrag_obj drag_objNonescene.bind(mousedown,mouse_down)scene.bind(mousemove,mouse_move)scene.bind(mouseup,mouse_up)运行说明安装pip install vpython新建py文件复制任意一段代码直接运行会自动弹出浏览器3D窗口操作鼠标左键拖拽旋转视角滚轮缩放右键平移画面拓展可自行修改质量、重力、电荷、弹簧劲度系数等参数观察变化
RELATED

相关推荐

读了80篇文献依然找不到研究空白?教你利用GPT-5.6学会五种“挖缺思维”

读了80篇文献依然找不到研究空白?教你利用GPT-5.6学会五种“挖缺思维”

各位同仁好,我是七哥。一个在高校里从事人工智能 相关领域研究,钻研用大模型AI实操的学术人。可以和七哥交流学术写作或Gemini、GPT、Claude 等大模型 学术实操相关问题,多多交流,相互成就,共同进步。 ”别人都研究过了,我还能写点什么?“ 大多数学术同仁的这种创新…

📅 2026/10/3 15:48:57
2.2预定义门构建二选一选择器(VIVADO)

2.2预定义门构建二选一选择器(VIVADO)

结构级硬件描述module structual_design (output y_out,input sel_in,input a_in,input b_in );logic temp_1 ,tmp_2,tmp_3;and u1(tmp_2, sel_in,a_in);and u2(tmp_3, tmp_1, b_in);not u3(tmp_1,sel_in);or u4(y_out, tmp_2, tmp_3); endmoduleRTL ANALYSISSYNTHESIS

📅 2026/10/6 6:42:10
一步到位:用Windows系统安装工具脚本把老电脑平稳升级到Windows 11

一步到位:用Windows系统安装工具脚本把老电脑平稳升级到Windows 11

一步到位:用Windows系统安装工具脚本把老电脑平稳升级到Windows 11 【免费下载链接】MediaCreationTool.bat Universal MCT wrapper script for all Windows 10/11 versions from 1507 to 21H2! 项目地址: https://gitcode.com/gh_mirrors/me/MediaCreationTool.b…

📅 2026/10/14 19:02:22
MORE NEWS

更多资讯

📰

MDSM与SMcli实战:磁盘阵列管理、监控与巡检指南

简介:戴尔(Dell)Modular Disk Storage Manager Client(MDSM)存储管理软件的下载与安装指引文档,面向负责Dell存储系统日常运维的IT管理员、数据中心运维人员以及企业存储环境的技术支持工程师,用…

📰

SAP MDG主数据治理平台架构拆解:数据模型、流程与落地实战

简介:SAP MDG Overview 是一份面向SAP顾问、数据治理人员及企业架构师的入门级技术资料,围绕SAP Master Data Governance 9.0的中央治理能力展开。内容先点出主数据管理在销售效能、采购决策、上市周期与业务决策中的常见挑战,再介绍MDG以集中…

📰

智慧医疗App使用手册:从挂号到取药的全流程实操指南

1. 从一份使用手册说起:智慧医疗App到底在解决什么问题第一次接触智慧医疗类App的人,十有八九会把它当成"手机上的挂号工具"。这个理解不算错,但太窄了。我前后参与过三个不同规模的智慧医疗项目,从早期的预约挂号模块&…

📰

Base64魔改逆向实战:从标准编码表到Ezbase索引变换解密

想靠背原版Base64表就去通杀逆向题的人,遇到魔改基本会卡住。Base64魔改在逆向题目里非常常见,从入门赛到进阶赛都爱出,Ezbase就是一道非常适合练手的题。它把人人都知道的编码表换掉,再悄悄动一下索引值,不仔细看就是…

📰

OpenHarmony上React Native表单状态管理:用useReducer替代useState的完整实践

前阵子我接手了一个跑在 OpenHarmony 设备上的 React Native 项目,里面有个注册页面,字段不算特别多,也就用户名、密码、确认密码、手机号、验证码这么几个,但我一看代码头就大了:十几个 useState 散落在组件里&#x…

📰

从OpenClaw到Moltbook:让纸质书变身AI可调用的个人知识库

不知道大家有没有刷到过一条帖子,标题写得相当上头:"彻底疯狂了,OpenClaw 社区:Moltbook 硅基觉醒中..."。我习惯性地划过去,又忍不住划回来,仔细把标题拆了一遍。说实话,这种表达方式…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬