豆包工作太好用了,造出来的重力实验室,颠覆了一整代人的物理课。
大家好,我是小林。
不知道你们高中上物理课的时候有没有想过:
如果把地球的重力改成月球的 1/6,或者放到火星上,用同样的速度和角度扔出一颗球,它的飞行轨迹会变成什么样?要是再加上空气阻力,落点又会缩短多少?
以前还得靠自己在作业纸上用尺子测量,大量计算才能画出轨迹,还不一定直观,现在有了AI,显然不需要这种“古法方式”了。

突然想对现在的小孩说:以前我们哪有这条件啊!
那么话不多说,这次我想用豆包工作做一个虚拟物理实验室——Gravity Lab|重力实验室。
把这些抽象的物理规律变成网页上可以直接拖动参数、实时观察轨迹、还能自动核对物理公式的交互工具。
之所以直接用豆包工作来做,是因为一个工具就能把写代码、跑程序包括测试页面还有整理报告全包揽下来。
它的任务可以在本地电脑和云电脑之间随时切换,支持多端同步,挂在后台小窗干活时也不会占用电脑资源,中途有新想法还能随时打断它补充需求。
整个实验室从零搭建到最终跑通,我基本上没有怎么动手调整,全都是豆包工作自己操控内置浏览器把功能调好、把遇到的问题修复好的。
下达需求后,豆包自己开浏览器把首版调通了新建任务后,我给豆包工作发了第一轮开发指令。

为了看看它纯靠写代码和调试能做到什么程度,我要求它不调用任何现成的第三方物理仿真库,直接用前端代码从头把物理计算和深色实验室界面写出来。
页面左边放参数滑块,中间是抛体动画画布,右边用来显示实时飞行数据。

发完指令后,豆包工作很快建好项目目录、装好依赖包,写完了底层的物理计算和画布绘制代码。
更有意思的是接下来的验证环节——它自己启动了本地预览服务器,直接操控内置浏览器打开网页,替我把所有按钮都测了一遍。

从它发回来的汇报里可以看到,它自己点遍了播放、暂停、重新发射、1/4/8倍速切换,确认滑块和数字输入框能同步联动,甚至还通过检查画面像素,确认点击清空轨迹后画布上的曲线确实被擦干净了。
测完之后,它主动截取了 4 张不同状态的浏览器画面向我交差。
自己跑测试脚本,遇到环境故障还会主动绕过基础版跑通后,我接着把第二轮和第三轮的需求发了过去:让它加上地球、月球、火星三星球同屏对比、历史轨迹叠加、右侧科学验证面板,以及一个跨越 100 米的小实验。
功能变多之后,很多细节需要反复核对。
不过这一阶段我依然没怎么插手,全是豆包工作自己在后台写测试脚本或者自己开浏览器核对画面细节。
翻看它的执行记录,能明显感觉到它干活挺踏实的:
一方面是自己写测试脚本验算数据。
为了保证每次改代码不会把物理公式算错,它自己写了个验证脚本,一口气跑了 74 项物理数值测试和 11 项表格导出测试。

另一方面是遇到电脑环境报错不瞒报,想办法解决。
在第一轮打包代码时,因为我本地电脑系统的限制,打包程序在最后一步退出了,同时命令行工具出现了超时。
豆包工作没有假装打包完成,而是在报告里如实说明了哪些文件已经生成、哪一步被系统中断了。
到了第二轮,它再次遇到这个系统报错时,检查发现网页核心代码其实已经完整生成了,就直接动手把缺少的配置文件和文件夹结构手动补齐,并且自己加载运行验证了一遍,把电脑环境带来的小故障很妥帖地绕了过去。

到第三轮结束时,它已经在内置浏览器里把 10 个核心场景比如刷新网页后历史记录能不能自动恢复等全测了一遍,顺手修掉了网页小图标的报错,最后把 148 个项目源码文件和测试报告打包成一个压缩包交付给我。


点开豆包工作做好的实验室网页,功能已经相当齐全了。
不过在试玩的时候我注意到一个视觉上的小问题:因为月球上的射程有 246 米远,画布自动缩小比例尺把月球轨迹装下后,地球那条只有 40 米的轨迹在画面左下角就显得有点小。
我截了张图发给豆包工作,说了句:
这个中间的演示部分的轨迹有点小,看看能按住 shift 进行放大缩小坐标系来达到让轨迹看上去大小合适。

