Comfort Atlas:用cobe做3D地球
我偏要在前端挑战赛里做个3D地球。Comfort Atlas就是把100个国家的安慰食物怼到地球上,点一下就给你看Moussaka、Jollof Rice、Pho。本来用SVG世界地图都搞定了,可那玩意儿flat得像张纸,所以决定整点没碰过的——用cobe。
下一篇
三大唱片公司要封杀AI垃圾歌 →
先说结论:cobe的文档是上个世纪写的。照着README写,渲染出来只有一堆浮点(笑死)。后来拽着Claude Code帮我啃它的源码,才发现createGlobe()只画一帧同步画面,剩下的得自己用requestAnimationFrame驱动.update():
const globe = createGlobe(canvas, options);
function tick() {
globe.update();
requestAnimationFrame(tick);
}
requestAnimationFrame(tick);文档没写,但你不写这段,地球永远不转。这就是AI编程工具的日常:文档烂,就让AI当翻译机读源码。
这项目我比较得意的是两个没有任何库支持的活:一个是tooltip要跟着3D标记点走,另一个是访问过的国家之间画一条淡出的大圆航线。两个都得把压缩过的投影数学手动翻译成能读的代码。Claude Code在这里帮了大忙——给我逐行解释球面到平面的投影矩阵,然后我自己重新实现。搞明白那一刻,比吃到意大利面还爽。
现在这版本还有个feature dish of the day,每天全球访客看到同一道菜,确定性算法。游客还能输入自己的comfort dish,生成一张护照印章风格的卡片,三种配色可下载。
要说接下来,暗黑模式肯定要加。但真正想说的是:canvas里的a11y比DOM难太多,检查一遍根本不够。我做完地图又测了好几次键盘导航,还是会有漏。
项目MIT开源,部署在Netlify。要不要地址自己搜comfort-atlas就行。对了,我是希腊人,但我不喜欢Moussaka,我的comfort food是披萨。😄
