《 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窗口操作鼠标左键拖拽旋转视角滚轮缩放右键平移画面拓展可自行修改质量、重力、电荷、弹簧劲度系数等参数观察变化

相关新闻

最新新闻

SerenityOS 命令行选项解析指南:getopt 与 getopt_long 用法、返回值与底层实现

SerenityOS 命令行选项解析指南:getopt 与 getopt_long 用法、返回值与底层实现

SerenityOS 命令行选项解析指南:getopt 与 getopt_long 用法、返回值与底层实现 【免费下载链接】serenity The Serenity Operating System 🐞 项目地址: https://gitcode.com/GitHub_Trending/se/serenity 导读 本文以 getopt(3) 手册 为核心&a…

2026/10/1 19:32:24
轻量服务器还是ECS?大促云服务器选购与避坑实战指南

轻量服务器还是ECS?大促云服务器选购与避坑实战指南

每年大促节点,群里永远有人在问同一个问题:“38元的轻量服务器到底怎么抢?为什么我每次点进去都是已售罄?68元直购和99元的ECS我到底选哪个?”作为一个常年帮团队和自己采购云服务器的老用户,我太清楚这种纠…

2026/9/30 21:32:07
为 AI 代理的 Review 动作编写 Cedar 审批门控策略:review-agent-governance 策略编写实战指南

为 AI 代理的 Review 动作编写 Cedar 审批门控策略:review-agent-governance 策略编写实战指南

为 AI 代理的 Review 动作编写 Cedar 审批门控策略:review-agent-governance 策略编写实战指南 【免费下载链接】agents Multi-harness agentic plugin marketplace for Claude Code, Codex, Cursor, OpenCode, GitHub Copilot, and Google Antigravity 项目地址:…

2026/10/2 15:29:32
PaddleOCR 手写数学公式识别算法 CAN 实战指南:Counting-Aware Network 训练、评估与推理部署

PaddleOCR 手写数学公式识别算法 CAN 实战指南:Counting-Aware Network 训练、评估与推理部署

PaddleOCR 手写数学公式识别算法 CAN 实战指南:Counting-Aware Network 训练、评估与推理部署 【免费下载链接】PaddleOCR Turn any PDF or image document into structured data for your AI. A powerful, lightweight OCR toolkit that bridges the gap between i…

2026/10/3 7:41:27
Spring源码解析:构造器注入的类型转换与候选匹配机制

Spring源码解析:构造器注入的类型转换与候选匹配机制

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/1 19:32:35
openai-agents-python 多模型接入指南:深入解析 AnyLLMModel 适配层与 any-llm 路由

openai-agents-python 多模型接入指南:深入解析 AnyLLMModel 适配层与 any-llm 路由

openai-agents-python 多模型接入指南:深入解析 AnyLLMModel 适配层与 any-llm 路由 【免费下载链接】openai-agents-python A lightweight, powerful framework for multi-agent workflows 项目地址: https://gitcode.com/GitHub_Trending/op/openai-agents-pyth…

2026/9/30 21:32:11

日新闻

周新闻

月新闻