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

推荐订阅源

量子位
C
CXSECURITY Database RSS Feed - CXSecurity.com
S
Schneier on Security
博客园 - 叶小钗
博客园 - 三生石上(FineUI控件)
C
Cybersecurity and Infrastructure Security Agency CISA
Engineering at Meta
Engineering at Meta
Google DeepMind News
Google DeepMind News
酷 壳 – CoolShell
酷 壳 – CoolShell
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
H
Hackread – Cybersecurity News, Data Breaches, AI and More
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
博客园_首页
T
Threat Research - Cisco Blogs
C
Cisco Blogs
Recent Announcements
Recent Announcements
S
Securelist
N
Netflix TechBlog - Medium
The Register - Security
The Register - Security
P
Privacy & Cybersecurity Law Blog
宝玉的分享
宝玉的分享
D
Darknet – Hacking Tools, Hacker News & Cyber Security
L
LINUX DO - 热门话题
T
Tor Project blog
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
月光博客
月光博客
AWS News Blog
AWS News Blog
P
Proofpoint News Feed
博客园 - 司徒正美
L
LINUX DO - 最新话题
Stack Overflow Blog
Stack Overflow Blog
博客园 - 聂微东
H
Help Net Security
Spread Privacy
Spread Privacy
PCI Perspectives
PCI Perspectives
Project Zero
Project Zero
I
Intezer
T
The Blog of Author Tim Ferriss
有赞技术团队
有赞技术团队
The Last Watchdog
The Last Watchdog
C
Check Point Blog
Blog — PlanetScale
Blog — PlanetScale
B
Blog RSS Feed
MyScale Blog
MyScale Blog
V
Vulnerabilities – Threatpost
Recorded Future
Recorded Future
T
Tenable Blog
Jina AI
Jina AI
D
DataBreaches.Net
阮一峰的网络日志
阮一峰的网络日志

夜行人

回家路上 第一期的直播演示项目 震动检测器 正能量 在线参观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! 里构建地月系统这样的复合对象呢?

参考 示例项目

演示视频:

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