惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Martin Fowler
Martin Fowler
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
A
About on SuperTechFans
Apple Machine Learning Research
Apple Machine Learning Research
The Register - Security
The Register - Security
Vercel News
Vercel News
H
Hackread – Cybersecurity News, Data Breaches, AI and More
人人都是产品经理
人人都是产品经理
MyScale Blog
MyScale Blog
云风的 BLOG
云风的 BLOG
博客园_首页
U
Unit 42
T
Tailwind CSS Blog
G
GRAHAM CLULEY
F
Full Disclosure
V
Vulnerabilities – Threatpost
T
Tenable Blog
月光博客
月光博客
P
Privacy & Cybersecurity Law Blog
P
Privacy International News Feed
K
Kaspersky official blog
Scott Helme
Scott Helme
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
N
News and Events Feed by Topic
T
The Exploit Database - CXSecurity.com
N
News and Events Feed by Topic
有赞技术团队
有赞技术团队
Recent Commits to openclaw:main
Recent Commits to openclaw:main
L
LINUX DO - 最新话题
Recorded Future
Recorded Future
Application and Cybersecurity Blog
Application and Cybersecurity Blog
Help Net Security
Help Net Security
The GitHub Blog
The GitHub Blog
Cisco Talos Blog
Cisco Talos Blog
SecWiki News
SecWiki News
P
Proofpoint News Feed
Security Latest
Security Latest
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
罗磊的独立博客
S
Security Affairs
M
MIT News - Artificial intelligence
L
LINUX DO - 热门话题
美团技术团队
Simon Willison's Weblog
Simon Willison's Weblog
T
Threat Research - Cisco Blogs
Stack Overflow Blog
Stack Overflow Blog
Forbes - Security
Forbes - Security
Hugging Face - Blog
Hugging Face - Blog
博客园 - Franky
V
Visual Studio Blog

夜行人

回家路上 第一期的直播演示项目 震动检测器 正能量 在线参观CodeLab Neverland 发布 CodeLab Adapter 3.3.1 DynamicTable 之 纸糊方向盘 CodeLab DynamicTable: 一个可实施的技术方案 CodeLab Insight 发布 Alpha 版 情人节 Home Assistant 周报 && IoT 周报 (02) Joplin: 关注隐私的 Evernote 开源替代软件 浏览器的未来与 Web 传感器 Home Assistant 周报 && IoT 周报 (01) 百宝箱(01) 论自由 介绍 WebThings Home Assistant 周报 && iot 周报 (00) 百宝箱(00) 毛姆读书心得 传世之作 周末徒步 CodeLab Adapter ❤️ Jupyter/Python 航班 躲雨 夏令营途中 [译]思想--作为一种技术 The future of coding 美国之行 三门问题的程序模拟 从Python转向Pharo https://blog.just4fun.site/post/iot/iot-open-source-projects/ Python异步编程笔记 https://blog.just4fun.site/post/iot/iot-open-source-hardware-community/ 万物积木化开发者社区 CodeLab ❤️ Blender Scratch3技术分析之云变量 API(第7篇) [译]对管道(Pipes)的偏爱 [译]提出正确的问题比得到正确答案更重要 蓝牙设备与Scratch3.0 创建你的第一个Scratch3.0 Extension Scratch3技术分析之项目内部数据(第6篇) Scratch3技术分析之社区 API(第5篇) Scratch3技术分析之User API(第4篇) Scratch3技术分析之项目主页API(第3篇) Scratch3技术分析之静态资源API(第2篇) Scratch3.0、micro:bit与Windows7 https://blog.just4fun.site/post/iot/zerynth-vs-micropython/ 核聚变、方所与半宅空间 可视化编程为何是个糟糕的主意 codelab.club周末聚会 关于codelab.club '下一件大事'是一个房间 Hungry Robot - Eat everything 编程作为一种思考方式 今日简史 史蒂夫·乔布斯传 罗素自选文集 https://blog.just4fun.site/post/edx/tianjin-scratch-ai/ https://blog.just4fun.site/post/edx/richie-cms-openedx/ 徒步武功山 WebUSB与micro:bit 积木化编程与3D场景 夜宿武功山顶 scratch3-adapter接入优必选Alpha系列机器人 https://blog.just4fun.site/post/edx/video-migration-note/ scratch3-adapter重构笔记 https://blog.just4fun.site/post/edx/edx-community-members/ 两种硬件编程风格的比较 使用micro:bit自制PPT翻页笔 柏拉图对话集 scratch3.0 + micro:bit 七月电影放映计划 非营利组织的管理 Screenly--用树莓派让任何屏幕变为可编程的数字标牌 以最佳实践开始你的Django项目 micro:bit与事件驱动 为Scratch3.0设计的插件系统(上篇) OCR应用一例 近两年读过的一些好书 blockly开发之使用python驱动浏览器中的turtle(2) 牛顿新传 文学理论入门 逻辑的引擎 人生的意义 blockly开发之生成并运行js代码(1) blockly开发之hello world(0) micro:bit使用笔记 神器之Termux https://blog.just4fun.site/post/iot/micropython-notes/ Cozmo what is this Scratch的前世今生 下段旅程 我行在远方 爆裂 途中杂记 https://blog.just4fun.site/post/edx/open-edx-startup/ cozmo系列之入门 - 有性格且可编程的机器人 PaperWeekly开发笔记 创业二三事
使用 Squeak(Etoys) 模拟日食月食
种瓜 · 2024-04-10 · via 夜行人

