matlab模拟光的反射折射

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

(3).我们首先假设光从空气进入水中,此时n=1.5。用一次函数图像来表示光的传播路线,通过改变光的入射点来改变光的入射角和入射方向,并根据反射光、折射光与入射光的斜率关系来控制反射角、折射角与入射角关系,设计程序如下:

function ZHEFAN; set(gcf,'doublebuffer','on'); axis([-2,2,-1,1]);hold on; rectangle('Position',[-2,-1,4,1],...

'FaceColor',[0.1,0.6,0.6]);

text(1.4,0.4,'air','color','r','fontsize',14) text(1.4,-0.4,'water','color','r','fontsize',14) n=1.5;t=0; text(0.7,0.6,['n= ',num2str(n)],'fontsize',14);

HL=rectangle('Position',[-0.02,0.4,0.04,0.2],...

'FaceColor',[ 0.3,0.8,0.4 ]);

Hi=plot([0,0],[0,0.4],'b');

Ho=plot([0,0],[0,-1]);

Hr=plot([0,0],[0,1],'r');

xlabel('请按空格停止’,…'fontsize',14,'color',T); k=1;dt=0.1;

while k

pause(0.5);

s=get(gcf,'currentkey');

if strcmp(s,'space');

clc;k=0;

end

if abs(t)>0.3*pi

dt=-dt;

end

t=t+dt;

A=t;

Xi=0.4*tan(A);

set(Hi,'xdata',[Xi,0]);

Ao=asin(sin(A)/n);

Xo=Xi+tan(Ao); set(Ho,'xdata',[Xi,Xo]);

Xr=Xi+tan(A);

set(Hr,'xdata',[Xi,Xr]);

set(HL,'Facecolor',rand(1,3)) end figure(gcf);

% 光的折射光的反射

%设置图片属性,双缓存防止图闪烁

%设置坐标轴范围( x 轴-2 到2,y 轴-1 到 1 ) %给图形下半部分设置成水的颜色

%注明空气和水,并且设置字体

%设置折射率

%在图形上标明折射率

%在图形上画出光源

%设置入射光

%设置折射光

%设置反射光

%设置结束提示%初始化k 方便循环,设置入射光变化量%循环体

% 设置每次图形变换间隔为0.5 秒

%输入空格终止演示,是图形停止

%设置入射光变化的范围

%入射光发生改变

%绘制最后折射光

%绘制最后反射光

%显示图形窗口

运行程序,得到运动的图形,即入射角改变,折射光和反射光的变化。得到截图如下:

相关文档
最新文档