没想到它考虑得比我周全得多,很快就把更新后的页面推了过来:
按住 Shift + 鼠标滚轮,就能以鼠标指着的地方为中心,在35%–800%之间自由放大缩小;而且放大之后,背景里的网格和米数刻度会自动重新拉开间距,不会密密麻麻挤成一团。
放大后按住鼠标就能拖动画面看不同区域,双击画布或者点右下角的适应按钮,又能一键回到全景视角。
终于到了演示环节!画面缩放顺手之后,来看看这个重力实验室跑起来的实际效果。
空气阻力是怎么改变飞行轨迹的?在单次实验模式下,先选定地球环境,保持默认初速度和发射角度,先不开空气阻力。
点击发射,青绿色的小球沿着一条左右完全对称的抛物线飞出。
接着打开左侧的空气阻力开关。豆包工作在这里用的是更贴近真实物理环境的阻力计算方式——速度越快,受到的空气阻力就成倍增加,也就是阻力与速度的平方成正比。我把阻力系数设为0.010再次发射:
画布上会自动留下刚才那条无阻力的虚线做对比:加上空气阻力后,小球最高只能飞到 8.70m,而且整条轨迹变成了上去的时候平缓、掉下来的时候更陡的不对称形状。如果切到月球环境做同样的对比,原本在真空里能飞将近250m的小球,加上同样的阻力后只能飞出不到100m就落地了,高速长距离飞行受阻力的影响一眼就能看明白。
这也太直观了!
地球、月球、火星三星球同屏对比切到三星球对比模式,用同样的初速度和角度一键发射,就能在同一块画布上看清三颗星球的重力差距:
画布上三条不同颜色的轨迹同时升空:代表地球的青绿色小球引力最大,飞出一条低矮的弧线早早落地;代表火星的珊瑚橙小球飞在中间;而代表月球的紫色小球高高跃起,当地球和火星的小球都已经停在地上时,月球小球还在半空中继续往前飞。
把初速度拉得更高、角度拉得更低,虽然飞行轨迹变得很低趴,但是火星和月球的小球水平飞出距离一下子拉得很远:
我又把初速度和角度都拉得更高,轨迹们像小山包一样凸出来:
在右侧的自动实验结论卡片会立刻算出倍数,显示实验数据,不管我们想研究哪个变量,都可以很直观地获得答案,感受变量对实验结果带来的影响,这太好用了。
跨越 100 米挑战模式切换到第三个模式100米挑战后,画布会在水平距离 100m 的位置画出一道琥珀色的目标线,来看看三颗星球上分别要用多大的力气才能把球扔过 100 米。
在默认的速度和角度下,月球和火星的小球都能轻松越线,唯独地球的小球还差了 59.23m,而右侧面板也显示出 2/3 星球达标。
而把初速度往上推到 30.5m/s 以后,地球的轨迹也跨过了那道琥珀色目标线,顺利拿下 3/3 星球达标。把初速度拉得很低的时候,三个星球的小球就都过不去了,玩得我不亦乐乎哈哈
模拟数据到底准不准?作为一个物理实验室,除了动画直观好看,算出来的数字到底准不准?
右边面板里的科学验证模块给出了直接对比。
在没有空气阻力时,物理课本上的标准公式可以算出最精准的飞行时间、最大高度和水平射程。
如果用普通的网页动画去硬算,每秒刷新几十次画面,一步步累加下来往往会产生肉眼可见的偏差。
但看豆包工作做出来的科学验证面板,不管是地球、月球还是火星,在各项关键指标上,电脑模拟出来的数值和理论公式算出的基准几乎完全重合,每一项后面都稳稳亮着绿色的打勾和通过。

它之所以能算得这么准,是因为在代码里用上了两个很讲究的计算细节:
一个是把时间切得极细的高精度推算法。
它没有按粗糙的画面帧去跳步,而是把每一秒钟切成了 500 个极小的时间步长,每步只有0.002s,而且在迈出每一小步的时候,都会先后试算起点、两个中间点和终点的受力方向,取一个最准确的平均趋势往前推,这样飞得再远也不会算偏。
另一个是落地瞬间的精准回推。
小球落地的最后一瞬间,往往刚好卡在地面上方一点点和穿过地面一点点的两个微小步长之间。
豆包工作没有随便取其中一个点当落点,而是根据这两点离地面的高度比例,精准倒推出小球刚好碰到地面那一刻的时间和距离,把最后一丝误差也抹平了。
做完实验后,点一下底部的导出CSV按钮,还能直接把实验参数和历史记录存成表格文件,方便随时拿去做数据整理。

写在最后回头看这次用豆包工作从零打造这个虚拟物理实验室的过程,最大的感受就是省心。
从最开始提出想看看不同星球上的抛球轨迹,到最后拿到一个零插件、纯代码交付、支持高精度科学验证且界面清爽的完整网页应用,我全程几乎不干预。
我既没有手动去配开发环境,也没有自己动手改过一行代码,全是豆包工作自己独立写完代码并且自己操控内置浏览器把各个角落测好修好后交到我手上的。
平时不管是处理日常的表格数据、写方案做 PPT,还是想把脑子里的某个创意快速变成能交互的小工具,都可以试试把这些繁琐耗时的活儿丢给豆包工作,让自己只负责想出创意和验收。
而且现在网页搜索「豆包工作」下载电脑端,新用户还可以领 30 天免费体验套餐,额度还不少。
老用户每日签到领额度可以攒着,等做任务的时候用,签到 30 天得到的**额度更高。
