一个开源项目,提供计算镜面角度并生成3D打印模型的Python代码,把六边形镜阵排布成能将阳光反射到指定焦平面、形成任意图案的装置。
这个工具是什么
该项目由 Ben Bartlett 发起,最初用于设计一个在日落时把阳光反射到地面拼出求婚文字的镜阵,随后将生成3D打印模型的全部源代码公开。技术基础是几何光学中的反射定律:已知每面镜子的位置、对应目标像素位置以及太阳方向,通过求入射方向与目标方向夹角平分线得到镜面法向量,进而确定每面镜子的三维朝向。代码以 Jupyter Notebook 编写,依赖 numpy、matplotlib、numpy-stl、hexy,可选 vpython 做光线追踪可视化,输出可打印的 STL 模型。README 说明可较直接地修改代码,以把任意图像投影到任意焦平面。
核心能力
- 根据镜面位置、目标像素与太阳方向求解每面镜子的三维朝向
- 生成可导入3D打印机的STL镜阵模型,镜面按计算角度排布
- 提供光线追踪可视化选项,便于检查反射路径是否符合预期
- 代码结构便于替换目标图像与焦平面,适配不同投影需求
科研中的典型用法
- 设计户外光学装置:把指定文字或图案反射到地面、墙面等焦平面
- 作为几何光学与向量反射的教学示例,演示法向量求解与光线追迹
- 在3D打印与光学交叉项目中,快速生成带特定倾角的镜面阵列结构
快速上手
准备 Python 3 与 Jupyter,安装 numpy、matplotlib、numpy-stl、hexy,如需渲染光路再装 vpython。按 README 的 Supplies 清单备好 FDM 打印机、PLA、1 英寸六边形镜片和不固化膨胀的胶水。运行 Notebook 计算镜面角度并导出 STL,打印后把镜片粘到对应位置;胶层要薄,以免影响敏感的镜面角度。
生态与相近工具
同类工作多集中在计算光学与3D打印结构设计,如用于太阳能聚光的定日镜阵列或艺术投影装置。该项目侧重可打印模型生成与光路计算,不涉及硬件控制。若只需静态图案投影,可直接复用其代码;若需要动态或闭环控制,则需另行搭建跟踪与驱动部分。
项目信息
- 仓库:bencbartlett/3D-printed-mirror-array
- 星标:2,530 · 派生:147
- 主要语言:Jupyter Notebook
- 许可证:MIT
- 最近提交:2022-01-03
本文属于《学科研究工具知识库 · 物理学》第 7 篇(按 GitHub 星标排序)。收录标准:该学科公开可获取的开源研究工具,星标与活跃度为主要参考,不代表对其性能或适用性的背书;选型前请结合自身场景评估。

发表评论 取消回复