【HTML 凸透镜像屏中呈,虚实焦点一指见】——筑梦教育网页新视界
🔍 凸透镜成像原理模拟器技术解析

一、💡 设计理念与架构
这个凸透镜成像原理模拟器通过交互式可视化和物理引擎的结合,实现了对光学原理的直观展示:
├── 交互控制层
│ ├── 焦距调节滑块
│ ├── 物距调节滑块
│ ├── 预设位置按钮
│ └── 显示选项控制
├── 物理引擎层
│ ├── 透镜公式计算
│ ├── 成像特性分析
│ └── 光路追踪算法
├── 可视化层
│ ├── Canvas光路绘制
│ ├── 实时数据展示
│ └── 成像特性标注
└── 教学层
├── 光学原理讲解
├── 公式推导过程
└── 应用实例展示
二、⚙️ 物理引擎实现
2.1 透镜公式计算
function calculateImageDistance(f, u) {
// 透镜公式: 1/f = 1/u + 1/v
if (u === f) return Infinity; // 物距等于焦距时不成像
return 1 / (1/f - 1/u);
}
2.2 成像特性分析
function analyzeImageCharacteristics(u, f, v) {
if (u < f) {
return {
type: "虚像",
orientation: "正立",
size: Math.abs(v/u) > 1 ? "放大" : "缩小",
position: "同侧"
};
} else if (u === f) {
return {
type: "不成像",
orientation: "-",
size: "-",
position: "-"
};
} else {
return {
type: "实像",
orientation: "倒立",
size: Math.abs(v/u) > 1 ? "放大" : "缩小",
position: "异侧"
};
}
}
2.3 放大率计算
m=∣vu∣ m = \left| \frac{v}{u} \right| m=uv
三、🎨 可视化系统
3.1 Canvas光路绘制
function drawLensSystem() {
// 清空画布
ctx.clearRect(0, 0, width, height);
// 绘制主光轴
ctx.beginPath();
ctx.moveTo(0, originY);
ctx.lineTo(width, originY);
ctx.strokeStyle = '#aaa';
ctx.stroke();
// 绘制凸透镜
ctx.beginPath();
ctx.moveTo(originX, originY - lensHeight/2);
// 贝塞尔曲线绘制透镜形状
ctx.bezierCurveTo(/*...*/);
ctx.strokeStyle = '#3B82F6';
ctx.stroke();
// 绘制物体
ctx.beginPath();
ctx.moveTo(objectX, originY);
ctx.lineTo(objectX, objectTopY);
// ...绘制箭头形状
ctx.fillStyle = '#333';
ctx.fill();
// 绘制光线
if (showRays) {
// 1. 平行光
drawParallelRay();
// 2. 过光心光线
drawCentralRay();
// 3. 过焦点光线
drawFocalRay();
}
// 绘制像
if (imageExists) {
if (isVirtualImage) {
// 虚线绘制虚像
ctx.setLineDash([5, 3]);
drawImage();
ctx.setLineDash([]);
} else {
// 实线绘制实像
drawImage();
}
}
}
3.2 动态标注系统
function drawLabels() {
// 标记光心
ctx.fillText('O', originX, originY - 20);
// 标记焦点
ctx.fillText('F', originX - f * scale, originY - 20);
ctx.fillText("F'", originX + f * scale, originY - 20);
// 标记物距u
drawDistanceMarker(originX, objectX, originY + 30, 'u');
// 标记像距v
if (v !== Infinity) {
drawDistanceMarker(originX, imageX, originY + 90, 'v');
}
}
四、📊 成像规律系统
4.1 物距-成像关系表
| 物距范围 | 像的性质 | 应用实例 |
|---|---|---|
| u>2fu > 2fu>2f | 倒立、缩小、实像 | 照相机 |
| u=2fu = 2fu=2f | 倒立、等大、实像 | 测焦距 |
| f<u<2ff < u < 2ff<u<2f | 倒立、放大、实像 | 投影仪 |
| u=fu = fu=f | 不成像 | 平行光源 |
| u<fu < fu<f | 正立、放大、虚像 | 放大镜 |
4.2 实时数据显示
<div class="grid grid-cols-1 md:grid-cols-3 gap-4">
<div class="bg-blue-50 p-3 rounded-lg">
<div class="text-xs text-blue-700">物距</div>
<div class="flex items-center">
<i class="fa fa-arrows-h text-primary mr-2"></i>
<span id="uValue">u = 30 cm</span>
</div>
</div>
<div class="bg-green-50 p-3 rounded-lg">
<div class="text-xs text-green-700">像距</div>
<div class="flex items-center">
<i class="fa fa-arrows-h text-secondary mr-2"></i>
<span id="vValue">v = 15 cm</span>
</div>
</div>
<div class="bg-orange-50 p-3 rounded-lg">
<div class="text-xs text-orange-700">焦距</div>
<div class="flex items-center">
<i class="fa fa-dot-circle-o text-accent mr-2"></i>
<span id="fValue">f = 10 cm</span>
</div>
</div>
</div>
五、🧮 公式推导系统
5.1 透镜公式
1f=1u+1v \frac{1}{f} = \frac{1}{u} + \frac{1}{v} f1=u1+v1
5.2 推导过程
-
相似三角形分析
物体高度hhh与像高度h′h'h′的比例关系:
h′h=vu \frac{h'}{h} = \frac{v}{u} hh′=uv -
焦距关系
利用另一组相似三角形:
hu−f=h′f \frac{h}{u-f} = \frac{h'}{f} u−fh=fh′ -
联立方程
将两个方程联立并简化:
1f=1u+1v \frac{1}{f} = \frac{1}{u} + \frac{1}{v} f1=u1+v1
5.3 放大率公式
m=∣vu∣ m = \left| \frac{v}{u} \right| m=uv
六、🔧 交互控制系统
6.1 参数调节
<div class="space-y-6">
<div>
<label for="focalLength">焦距 (f)</label>
<div class="flex items-center space-x-2">
<input type="range" id="focalLength" min="5" max="20" value="10">
<span id="focalLengthValue">10 cm</span>
</div>
</div>
<div>
<label for="objectDistance">物距 (u)</label>
<div class="flex items-center space-x-2">
<input type="range" id="objectDistance" min="1" max="50" value="30">
<span id="objectDistanceValue">30 cm</span>
</div>
</div>
</div>
6.2 预设位置
<div class="grid grid-cols-3 gap-2">
<button class="preset-btn" data-u="25">u > 2f</button>
<button class="preset-btn" data-u="15">f < u < 2f</button>
<button class="preset-btn" data-u="5">u < f</button>
</div>
七、📚 教学系统
7.1 应用实例展示
<div class="grid grid-cols-1 md:grid-cols-3 gap-6">
<div class="bg-white rounded-xl shadow-lg">
<div class="p-5">
<h4>照相机</h4>
<p>物距(u) > 2f,形成倒立缩小的实像</p>
</div>
</div>
<div class="bg-white rounded-xl shadow-lg">
<div class="p-5">
<h4>投影仪</h4>
<p>f < 物距(u) < 2f,形成倒立放大的实像</p>
</div>
</div>
<div class="bg-white rounded-xl shadow-lg">
<div class="p-5">
<h4>放大镜</h4>
<p>物距(u) < f,形成正立放大的虚像</p>
</div>
</div>
</div>
八、🚀 技术亮点
- 物理引擎精确:基于透镜公式的实时计算
- 光路可视化:Canvas动态绘制三条关键光线
- 交互式学习:参数实时调整与即时反馈
- 多场景预设:一键切换典型成像位置
- 教学一体化:理论讲解与实验模拟结合
九、🎓 教育价值
这个模拟器通过以下方式提升学习效果:
- 抽象概念具象化:将光学原理转化为可视光路
- 参数关系直观化:实时展示uuu、vvv、fff的定量关系
- 探索式学习:学生可自主调整参数观察变化
- 错误尝试安全区:无风险地探索各种参数组合
- 理论实践结合:公式推导与实际应用无缝衔接
十、💎 总结
这个凸透镜成像原理模拟器成功实现了:
- 物理准确性:严格遵循光学原理
- 交互友好性:直观的参数控制
- 教学系统性:从原理到应用的完整知识链
- 视觉表现力:清晰的光路展示
通过将光学原理、交互设计和教学法完美融合,该工具为物理教育提供了强大的可视化教学支持,使学生能够直观理解凸透镜成像的复杂规律。
十一、成果展示
11.1 交互式光路模拟器

11.2 凸透镜成像光学原理

11.3 透镜公式推导

11.4 凸透镜的实际应用

11.5 底部属性栏


浙公网安备 33010602011771号