文章目录

太阳是石而月亮是土 – 阿那克萨哥拉(古希腊 公元前500年)

模型是揭示真相的谎言

前两天跟小蘑菇分享 Squeak 学习笔记, 里边提到:

Alan Kay 说计算机可以是一切的媒介, 而媒介的作用是将思想具体化。

Alan Kay 在《理解媒介》的影响下说出这样的话, 我们对这种洞察充满敬意。

午饭时间聊起美国刚发生的日食, 聊到日食月食的成因。她一直听我称赞 Squeak 在呈现想法上的潜力, 于是怂恿我在不使用代码的情况下, 用 Squeak 模拟日食月食, 并要求能让没有编程知识的人弄懂系统的运作。

我跃跃欲试, 一边聊天一边使用 Morphic 为我们的想法"塑形", 她一边看我操作, 一边提出新的想法, 并立刻看到新的想法"运行起来"。震惊于Squeak在塑造想法上的能力, 喃喃道她也要用 Squeak。 当我最终让日地系统和地月系统都跑起来时, 她又提议说能不能在日食/月食发生时发出提醒, 记录下来, 提议说可以做一个扫描器一样的东西。于是我从 objects 仓库里拿出一个箭头样子的直线(没有任何功能), 做了雷达一样的扫描器, 不断扫描这三个天体何时连成一条线。

最终有了这样一个简单的模拟:

它完全是在聊天中完成, 一切都是可见和可理解的,没有写一行文本代码。

后记

我尤其喜欢这里的扫描器。

为了知道日食月食何时发生,我最初想到的是三点共线定理, 要实现它, 很难不使用代码。

她想到是不是可以让一根线扫来扫去, 如果同时扫到所有星体, 说明此刻三点共线。

这可能也是许多小朋友会想到的! 这个想法似乎由视觉界面启发, 正展示了视觉媒介的力量!

Alan Kay 在Doing with Images Makes Symbols 演讲里提到让三个年龄段的孩子画圆的故事, 与我们扫描器这个例子有异曲同工之处, 使用符号思考有时候相当脆弱(诸如这里的三点共线定理和视频提到的圆的解析式)。

FAQ

日地系统时如何构建的?

日地系统的构建比较简单:

  1. 太阳不动
  2. 地球绕着太阳转

我们可以完全在视觉环境中做到这点(无需写代码)

首先让地球成为太阳的 submorph:

这样地球就会成为太阳系的一部分, 挪动太阳,地球也会跟着动:

然后将地球拖到合适的轨道上:

  • shift + option + click 选中作为 submorph 的地球
  • 地球会被限制在太阳(椭圆)的 extent 里, 如果轨道比较远, 可以使用 forward 移动地球到目标位置

将地球的旋转中心移到太阳中心位置(shift+click):

这样一来, 地球转动(turn)的时候,就会以太阳为中心了

地月系统是如何构建的?

要构建地月系统, 我们需要做到以下两点

  1. 月球绕着地球转(和上边的日地系统相同操作)
  2. 月球跟着地球一起绕太阳转

要如何做到第 2 条呢?

什么都不用做! 当我们让月球成为地球的 submorph , “地球围绕太阳转” 的运动会叠加到月球上!

submorph 非常强大, 很适合用于构建复合系统。 Snap! 也支持 submorph, Scratch 不支持。

如何在 Snap! 中构建它

前边说到

submorph 非常强大, 很适合用于构建复合系统。 Snap! 也支持 submorph, Scratch 不支持。

我们要如何在 Snap! 里构建地月系统这样的复合对象呢?

参考 示例项目

演示视频:

扫码器的工作留作课后练习 :)